根据我的心情,我似乎在想要一个Lisp-1和一个Lisp-2之间来回徘徊。不幸的是,除了显而易见的名称空间差异之外,这会留下您遇到的各种有趣的函数名称/ etc问题。举个例子,我试图今晚编写一些代码(map#'function listvar),当然,它根本不适用于CL。我想了一下我想要mapcar而不是map。当然,当slime / emacs将地图IS定义为某种东西时它没有帮助,但显然根本不是相同的功能。
那么,关于如何最大限度地减少选择一个或另一个并坚持下去的指示?
答案 0 :(得分:5)
Map比mapcar更通用,例如您可以执行以下操作而不是使用mapcar:
(map 'list #'function listvar)
如何将计划和CL分开?我想当你对两种语言都知道得足够好时,你就会知道什么在一种语言中有效而另一种语言无效。尽管语法上有相似之处,但它们在风格上却是完全不同的语言。
答案 1 :(得分:2)
嗯,我认为,一旦你获得了足够的两种语言经验,这就成了一个非问题(只有类似的自然语言,如意大利语和西班牙语)。如果您通常只使用一种语言编程并偶尔切换到另一种语言,那么很遗憾您注定要在Scheme中编写Common Lisp,反之亦然;)
有一点有用的是为两种语言提供独特的视觉环境,使用其他颜色的语法高亮等等。至少你会知道你是在Common Lisp还是Scheme模式。
答案 2 :(得分:0)
我肯定知道存在语法上的差异,尽管我当然还不能自动使用它们,使代码看起来更加相似; - )。
我有一种感觉,你的答案就是这样,但总是希望有一个捷径< _<。
答案 3 :(得分:0)
保持两种语言的最简单方法是在Common Lisp中进行思考和编写代码。 Common Lisp代码可以相对轻松地转换为Scheme代码;然而,从Scheme到Common Lisp可能会引起一些麻烦。我记得有一次我在Scheme中使用letrec来存储变量和函数,并且必须将它分别分解为变量和函数名称空间的单独CL函数。
在所有实际情况中,虽然我没有养成编写CL代码的习惯,这使得我所做的事情变得更加痛苦。