Scheme HtDP/Chpt。5:我如何使用;symbol=?“;?(计划)

Scheme HtDP/Chpt。5:我如何使用;symbol=?“;?(计划),scheme,Scheme,我目前正独自通过HtDP工作 第5章介绍了“符号信息”。文本中的示例是: (define (reply s) (cond [(symbol=? s 'GoodMorning) 'Hi] [(symbol=? s 'HowAreYou?) 'Fine] [(symbol=? s 'GoodAfternoon) 'INeedANap] [(symbol=? s 'GoodEvening) 'BoyAmITired])) 没问题。然而,第二个练习要求: 练习5.1

我目前正独自通过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。开发函数检查猜测。它消耗两个数字,猜测和目标。根据猜测与目标的关系,该函数生成以下三个答案之一:“TooSmall”、“Perfect”或“TooLarge”

坦白地说,我真的不明白“symbol=?”何时或为什么会出现在这里。我的解决方案只使用“cond”。[编辑:由于建议而删除代码,因为它是教科书练习的解决方案。]

根据文本,“symbol=?”使用两个符号并返回true或false,这取决于它们是否相同

我担心我现在已经深入到Dunning Kruger效应的领域,但是我真的没有看到使用“symbol=?”来实现这段代码的方法。第四章介绍了“cond”,这就是我现在感到困惑的原因

非常感谢您的帮助

如果您想查看HtDP中的章节,请点击此处:


不幸的是,这些解决方案只能通过密码访问。

使用来比较数字。无法使用symbol=?对于这一点。

解决方法是停止事后诸葛亮!答案中的代码定义部分很好。但是,您缺少合同和目的:)。仅仅因为它在第三章中有介绍,并不意味着你在第五章中就停止使用它。类似地,虽然比较在第4章中,但让程序使用比较返回符号是新的。现在,我个人认为你应该删除这个问题,因为你为那些实际被分配了这个作业的学生发布了太多的答案。谢谢你的快速回复!那么“符号”就是作为回应给出的文本?然而,“symbol=?”在哪里起作用?由于第5章中的整套练习被称为“带符号的手指练习”,否则我不太明白这套练习如何适合本章。我将编辑部分问题。
'TooSmall
中的前导tic使其成为一个符号(没有它,scheme将查找具有该名称的变量)
symbol=?
在该练习中不起作用,尽管您需要想象一个使用您的程序然后使用
symbol=?
生成下一个猜测的游戏。。。你在下一个练习中扮演那个角色。另外,您首先发布了您的代码也很好(这样我们可以确认您的定义是正确的),但是感谢您将其删除。再次感谢!我刚刚完成了第五章,现在有很多事情都清楚了,这也归功于你们的有益阐述。