M-expression列表[x; y]在LISP中做了什么?

时间:2018-01-09 14:44:01

标签: lisp s-expression

我正在阅读麦卡锡关于LISP的this论文(高于我的技能)。在定义(LABEL,f,e)here的评价时,他使用了M表达式(我认为它是一个M表达式,如果我错了,请纠正我)list[x;y]。 {实际上,list[cadar[e];car[e]]}。

根据我的理解,它象征着(e1,e2)其中e1和e2是S-表达式。我做对了还是别的什么,list[x;y]的对应表达式是什么?

谢谢。

1 个答案:

答案 0 :(得分:3)

在元语言中,表达式list[a; b]表示将函数list应用于两个参数,这两个参数构建一个包含两个元素的列表,这两个元素是a的评估结果和b分别。

在S表达式的语言中,因此,这将被写为通常的函数调用:(LIST a b),这是一个列表,第一个元素是函数的名称(LIST)和其余的元素函数的实际参数。请注意,我在这里使用符号(a b)表示S表达式,而不是(a, b)。麦卡锡本身后来改变了这种表示法,并且在LISP 1.5 Programmer’s Manual. 2. ed. Cambridge, Mass: MIT Pr, 1979.中使用了新的表示法。