2013-10-27 66 views
1

我定義了一個非常非常簡單的函數「imap」。它接收兩個參數並顯示第一個參數。但看到奇怪的事情發生了什麼:DrRacket有什麼問題,不能引用未定義的標識符

Screenshot

的定義都是一樣的東西。我只是改變參數的名字! 爲什麼有些表單不起作用?

實現:這裏R5RS

的drRacket是源代碼。在

> (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) (display x)) 
> (imap 3 4) 
3 
> (imap + (list 1 2 3)) 
#<procedure:+> 

現在,只是改變 「X」 到 「f」, 「Y」,以 「X」

繼續,並回到第一個定義相同:

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

回答

3

這是一個錯字!你寫了dislay,而不是正確的display。該錯誤消息明確指出:

dislay: undefined; 
cannot reference undefined identifier 
+0

對不起,謝謝.....我想我真的是一個傻瓜。 – tcpiper

+0

@Pythoner不用擔心,你不是個傻瓜,你只是很累。也許現在是休息一下的好時機;) –

+2

@ÓscarLópez睡眠只是咖啡的一個可憐的替代品;) – WorBlux