在下面列出的程序中,我收到错误消息:
let*:错误的语法(不是绑定的标识符和表达式)在: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]))
问题是您对let*
的语法不正确。
从球拍指南中,let*
的语法是
(let* ([id val-expr] ...) body ...+)
请注意要绑定的标识符缺少(
和)
括号,以及移动的结束)
。
修改示例以正确使用let*
窗体将导致代码如下所示:
(define (in-order? pokemon1name pokemon2name)
(let* ([pokemon1inPokedex ...]
[pokemon2inPokedex ...])
(cond [(and pokemon1inPokedex) ...]
[pokemon1inPokedex ...]
[pokemon2inPokedex ...]
[else ...]))
显然,我已经把...
留给你填写了。
作为旁注,pokemon1inPokedex
并没有真正遵循我所知道的任何正常的球拍命名约定。遵循 Racket 中的标准命名约定会给你pokemon1-in-pokedex?