阅读精心编写的代码似乎可以帮助我学习一门语言。 (至少它与C合作。)[删除问题的“过度指定”部分]
我特别感兴趣的是lisp作为一种适合创建特定于问题的迷你语言或DSL的语言的声誉。当然,该计划应该是开源的,并且最好通过网络提供。
我用Google搜索并找到了这个例子:
http://lispm.dyndns.org/news?ID=NEWS-2005-07-08-1
有人有另一个吗? (并且,是的,我将继续阅读“Practical Common Lisp”。)
11个小时后(仅11个小时!):谢谢大家。多么棒的网站,以及一堆好的答案和提示!
答案 0 :(得分:7)
我觉得你的约束条件过于明确:
小到足以理解,变化多端 足以炫耀(c)lisp的大部分内容 没有的技巧和功能 不透明的(“写得好”的部分 希望),并独立于其他人 包。
Common Lisp是一种庞大的语言,当你组合语言元素时出现的权力集要大得多。你不能拥有一个在CL中显示“大多数技巧”的小程序。
当你学习来自另一种语言的CL时,你会发现很多概念。因此,CL不仅仅是技巧,而是更多关于其基本范式。
我的建议是首先阅读它,然后开始构建自己的程序或查看开源代码。
例如,Edi Weitz通常会编写好的代码。在http://www.weitz.de/查看他的项目。现在去阅读PCL。 :)
答案 1 :(得分:5)
如果你还没有看过,那么这本书Practical Common Lisp可以免费在线获得,并有几个示例项目。
答案 2 :(得分:5)
我很懒,找不到链接,但你应该可以'谷歌'/'Bing'了。以下列表提到了嵌入语言和非常不同的嵌入式语言的不同方法。
请注意,有一些简单的嵌入式语言和非常复杂的嵌入式语言提供了全新的范例,如Prolog,Screamer,CORBA,......
答案 3 :(得分:4)
LOOP宏是Common Lisp中嵌入的DSL的近乎完美的例子。但是,由于它已经是标准的一部分,它可能不是你想要的。
答案 4 :(得分:4)
答案 5 :(得分:2)
CLSQL为SQL查询提供了一个Lispy符号,它编译为SQL,几乎所有Lisp HTML和XML生成库都符合条件。 Metabang bind是用于词法绑定变量的DSL。你可能不知道你需要一个,但事实证明它非常有用。
答案 6 :(得分:0)
SERIES是一种DSL,具体取决于您的定义。它位于CLTL2的附录中,尽管它实际上并不是语言的一部分。