使用“let star”的球拍语法错误
Posted
技术标签:
【中文标题】使用“let star”的球拍语法错误【英文标题】:Racket syntax error using 'let star' 【发布时间】:2018-05-18 16:21:37 【问题描述】:在下面列出的程序中,我收到错误消息:
let*: 错误的语法(不是绑定的标识符和表达式)在:pokemon1inPokedex
我不知道为什么,任何建议将不胜感激!
my code
(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]))
【问题讨论】:
您是否忘记在 DrRacket 中选择非教学语言? 请在您的帖子中插入代码作为文本,而不是图像。 您使用哪种语言?例如,它是写#lang racket
还是别的什么?
【参考方案1】:
问题是let*
的语法不正确。
根据球拍指南,let*
的语法是
(let* ([id val-expr] ...) body ...+)
请注意您要绑定的标识符缺少的 (
和 )
括号,以及您移动的关闭 )
。
修改您的示例以正确使用 let*
表单将导致代码如下所示:
(define (in-order? pokemon1name pokemon2name)
(let* ([pokemon1inPokedex ...]
[pokemon2inPokedex ...])
(cond [(and pokemon1inPokedex) ...]
[pokemon1inPokedex ...]
[pokemon2inPokedex ...]
[else ...]))
显然我已经留下了...
供你填写。
作为旁注,pokemon1inPokedex
并没有真正遵循我所知道的任何正常的 Racket 命名约定。在 Racket 中关注standard naming conventions 会给你pokemon1-in-pokedex?
【讨论】:
以上是关于使用“let star”的球拍语法错误的主要内容,如果未能解决你的问题,请参考以下文章