小编Ste*_*ver的帖子

如何实现Lisp宏系统?

我在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的情况下)?

lisp macros clojure

17
推荐指数
2
解决办法
3833
查看次数

控制反转特定于OO语言吗?

提出这个问题的另一种方法是:根据你的控制反转是什么?

我问这个问题是因为关于IoC的维基百科文章被非OO解释劫持了.这是从讨论页面获取的,来自2007年:

我冒昧地完全重写了这个页面,因为之前的内容被无意义的"面向对象"喋喋不休地接管了......

我没有看到Inversion of Control如何在OO语言之外有任何意义.在程序语言中放弃控制已经有很多解释(事件编程就是一个),而纯函数式语言不需要像控制反转这样的概念,因为它们具有高阶函数.

此外,在Martin Fowler详细阐述IoC 的文章中,他专门处理OO示例.

那么,IoC是否只是一个OO概念,它到底是什么?

对我来说,IoC试图在大多数OO语言强加的限制内将函数转换为数据,并尝试将这些函数作为参数传递给其他函数.这不是IoC的唯一部分,但其中有一部分.

还有工厂设计模式,在传递之前构造和配置对象树.

对我而言,IoC完全是OO概念.

你的答案是什么?

oop design-patterns inversion-of-control

9
推荐指数
3
解决办法
1365
查看次数

浏览器不接受StartSSL 1类证书(Weblogic 10.0.1)

我已经从StartSSL请求了1级证书并将其安装在Weblogic 10.0.1中(参见截图).

WLS密钥库配置 WLS SSL配置

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

证书错误1 证书错误2

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

ssl weblogic keytool ssl-certificate weblogic-10.x

7
推荐指数
2
解决办法
3万
查看次数