[英]define quote process in racket?
我有這幾行我在drracket上運行,我無法理解輸出
> (define 'a 5)
> 'b
. . ..\..\Program Files\Racket\share\pkgs\drracket\drracket\private\rep.rkt:1088:24: b: undefined;
cannot reference an identifier before its definition
> '0
5
是重新定義的報價? 為什么'b不工作而'0是5?
首先,符號是原子值。 它們不能像變量那樣對待。
無論如何,你的第一行擴展到:
(define (quote a) 5)
這是在球拍中定義功能的簡寫。 所以是的,你正在重新定義quote
。
當你試圖運行'b
,你正在運行(quote b)
,它期望變量b
有一些值,但事實並非如此。 這就是您收到錯誤的原因, cannot reference an identifier before its definition
。
當您嘗試運行'0
,您正在運行(quote 0)
。 0是有效值,它將成為新函數中a
的值。 因此,函數評估為正常,並返回5。
換句話說,它不僅僅是0,它是一個有效的參數。
> (define 'a 5)
> (define b 12345)
> 'b
5
> '0
5
> '123454321
5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.