在這樣的代碼爲什麼我不能在DrRacket中使用方括號?
(define (lookup key t)
(let ([result (assoc ket (vector-ref t 0))])
(and result (cdr result))))
我不能使用方括號,該錯誤是一個非法使用方括號。我怎麼解決這個問題? 對不起,這樣一個愚蠢的問題。
在這樣的代碼爲什麼我不能在DrRacket中使用方括號?
(define (lookup key t)
(let ([result (assoc ket (vector-ref t 0))])
(and result (cdr result))))
我不能使用方括號,該錯誤是一個非法使用方括號。我怎麼解決這個問題? 對不起,這樣一個愚蠢的問題。
確保「確定從源語言」被選擇(在列表底部左窗口),並在你的代碼的開頭加入這一行:
#lang racket
在一些R5RS Scheme(以及其他類型的Lisp,如Common Lisp)中,方括號不用於括號的替代(例如,請參見this for Scheme,特別是對問題的回答:「使用方括號而不使用括號是否合法?」)。
對於這些語言,你可以使用普通的括號:
(define (lookup key t)
(let ((result (assoc ket (vector-ref t 0))))
(and result (cdr result))))
注意,這個語法也被允許在球拍和所有接受方括號中的其他語言。
謝謝,它適用於球拍語言模式。但是爲什麼它在R5RS中不起作用呢? – AqShvartz
@AqShvartz R5RS模式嚴格執行R5RS方案標準。而且,標準計劃不允許使用方括號作爲圓括號的替代。這是設計。 –