【问题标题】:Racket syntax error using 'let star'使用“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 还是别的什么?

标签: syntax racket let


【解决方案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?

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2017-03-01
    • 2015-04-08
    • 2012-09-12
    • 1970-01-01
    • 2013-04-10
    相关资源
    最近更新 更多