LISP中的属性列表:它们是否在现实生活中使用?

时间:2011-11-24 04:34:57

标签: list properties lisp

学习LISP我发现LISP中的任何对象都可以通过属性列表定义自己的一组属性。我想知道这些属性列表是否用于现实生活中的LISP编程,因为(从我的角度来看)属性隐藏了真实对象的结构?

我的意思是我可以通过以下方式定义列表:

(:property1 value1 '(10 20 30))

或当应用属性列表时,它就像:

('(10 20 30))

没有人不知道这个名单隐藏了任何财产。

那么应该使用属性列表吗?

1 个答案:

答案 0 :(得分:4)

Emacs Lisp广泛使用属性列表来记录有用的信息:在源代码中定义变量或函数,如何缩进宏,应用于字符串或缓冲区中的文本块的字体,以及许多其他事情。所以答案是肯定的,它们被用于现实生活中。

除了与每个符号相关联的属性列表(不是每个对象,正如Rörd所指出的那样),Emacs Lisp还允许您使用属性列表,无论您在哪里找到它们都很方便,因为它们'只是普通的名单。用于操作符号过滤器(getput等)的功能与用于操作存储在其他地方(plist-getplist-put)的过梁的功能不同。 Common Lisp看起来像similar distinction,表达方式略有不同。