1

我定义了一个非常简单的函数“imap”。它接收两个参数并显示第一个。但是看看会发生什么奇怪的事情:

截屏

定义都是一样的。我只是更改参数的名称!为什么有些表格不起作用?

实现:r5rs的drRacket

这是源代码。第一个工作正常:

> (define (imap x y) (display x))
> (imap 3 4)
3
> (imap + (list 1 2 3))
#<procedure:+>

现在,只需将“x”更改为“f”,将“y”更改为“x”:

> (define (imap f x) (dislay f))
> (imap + (list 1 2 3))
. . dislay: undefined;
 cannot reference undefined identifier

继续:

> (define (imap y x) (dislay y))
> (imap + (list 1 2 3))
. . dislay: undefined;
 cannot reference undefined identifier

继续,回到第一个定义:

> (define (imap x y) (dislay x))
> (imap + (list 1 2 3))
. . dislay: undefined;
 cannot reference undefined identifier
>
4

1 回答 1

3

这是一个错字!你写dislay的,不正确display。错误消息清楚地说明了这一点:

dislay: undefined;
cannot reference undefined identifier
于 2013-10-27T03:04:35.580 回答