在if语句中使用Let

时间:2018-04-06 21:00:50

标签: scheme lisp racket

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

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

    )
  )

谢谢

1 个答案:

答案 0 :(得分:2)

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

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

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