define-syntax

    10熱度

    3回答

    我已經閱讀了JRM's Syntax-rules Primer for Merely Eccentric,它幫助我理解了語法規則以及它與common-lisp的define-macro的不同之處。語法規則只是在define-syntax中實現語法轉換器的一種方式。 我在找兩件事,第一件是更多的例子和語法規則的解釋,第二件是學習使用define-syntax的其他方法的好資源。你推薦哪些資源?

    5熱度

    3回答

    計劃宏可以宏被寫入方案(與define-syntax,例如)將採取類似這樣的表述: (op a b c d e f g h i j) 和產量的表情像這樣的輸出? (op (op (op (op (op (op (op (op (op a b) c) d) e) f) g) h) i) j) 當然,對於任意長度。我不能想辦法做到這一點,給予一定的模板是這樣的: (define-syntax

    1熱度

    1回答

    我希望擴大 ​​ 到 (begin (x 'f n) (x 'f n) (arbitrary) (x 'f n) ...) 我的嘗試是: (define-syntax foo (syntax-rules() ((_ l a ...) (let-syntax ((f (syntax-rules() ((_ n) (l (quote f) n)))

    5熱度

    1回答

    我正在通過SICP工作,並想嘗試一些詭計中的例子。我正在嘗試流示例,並希望實施cons-stream,我從this StackOverflow question獲得。但是當我輸入到這個詭計,我得到: guile> (define-syntax cons-stream (syntax-rules() [(cons-stream x y) (cons x (delay y))]))

    4熱度

    2回答

    我聽說「call/cc」可以用來實現任意控制流構造,所以我試圖用「call/cc」實現所有這樣的構造,但是我遇到了麻煩。假設我沒有「如果」我將如何使用「define-syntax」和「call/cc」來實現它?有可能或者我被誤導了嗎?我知道如何使用「call/cc」實現無條件跳轉,但是在機器級執行條件執行是通過分支指令執行的,分支指令的執行取決於處理器的狀態位。沒有這種類型的構造,我不知道它是如何

    5熱度

    4回答

    R5RS給出建議的宏定義的庫語法形式: http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-10.html#%_sec_7.3 ,其也限定letrec,以一種非常複雜的方式,肯定不是我將如何定義它,我會簡單地使用: (define-syntax letrec2 (syntax-rules() ((letrec2

    6熱度

    1回答

    我一直在編寫Common Lisp宏,所以Scheme的R5Rs宏對我來說有點不自然。我想我計上心,但我不明白怎麼一會用向量模式語法規則: (define-syntax mac (syntax-rules() ((maC#(a b c d)) (let() (display a) (newline) (display d)

    1熱度

    1回答

    剛開始學習計劃。 我正在使用Dr.Retet作爲我的編譯器/解釋器。 我需要一些字符串函數(字符串替換是確切的),所以我從SRFI 13複製。 當我測試了一下,顯示.. reference to undefined identifier: let-string-start+end 這與 define-syntax let-string-start+end 定義看來,它被忽略?究竟發生了什麼