Common Lisp/外部库/Funds
外观
< Common Lisp | 外部库
Funds 为 Common Lisp 定义了几个“函数式”数据结构。函数式数据结构,有时也称为持久数据结构,是不可变的,或不修改其内容的数据结构。它们不是修改,而是创建一个新的对象,该对象在其中有一些更改,但在其他方面与旧对象相同。这可能看起来效率低下,但新对象是以这样一种方式创建的,它与旧对象共享大部分内容,这使得它成为一个廉价的操作。通过使用这些技术,函数式数据结构可以接近提供与可变数据结构相同的性能,但没有可变状态的额外复杂性。
每个 Lisp 程序员都熟悉的函数式数据结构之一是列表。虽然列表可以被破坏性地修改,但在标准用法中它并不存在,并且对列表的操作会生成与原始列表共享结构的新列表。例如,您可以将一个元素 CONS 到列表的头部,并且返回的列表将共享整个旧列表,但前面有一个新的头部。
函数式数据结构对于多处理应用程序特别有用,因为它们可以消除一个进程以使另一个进程无效的方式更改共享数据结构的危险。