看板 Ruby 關於我們 聯絡資訊
※ 引述《Schelfaniel (Schelfaniel)》之銘言: : 這個寫法應該沒什咩問題, : 原本它把 x y 重新 bind 應該是習慣, : 這樣比較安全。 我猜,因為 macro 展開可能會碰到,例如 global 的 name? : 總之就是改變 Reader 的型態啦。 : 像 : Common Lisp 的 正常語法是 (print (+ 1 2)) : Reader Macro 可以做到 (println #I[1+2+3+4+5]) : 之前還看過內含 ASM 語法的 :QQ : 假設如下 : #A( : mov ax, 10h : ret : ) 如果像是這樣呢? ASM(%q{ mov ax, 10h ret }) 這樣也可以是合法的 ruby syntax. 也就是說 ASM 裡面會需要一個 assembly 的 parser. 用 lisp 應該也是類似的作法? vector-map-transformer 我看不太懂 @@ : 這個是 Function 不是 Macro 呀, : Macro 比較像 inline 或 #define 也,如果又 Function 又 Eval, : 不就達不到原本 Macro 要求的速度性了?? macro 的速度?你是指先展開再 compile 嗎? 如果是這樣的話,ruby 好像真的就沒有了.. 想像一下,或許可以這樣寫: defmacro :square_sum2 do |x, y| "a = #{x} + #{y}; a * a" end square_sum2(5, 3) 這個由另一個 preprocessor 去跑,再把這 compile 成 ruby, 再把他丟給 ruby 去跑。好像可以試試看用起來如何... -- Hear me exalted spirits. Hear me, be you gods or devils, ye who hold dominion here: I am a wizard without a home. I am a wonderer seeking refuge. Sacrifice -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18