Scheme中`define`的返回值是多少?

时间:2013-09-14 06:29:50

标签: lisp scheme racket r5rs

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

#lang r5rs
(display (define a 3))

并获得错误

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

我有两个问题:

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

2 个答案:

答案 0 :(得分:2)

"If a tree falls in a forest and no one is around to hear it, does it make a sound?"

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

答案 1 :(得分:0)

在Scheme中,define只能用于two places

  1. 在顶层,或
  2. 在“身体”的最开始。
  3. 这两个地方都没有相关的“回报价值”。