2

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

那么,关于如何尽量减少选择其中一个并坚持下去的指针?

4

4 回答 4

5

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

(map 'list #'function listvar)

如何在我的脑海中将方案和 CL 分开?我想当您对两种语言都足够了解时,您只会知道哪种语言适用于另一种语言。尽管语法相似,但它们在风格上是完全不同的语言。

于 2008-08-28T03:24:20.437 回答
2

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

有帮助的一件事是为两种语言提供不同的视觉环境,使用其他颜色的语法突出显示等。然后至少您将始终知道您是处于 Common Lisp 还是 Scheme 模式。

于 2008-09-21T11:57:29.263 回答
0

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

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

于 2008-08-28T13:36:56.783 回答
0

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

尽管我没有编写 CL 代码的习惯,但实际上,这让我不得不度过的时光更加痛苦。

于 2008-09-02T04:52:04.930 回答