7

阅读编写良好的代码似乎可以帮助我学习一门语言。(至少它与 C 一起使用。)[删除问题的“过度指定”部分]

我对 lisp 的声誉特别感兴趣,它是一种适合创建特定于问题的迷你语言或 DSL 的语言。当然,该程序应该是开源的,并且最好可以通过网络获得。

我用谷歌搜索并找到了这个例子:

http://lispm.dyndns.org/news?ID=NEWS-2005-07-08-1

有人还有吗?(而且,是的,我将继续阅读“实用通用 Lisp”。)

11 小时后(仅 11 小时!):谢谢大家。多么美妙的网站,多么好的答案和技巧啊!

4

7 回答 7

7

我觉得你的约束被过度指定了:

小到可以理解,变化到足以展示 (c)lisp 的大部分技巧和功能,而不是不透明(愿望的“写得很好”的部分),并且独立于其他包。

Common Lisp 是一门庞大的语言,当你将语言元素结合起来时,产生的威力要大得多。你不能有一个小程序在 CL 中显示“大多数技巧”。

当您从另一种语言学习 CL 时,您还会发现许多概念是陌生的。因此,CL 不是关于技巧,而是更多关于它的基本范式。

我的建议是先阅读一下,然后开始构建自己的程序或研究开源代码。

例如,Edi Weitz 通常会写出好的代码。在http://www.weitz.de/查看他的项目。

现在去阅读PCL。:)

于 2009-06-25T06:48:23.683 回答
6

我有点懒惰找到链接,但你应该能够“谷歌”/“必应”它。下面的列表提到了非常不同的嵌入语言的方法和非常不同的嵌入语言。

  • ITERATE 迭代
  • 'defsystem's 中的系统/模块/文件描述,例如 ASDF
  • 中缀读宏
  • 在 CLIM 中定义应用程序框架,用于指定用户界面
  • LispWorks 和 CLSQL 中的嵌入式 Lispified SQL 查询
  • LispWorks 的 Knowledgeworks:具有规则、查询、...的逻辑语言
  • 在 Allegro CL 中嵌入 Prolog
  • 以各种形式嵌入 HTML
  • XMLisp,集成了 XML 和 Lisp
  • 非确定性编程的尖叫声
  • PWGL,作曲的可视化编程

请注意,有简单的嵌入式语言和真正复杂的语言,它们提供了全新的范例,如 Prolog、Screamer、CORBA...

于 2009-06-26T23:12:09.687 回答
5

如果您还没有看过它,Practical Common Lisp一书可在线免费获得,并且有几个示例项目。

于 2009-06-25T03:50:58.840 回答
4

LOOP 宏是嵌入在 Common Lisp 中的 DSL 的一个近乎完美的例子。但是,由于它已经是标准的一部分,因此它可能不是您所追求的。

于 2009-06-26T13:14:21.480 回答
4

CLs 格式函数有一个迷你 dsl。

http://cybertiggyr.com/fmt/

我认为用于打印字符串的 dsl 将编译为机器代码。

(格式无“~{~A~#[~:;,~]~}”lst))

于 2009-06-26T13:23:44.880 回答
2

CLSQL 为 SQL 查询提供了 Lispy 表示法,它编译成 SQL,几乎所有的 Lisp HTML 和 XML 生成库都符合条件。Metabang bind是一种用于词法绑定变量的 DSL。您可能不知道自己需要一个,但事实证明它非常有用。

于 2009-06-26T23:34:29.643 回答
0

SERIES 是一种 DSL,具体取决于您的定义。它在 CLTL2 的附录中,尽管它实际上并不是该语言的一部分。

于 2009-06-29T22:04:57.450 回答