簡體   English   中英

在球拍中定義引用過程?

[英]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

查看有關符號Racket文檔 符號不包含值; 他們價值觀。 您將要使用變量( (define a 5) )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM