【问题标题】:Using Let inside of a if statement在 if 语句中使用 Let
【发布时间】:2018-09-16 23:04:55
【问题描述】:

我正在编写一个代码片段,它获取列表中的一个元素并创建一个具有绝对值的变量。问题是 DrRacket 不喜欢我使用 Let 的方式。 let: 语法错误(缺少绑定对或正文) in: (let ((abs (car l))))

(define abs
  (lambda (l)
    (if(>= (car l) 0)
       (let 
           ((abs(car l))))
       (let 
           ((abs(- car l)))))

    )
  )

谢谢

【问题讨论】:

  • let 创建了一个局部变量,您可以在let 的主体内使用该变量。您的两个let 表达式都没有使用变量abs 的主体。
  • 另外,(- car l) 应该是 (- (car l))

标签: scheme lisp racket


【解决方案1】:

您的let 表单没有使用变量abs 的正文。

使用两个let 表达式也可能不是您想要的。您应该使用一个,然后在计算绑定变量的值时使用if

(define abs
  (lambda (l)
    (let ((val (if (>= (car l) 0)
                   (car l)
                   (- (car l)))))
      val)
    )
  )

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2016-08-15
    • 2019-04-16
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多