【发布时间】:2018-06-01 20:56:28
【问题描述】:
我目前正在尝试制作一个非平凡的计算器,例如 Maple、wolfram alpha 和那些。纯娱乐。但是我已经做出了限制,它必须是纯严格的函数式语言。这意味着没有惰性求值和数组等可变结构。
问题很简单,什么是制作向量和矩阵的有效数据结构? “简单”的答案当然是列表,但我发现它们在矩阵乘积方面效率极低。为了更加形式化,向量和矩阵应该是任意大小的。
【问题讨论】:
-
您询问的是哪种特定语言?它们通常带有向量的有效实现。
-
SML 的标准基础库有一个名为
Vector的结构,它是一个具有O(1)访问权限的不可变线性数据结构(参见sml-family.org/Basis/vector.html)。如果没有内置的语言支持,您将很难进行非平凡的线性代数(因为对于许多算法而言,不变性已经是一个主要障碍)。 -
“但是我已经做出了限制,它必须是纯严格的函数式语言。这意味着没有惰性求值......” – 为什么没有惰性求值?
-
树和列表可以帮助您创建结构,使低摊销大 O 无需懒惰评估。基本上你会在需要时急切地去做。
-
Bergi 语言未导入。只是语法不同。
标签: data-structures functional-programming linear-algebra