1

我很好奇definein Scheme 的返回值。所以我在 Racket 中写了以下几行

#lang r5rs
(display (define a 3))

并得到错误

 define: not allowed in an expression context in: (define a 3)

我对此有两个问题:

  1. 这是否意味着define没有返回值?
  2. 根据 R5RS,define不是表达式。这是一个程序结构。只有表达式有返回值,而其他形式没有,这是真的吗?
4

2 回答 2

2

“如果一棵树倒在森林里而周围没有人听到它,它会发出声音吗?”

define在可以有意义地获得返回值的任何上下文中使用都是无效的。所以它是否有返回值是没有意义的;你永远无法观察到它。

于 2013-09-14T13:08:58.607 回答
0

在 Scheme 中,define只能在两个地方使用:

  1. 在顶层,或
  2. 在“身体”的最开始。

在这些地方都没有“返回值”相关。

于 2013-09-16T07:22:47.557 回答