我在node.js上实现了自己的Lisp,我可以像这样运行s表达式:
(assert (= 3 (+ 1 2))) (def even? (fn [n] (= 0 (bit-and n 1)))) (assert (even? 4)) (assert (= false (even? 5)))
现在我想添加宏 - defmacro功能 - 但这是我被卡住的地方.我想知道的宏系统是如何在其他的Lisp实现,但我无法找到许多指针(除了这个和这个).
我看过Clojure宏系统 - 我最熟悉的Lisp - 但这看起来太复杂了,我找不到我可以轻易应用的其他线索(Clojure宏最终编译成不适用的字节码对于javascript,我也无法理解这个macroexpand1功能.)
所以我的问题是:给定一个没有宏但带有AST的Lisp实现,如何添加像Clojure宏系统这样的宏系统?这个宏系统可以在Lisp中实现,还是在宿主语言的实现中需要额外的功能?
还有一句话:我还没有实现quote(')因为我无法弄清楚返回列表中应该包含哪种值.如果它包含AST的元件或类似的对象Symbol和Keyword(后者是用于Clojure的情况下)?
提出这个问题的另一种方法是:根据你的控制反转是什么?
我问这个问题是因为关于IoC的维基百科文章被非OO解释劫持了.这是从讨论页面获取的,来自2007年:
我冒昧地完全重写了这个页面,因为之前的内容被无意义的"面向对象"喋喋不休地接管了......
我没有看到Inversion of Control如何在OO语言之外有任何意义.在程序语言中放弃控制已经有很多解释(事件编程就是一个),而纯函数式语言不需要像控制反转这样的概念,因为它们具有高阶函数.
此外,在Martin Fowler详细阐述IoC 的文章中,他专门处理OO示例.
那么,IoC是否只是一个OO概念,它到底是什么?
对我来说,IoC试图在大多数OO语言强加的限制内将函数转换为数据,并尝试将这些函数作为参数传递给其他函数.这不是IoC的唯一部分,但其中有一部分.
还有工厂设计模式,在传递之前构造和配置对象树.
对我而言,IoC完全是OO概念.
你的答案是什么?
我已经从StartSSL请求了1级证书并将其安装在Weblogic 10.0.1中(参见截图).

浏览器(Windows 7上的Chrome和IE9,XPSP3上的IE8)仍然会出现证书错误(请参见屏幕截图).

我认为StartSSL根证书可以在几个浏览器中使用(见这里).请指教.