作者godfat (godfat 真常)
看板Ruby
标题Re: [连结] 松本行弘: Code 的世界~成为超级程式设 …
时间Tue Jul 28 03:31:19 2009
※ 引述《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