【发布时间】:2012-03-22 19:39:59
【问题描述】:
我目前正在自己处理 HtDP。
在第 5 章“符号信息”中进行了介绍。文中的例子是:
(define (reply s)
(cond
[(symbol=? s 'GoodMorning) 'Hi]
[(symbol=? s 'HowAreYou?) 'Fine]
[(symbol=? s 'GoodAfternoon) 'INeedANap]
[(symbol=? s 'GoodEvening) 'BoyAmITired]))
这一切都清楚了。然而,第二个练习要求:
练习 5.1.2。开发功能check-guess。它消耗两个数字,猜测和目标。根据猜测与目标的关系,该函数会产生以下三个答案之一:'TooSmall、'Perfect 或'TooLarge。
坦率地说,我真的不明白什么时候或为什么“symbol=?”进来这里。我的解决方案只使用“cond”。 [编辑:由于建议删除了代码,因为它是教科书练习的解决方案。]
根据文字,“symbol=?”使用两个符号并返回真或假,具体取决于它们是否相同。
我担心我现在已经深入到 Dunning-Kruger 效应的领域,但我真的看不到使用“symbol=?”来实现这段代码的方法。 “cond”在第 4 章中有介绍,这就是我现在感到困惑的原因。
非常感谢任何帮助。
如果你想看HtDP的章节,那么请到这里: http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-8.html#node_sec_5.1
很遗憾,这些解决方案只能通过密码访问。
【问题讨论】:
-
解决办法是不要再猜测自己了!您答案的代码定义部分很好。但是,您缺少合同和目的:)。仅仅因为它在第 3 章中介绍过,并不意味着您在第 5 章中停止使用它。类似地,虽然比较是在第 4 章中,但让程序使用比较来返回符号是新的。现在,我个人认为您应该删除此问题,因为您为实际分配此作业的学生发布了太多答案。
-
ccoakley,非常感谢您的快速回复!那么“符号”是作为响应给出的文本吗?但是,“符号=?”在哪里?参加进来?由于第 5 章中的整套练习被称为“带符号的手指练习”,我只是不太明白这些练习如何融入本章。我将编辑部分问题。
-
'TooSmall中的前导 tic 使它成为一个符号(没有它,scheme 将查找具有该名称的变量)。symbol=?在该练习中没有发挥作用,尽管您应该想象一个使用您的程序然后使用symbol=?生成下一个猜测的游戏......您在下一个练习中扮演那个角色。另外,很高兴您首先发布了您的代码(这样我们就可以确认您的定义是正确的),但感谢您将其删除。 -
再次感谢!我刚刚完成了第 5 章,现在已经清理了很多内容,这也归功于您的有益阐述。
标签: scheme