根据我的心情,我似乎在想要 Lisp-1 和 Lisp-2 之间摇摆不定。不幸的是,除了明显的名称空间差异之外,这还留下了您遇到的各种有趣的函数名称/等问题。举个例子,今晚我试图编写一些代码(map #'function listvar),当然,这在 CL 中根本不起作用。我花了一点时间才想起我想要的是地图车,而不是地图。当然,当 slime/emacs 显示 map 被定义为某种东西时,它没有帮助,尽管显然根本不是相同的功能。

那么,关于如何最大限度地减少选择其中之一并坚持下去的问题的建议呢?

有帮助吗?

解决方案

地图 比mapcar更通用,例如您可以执行以下操作而不是使用mapcar:

(map 'list #'function listvar)

我如何在头脑中将计划和 CL 分开?我想当你足够了解两种语言时,你只知道什么在一种语言中有效,而不知道在另一种语言中有效。尽管语法相似,但它们在风格上是完全不同的语言。

其他提示

好吧,我认为一旦你在两种语言上获得了足够的经验,这就不再是问题了(只是使用类似的自然语言,例如意大利语和西班牙语)。如果您通常使用一种语言编程,只是偶尔切换到另一种语言,那么不幸的是,您注定要在Scheme中编写Common Lisp,反之亦然;)

有用的一件事是为两种语言提供不同的视觉环境,使用其他颜色的语法突出显示等。那么至少你会永远知道你是处于 Common Lisp 还是Scheme 模式。

我肯定知道存在语法差异,尽管我肯定还不够流利,无法自动使用它们,这使得代码目前看起来更加相似;-)。

我有一种感觉,你的答案会是这样,但总能希望有捷径<_<。

让两种语言保持一致的最简单方法是用 Common Lisp 进行思考和编写代码。Common Lisp 代码可以相对容易地转换为Scheme 代码;然而,从Scheme 转向Common Lisp 可能会引起一些头痛。我记得有一次我在 Scheme 中使用 letrec 来存储变量和函数,并且必须将其分别拆分为变量和函数命名空间的单独 CL 函数。

实际上,尽管我没有编写 CL 代码的习惯,但这使得我不得不编写 CL 代码的时候变得更加痛苦。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top