将Common Lisp应用程序移植到Clojure有多实用? 更具体地说,Common Lisp中存在的Clojure中不存在的特性,必须重写?
基本上,我想要做以下事情,只使用Common Lisp而不是Python: print("Hello world.\r\n") 我可以这样做,但它只输出#\newline并跳过#\return : (format t "Hello world.~%") 我相信我可以用外部的论据来完成这个工作,例如: (format t "Hello world.~C~%" #\return) 但对我来说似乎很尴尬。 当然,我可以以某种方式embedded#\return到格式string,就像我可以#\newline ?
我正在阅读Peter Seibel的“Practical Common Lisp”一书。 在第6章“variables”部分“词汇variables和闭包”和“dynamic,又名特殊variables”中。 http://www.gigamonkeys.com/book/variables.html 我的问题是,这两个部分的例子显示了如何(让…)可以影响全局variables,并没有真正说明dynamic和词法变化之间的差异。 我明白闭包是如何工作的,但在这个例子中,我并没有真正了解这个特别的东西: (defvar *x* 10) (defun foo () (format t "Before assignment~18tX: ~d~%" *x*) (setf *x* (+ 1 *x*)) (format t "After assignment~18tX: ~d~%" *x*)) (defun bar () (foo) (let ((*x* 20)) (foo)) (foo)) CL-USER> (foo) Before assignment X: 10 After assignment X: 11 NIL CL-USER> (bar) Before assignment […]
是否有任何良好的跨平台(至lessSBCL和CLISP)易于安装GUI库?
我看到Practical Common Lisp使用(defvar * db * nil)来设置全局variables。 使用setq出于同样的目的不行吗? 使用defvar vs setq有什么优点/缺点?
有.Net的Common Lisp实现吗?
我在Common Lisp中完成了大部分开发工作,但是有一些时候我想切换到Scheme( 在小块文件中读Lisp的时候,当我想继续玩,或者当我想在Gauche做一些脚本的时候,例)。 在这种情况下,我不舒服的主要原因是我没有粘液(是的,你可能称我为瘾君子)。 什么是计划最亲密的对手粘液? 具体来说,我最感兴趣的是: Emacs集成(这点很明显;)) 体面标签完成(理想情况下,cwcc TAB应扩展为与电stream继续调用)。 它甚至可能是基于符号表的(也就是说,它不一定要注意我一次定义的函数)。 函数参数提示在minibuffer中(如果我已经键入(map |) (光标位置用|表示)),我想看看(map predicate . lists)在小缓冲区 发送表单给解释器 与debugging器集成。 我已经下令重要性的function。 我的计划实施的select是: 的MzScheme 的Ikarus 左岸 中的bigloo 鸡 如果至less和他们一起工作,那将是非常好的。
我在Emacs中使用了Slime作为Common Lisp(或者OS X上的Aquamacs)的主要开发环境,但是在那里还有其他有吸引力的select吗? 我听说过Lispworks,但这是值得关注的吗? 还是有人有提示,以获得最大的Emacs(例如,挂钩到hyperspec为便于参考)? 更新:Pascal Costanza的“Lisp高度指南”第7部分给出了一个观点。 但对我来说, SLIME真的好像是在那里 。 更多资源: Marco Baringer显示SLIME的video 显示LispWorks IDE的Sven Van Caekenberghe的video Rainer Joswig使用LispWorks IDE创buildDSL的video Bill Clementson博客文章讨论IDE的select
另外,即使我可以使用Common Lisp,应该吗? 计划更好吗?
在Common Lisp中,你可以这样做: (defun foo (bar &key baz quux) (list bar baz quux)) (foo 1 :quux 3 :baz 2) ; => (1 2 3) Clojure没有关键字参数。 一个替代scheme是: (defn foo [bar {:keys [baz quux]}] (list bar baz quux)) (foo 1 {:quux 3 :baz 2}) ; => (1 2 3) 这是太多的嵌套括号,必须键入和阅读所有的时间。 它还需要一个明确的哈希映射作为参数而不是平面列表传入。 关键字参数的最常用的Clojure等价物是什么,看起来没有人标点符号炸弹?