简而言之:我的问题是 Scheme 中定义表达式的类型是什么?
举个例子:
(define x 5)
或者
(define x (lambda (n) (* n n)))
这对我来说有点混乱。任何人都可以帮忙吗?
在 Racketdefine
中是一种特殊形式而不是表达式,因此它本身没有值,如果您尝试执行类似这样的操作,您将收到错误消息:
(display (define x 42))
=> define: not allowed in an expression context in: (define x 42)
如果它有一个值,它将类似于void
,但这将取决于解释器的特定实现细节(我相信我看到一个解释器#t
在 adefine
完成后返回)
#<void>
大多数具有副作用且没有有用结果的表单和过程都会返回该常量
规范也没有详细说明这一点 - 强化了它依赖于实现的声明。