自從今年夏天以來,我一直在玩球拍玩具語言。每個表單都有一個固定的參數,默認情況下,不需要括號。例如。 +
包含2,所以+ 3 + 4 5
是(+ 3 (+ 4 5))
和+ + 3 4 5
是(+ (+ 3 4) 5)
。有沒有辦法在讀取時獲取有關模塊的信息?
要做到這一點,我在主模塊中存儲的符號和他們的arity。讀者不關心它是一種特殊的形式還是程序,但是有沒有更好的方法使用球拍的特徵來做到這一點?因此,我可以導入模塊元數據和查詢,而不是在解析過程中?
自從今年夏天以來,我一直在玩球拍玩具語言。每個表單都有一個固定的參數,默認情況下,不需要括號。例如。 +
包含2,所以+ 3 + 4 5
是(+ 3 (+ 4 5))
和+ + 3 4 5
是(+ (+ 3 4) 5)
。有沒有辦法在讀取時獲取有關模塊的信息?
要做到這一點,我在主模塊中存儲的符號和他們的arity。讀者不關心它是一種特殊的形式還是程序,但是有沒有更好的方法使用球拍的特徵來做到這一點?因此,我可以導入模塊元數據和查詢,而不是在解析過程中?
這是一種從符號到秩序的方法。
#lang racket
(define base-ns (make-base-namespace))
(define (symbol->arity s)
(parameterize ([current-namespace base-ns])
(procedure-arity (namespace-variable-value s))))
(symbol->arity 'cons)
嗨。 「讀者不在乎它是否......」這個「它」指的是什麼? 存儲元數據通常是在一個子模塊中完成的(但是我有點不確定你想在哪裏(以及何時!)使用元信息。 – soegaard
@soegaard讀者中的一個符號,成爲結果語法中的一個標識符。如果我要爲球拍/底座製作新的語法,我可以在球拍/底座上查找''cons'以發現它的真實性嗎? – Sylwester
您是否自己編寫了自己的閱讀器?是否正在重複使用內置的閱讀器? – soegaard