我定义了一个非常简单的函数“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
>