在下面列出的程序中,我收到错误消息:
让*:错误的语法(不是绑定的标识符和表达式):pokemon1inPokedex
我不确定为什么,任何建议都会受到赞赏!
(define (in-order? pokemon1name pokemon2name)
(let*
[pokemon1inPokedex (inPokedex? pokemon1name)]
[pokemon2inPokedex (inPokedex? pokemon2name)])
(cond [(and pokemon1inPokedex pokemon2inPokedex) (greater pokemon1name pokemon2name)]
[(true? pokemon1inPokedex) #t]
[(true? pokemon2inPokedex) #f]
[else #f]))
答案 0 :(得分:2)
问题是您使用let*
的语法不正确。
在球拍指南中,let*
的语法是
(let* ([id val-expr] ...) body ...+)
请注意您所绑定的标识符缺少(
和)
个parens,以及您移动的结束)
。
修改示例以正确使用let*
表单将导致代码如下所示:
(define (in-order? pokemon1name pokemon2name)
(let* ([pokemon1inPokedex ...]
[pokemon2inPokedex ...])
(cond [(and pokemon1inPokedex) ...]
[pokemon1inPokedex ...]
[pokemon2inPokedex ...]
[else ...]))
显然我已离开...
让你填写。
作为旁注,pokemon1inPokedex
并没有真正遵循我所知道的任何正常的Racket命名约定。在Racket中关注standard naming conventions会给您pokemon1-in-pokedex?