关于Common Lisp,我需要了解什么?

时间:2016-10-27 04:30:59

标签: common-lisp

我目前正在努力寻找令人沮丧的普通口齿不清的世界。在我深入研究并对计算机过于愤怒之前,任何人都可以指出我的期望和一般提示/技巧。

由于

1 个答案:

答案 0 :(得分:4)

好问题。由于我对lisp也很陌生,而且障碍仍然很新,我想我可以提供一些帮助。这里有一些提示,没有特别的顺序。如果我想到它,我可能会添加更多。

1)了解如何在lisp中实现列表。

2)阅读Conrad Barski的Land of Lisp

3)了解读取时间,编译时间和运行时间之间的差异。 (如果你不这样做,你永远不会“得到”宏)

4)符号和包。包都是关于命名空间/导出/阴影符号。 (至少对于我来说)。检查this。 (我知道,标题很糟糕,但内容很好。)您可以将符号视为函数和变量的标识符。常见的lisp是一个Lisp 2.阅读相关内容。如果符号在括号内,则lisp将查找符号的函数定义,如果不是,则查找变量定义。查看内部如何实现符号。 (保罗格雷厄姆的ANSI common lisp有一个很好的章节)

5)宏对代码进行操作。当你准备好时,请阅读Paul Graham的On Lisp。它被认为是关于宏的开创性工作。

6)对于真正漂亮的lisp代码,我建议Paradigms of Artificial Intelligence Programming

7)CLOS是Common Lisp对象系统。真正帮助我“获得”CLOS的那本书是Object-Oriented Programming in Common Lisp。它已经过时了(实际上比我自己年龄大)但完全相关且值得。阅读有关动态调度的信息。元对象协议仍然是我想弄清楚的东西所以我不能在那里给你很多提示:(

8)“Alist”或“关联列表”只是一个列表列表。然而,常见的lisp具有内置运算符,如assoc(用于查找列表中的项)。还有正确的列表,点列表,属性列表(或plist)。还有像union这样的运算符会将普通列表视为集合。 Lisp就是这种抽象。如果您知道特定列表的行为类似于集合,那么您不需要实现集合数据结构。当你开始用lisp进行开发时,你会发现自己一直在偷工减料。

9)setf是“通用设定者”。很高兴有一个运算符用于设置数组,列表(或列表等)中的值,插槽(对象中的字段的单词)等...我们可以使用相同的命令。

最好的建议就是阅读阅读。真的不是那么难的语言。

当您钻研新技术时,只需提示:创建一个文件research.md,您可以在其中编写您学到的所有新内容。就像一本期刊。对我很有用。

并且不要感到沮丧:) Google的错误消息或在#clnoobs

中寻求建议