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),或者,并且考虑了轻微的危害.
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是你的答案以及你的问题.