使用"let star"的球拍语法错误



在下面列出的程序中,我收到错误消息:

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?

相关内容

  • 没有找到相关文章

最新更新