2011-03-27 84 views
1

即使在爲此問題選擇標題時,我也遇到了問題。請隨意編輯它。什麼意思是「(?symbol?name)」?

我得到了這個Scheme代碼,並沒有理解這個塊。

(define (func b) 
(match b 
    [(list (? symbol? x) rhs) ... 

問題部分是(?symbol?x)。我想這是某種比較器,但我在任何地方都找不到它!很難搜索它,因爲我不知道如何命名這個命令。

我想至少得到它的名字,更多的解釋讚賞。 =)

謝謝!

回答

1

剛剛找到它!

這是(match ...)語法的特定情況。這裏找到它:Pattern Matching

更具體的:

(匹配VAL-EXPR條款等)

子句= [PAT EXPR ... +]
| [PAT(=> ID)EXPR ... +]

凡輕拍是

輕拍:: = ID [匹配任何綁定標識符]
(...)
| (?expr pat ...)[match if(expr value)and pat]

所以我有點兒沒錯:它檢查x是否是符號。

我很幸運!請完成此主題! 非常感謝!

+2

是的,這是對您詢問的內容的描述。這是一個特定於[Racket](http://racket-lang.org/)的工具,您可以在這裏找到更新的文檔(http://docs.racket-lang.org/reference/match。 HTML)。 – 2011-03-27 05:16:23

+1

當你說「請完成這個話題」時,我猜你是在暗示應該關閉這個問題。做到這一點的最好方法是點擊你自己答案旁邊的概述「檢查」;這將表明該問題已得到解答。 – 2011-03-27 17:34:02

+0

@Eli:是的,好點,它是Racket的。但是我看到它們有點相似,就像你在[here]中看到的一樣(http://docs.racket-lang.org/reference/match.html?q=match#(form._((lib._racket/match..rkt)._ match)和我的原始鏈接進行比較 @John Clements:我的意思是提供更多的參考資料,而不是用於結束問題 – paulochf 2011-04-02 01:42:40