最小的原始图是什么,以使语言完整和LISP变体?

似乎汽车,CDR和一些流量控制以及用于卧室的东西就足够了。如果有这样的列表,那就太好了。

假设只有3种类型的数据,整数,符号和列表。(如Picolisp中)

有帮助吗?

解决方案

对此有很好的讨论 LISP常见问题解答. 。这取决于您选择的原语。麦卡锡(McCarthy)的原始“ LISP 1.5程序员手册”具有五个功能:汽车,CDR,CONS,EQ和ATOM。

其他提示

lambda演算 图灵完整。它有一个原始的-Lambda。将其转换为LISP语法非常微不足道。

我相信最低限度是约翰·麦卡锡(John McCarthy)在原始论文中发表的内容。

LISP的根.

编码.

真正知道这一点的最佳方法是您是否实施它。我用3个夏天创建 Zozotez 这是麦卡蒂(McCarty)的lisp 脑力.

我试图找出我需要的东西,在论坛上,您会发现一个线程 您只需要lambda。 因此,如果愿意,您可以在lambda演算中制作整个LISP。我觉得这很有趣,但是如果您想要最终具有副作用并在现实世界中起作用的东西,这几乎是必经之路。

对于图灵完整的LISP,我使用了 保罗·格雷厄姆斯(Paul Grahams)解释了麦卡锡的论文 而您真正需要的只是:

  • 符号评估
  • 特殊表格报价
  • 特殊形式如果(或cond)
  • 特殊形式的lambda(类似于报价)
  • 功能等式
  • 功能原子
  • 功能缺点
  • 功能车
  • 功能CDR
  • 函数dispatch(基本上适用但实际上未暴露于系统,因此它处理第一个元素是函数的列表)

多数民众赞成10.除此之外,要进行实施,您可以测试,而不仅仅是在图纸上:

  • 读取功能
  • 函数写

多数民众赞成12.在我的 Zozotez 我已努力 setflambda (匿名宏观,如lambda)。我可以为它提供一个库,该库实现了任何动态绑定的LISP(ELISP,picolisp),但文件I/O(因为基础BF不支持STDIN/STDOUT)。

我建议任何人在这两个 LISP(not LISP), ,充分了解语言的实施方式。 LISP具有非常简单的语法,因此这是一个很好的起点。对于所有其他编程语言,您如何实现解释器非常相似。例如。在里面 SICP视频 巫师为逻辑语言制作了解释器,但是即使该语言与LISP完全不同,结构和如何实现它与LISP解释器非常相似。

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