Lisp用于列表处理.树处理有语言吗?

5 lisp parallel-processing tree language-design list

Lisp的名称来源于LIS t P rocessing.链表是Lisp语言的主要数据结构,Lisp源代码本身由列表组成.因此,Lisp程序可以将源代码作为数据结构进行操作(这称为同音性).

但是,根据定义,列表是顺序构造.这鼓励我们使用顺序语言习语(一次处理一件事并累积结果的算法)来解决问题.例如,在使用cons单元格来实现单链接列表的Lisp中,car操作返回列表的第一个元素,而cdr返回列表的其余部分.我的愿景是并行执行的函数式语言,它将问题分成大致相等的子问题,递归地解决它们,并结合子解决方案.

几乎每种编程语言的代码都已经解析成树; 是否有像Lisp这样的同性语言,但树木是主要的数据结构?顺便说一句,我称之为Treep,因为TREE P rocessing.

更新: 2009年由Guy Steele撰写的关于并行算法和数据结构,组织并行执行功能代码foldlfoldr的有趣演示文稿(PDF),或者,并且考虑了轻微的危害.

rei*_*ost 6

我不认为这种变化会非常深刻.Lisp肯定没有任何问题让列表成为其他列表的成员,因此它可以很容易地表示树和树上的算法.

相反,每个列表都可以被视为特定形状的树(以各种方式).


Wil*_*ung 6

Lisp列表是树,Lisp代码是树,就像任何其他代码一样.

(+(*1 3)(*4 6))

是一棵树:

     +
    / \
   /   \
   *   *
  / \ / \
  1 3 4 6
Run Code Online (Sandbox Code Playgroud)

它不仅仅是二叉树.

(+ 1 2 3)

   +
  /|\
 / | \
1  2  3
Run Code Online (Sandbox Code Playgroud)

所以,也许Lisp是你的答案以及你的问题.