问题自Okasaki以来,纯功能数据结构有何新变化?和jbapple的史诗答案,提到了在函数编程中使用差异列表(与逻辑编程相对),这是我最近感兴趣的事情。这使我找到了Haskell 的差异列表实现。我有两个问题(如果我应该在StackExchange上给他们两个不同的问题,请原谅/纠正我)。
一个简单的问题是,除了Haskell库中的代码之外,还有人意识到函数式编程和/或实现中的差异列表的学术考虑吗?jbapple的答案没有引用差异列表(逻辑编程中的差异列表存在于绝大部分内容中,并且存在于我在“周围某处”(TM)中提供的两个资源中)。在找到Haskell实现之前,我不知道这个想法已经从逻辑跃升为函数式编程。当然,Haskell差异列表是高阶函数的自然使用,其工作原理与逻辑编程中的完全不同,但是接口肯定是相似的。
我想问的更有趣(而且更模糊)的问题是上述Haskell差异列表库所要求的渐近上限看起来是否正确/合理。我的困惑可能是因为我失去了一些东西约显而易见约懒惰复杂的推理,但所主张的界限才有意义,我如果替换在大数据结构(或关闭阵型,或者变量查找,或东西)总是恒定的时间。还是“捕获”仅仅是因为“头”和“尾”的运行时间没有限制,正是因为这些操作可能必须经过任意一堆延迟的计算/替换才能完成?
1
起初,我对“函数式编程语言(与函数式编程语言相反)”感到困惑,但是您的意思是写“(与逻辑编程语言相对)”吗?
—
伊藤刚(Tsuyoshi Ito)2010年
哦,糟糕-是的,这就是我的意思,现在已修复。
—
罗伯·西蒙斯
在我看来,第二个问题在Stack Overflow上似乎更合适,但是,既然您已经在此处提出了问题,那么最好等待一下是否有人可以在这里回答。我个人无法通过阅读源代码找到任何理由来质疑所要求的范围,但是我没有遵循您的理由来质疑它们,而且我可能会遗漏一些东西。
—
伊藤刚(Tsuyoshi Ito)2010年