我很好奇define
in Scheme 的返回值。所以我在 Racket 中写了以下几行
#lang r5rs
(display (define a 3))
并得到错误
define: not allowed in an expression context in: (define a 3)
我对此有两个问题:
- 这是否意味着
define
没有返回值? - 根据 R5RS,
define
不是表达式。这是一个程序结构。只有表达式有返回值,而其他形式没有,这是真的吗?
“如果一棵树倒在森林里而周围没有人听到它,它会发出声音吗?”
define
在可以有意义地获得返回值的任何上下文中使用都是无效的。所以它是否有返回值是没有意义的;你永远无法观察到它。