scheme - 在 if 语句中使用 Let

标签 scheme lisp racket

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

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

    )
  )

谢谢

最佳答案

您的 let 表单没有使用变量 abs 的主体。

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

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

关于scheme - 在 if 语句中使用 Let,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49700919/

相关文章:

scheme - 被列表递归难住了

流和替代模型

lisp - LISP 中的列表符号和 S 表达式

python - 在 Python 中伪造类似 LISP 的闭包?

annotations - 什么时候在 Typed Racket 中使用 `form:`?

if-statement - 新 Racket : why is the if statement affecting the return?

mysql - 如何在 plt-scheme 中通过 ffi 访问 char **?

vector - Vector变换中的Scheme/Racket Vector

emacs - emacs lisp 中的评估顺序