purely-functional

    5热度

    6回答

    据我所知,不纯的函数是那些在用相同参数调用时并不总是返回相同的值的函数(我必须缺少某些东西,或者可能是错误的,如果我是这样的话,请纠正我)。 那么,为什么printf()认为不纯的功能?

    3热度

    1回答

    我有兴趣创建一个函数Derivative,该函数返回一个函数,该函数是传递给它的某个函数的派生函数。但是,我希望能够专注于此,因此,对于特定功能,我可以返回解析解决方案。 所以,我正在寻找这样的事情: auto Derivate(alias Function)(x) { return (Function(x+h) - Function(x-h))/(2h);} auto Derivate(B

    7热度

    2回答

    最近我一直在阅读约unsafePerformIO,我想问你一些问题。我确定一个真正的语言应该能够与外部环境进行交互,因此unsafePerformIO有些合理。 然而,据我所知,我不知道有没有快速的方法来知道,如果没有检查代码来寻找unsafePerformIO的调用,看起来纯粹的(从类型判断的)接口/库是否真的很纯(文件可以省略提及它)。 我知道它应该只在确定参照透明度得到保证时才使用,但我想知

    0热度

    1回答

    下面的例子是问题的简化。 我有一个列表[Either Foo Bar],另一份[Biz]。 的想法是,我每次迭代元素Biz通过[Either Foo Bar],从[Either Foo Bar]的开始,直到Biz是空的。其结果将是,有现在在[Either Foo Bar] 的问题是能够在[Either Foo Bar]开始的时候它的时间来使用下一个元素[Biz]开始更加Bar s以上且Foo秒。

    11热度

    2回答

    我正在研究Okasaki的Purely Functional Data Structures并尝试构建F#实现的东西。我也正在阅读书中列出的练习(有些非常具有挑战性)。那么我被困在练习3.4中,它要求修改WeightBiasedLeftistHeap的合并函数,以便它在一次执行中执行,而不是原始的2次执行。 我还没有能够找出如何做到这一点,并希望得到一些建议。还有另外一个post here on

    0热度

    1回答

    考虑以下结构: class G { Node[] nodes; } class Node { Node neighbour; } 深拷贝操作可以定义为: function G copy (G g) { G r = new G(); Map isom = new Map(); for (Node node in g.nodes) {

    5热度

    2回答

    问题是在功能语言中实现前缀树(Trie)而不使用任何存储和迭代方法。 我想解决这个问题。我应该如何处理这个问题?你能给我准确的算法或链接哪些显示已经实现了一个在任何功能语言? 为什么我试图做=>创建一个简单的搜索引擎的 加字树 在树 搜索词在树删除一个字的功能 为什么我想用功能性语言=>我想提高我的问题解决能力。 注意:由于这是我的爱好项目,我将首先实现基本功能。 编辑: ⅰ)我的意思是大约“而无

    35热度

    9回答

    作为Haskell的练习,我试图实现heapsort。堆通常以命令式语言实现为数组,但这在纯功能语言中会非常低效。所以我研究过二进制堆,但到目前为止我发现的一切都是从一个强制性的观点来描述它们,并且所提出的算法很难转化为功能设置。如何高效地实现一个纯粹的函数式语言如Haskell的堆? 编辑︰有效率我的意思是它应该仍然在O(n *日志n),但它不必击败一个C程序。另外,我想使用纯粹的函数式编程。在

    25热度

    4回答

    我有一个java.util.HashMap对象m(从调用Java代码的返回值),我想要一个新的地图,值对。 如果m是一个Clojure的地图,我可以使用: (assoc m "key" "value") 但是,试图上一个HashMap给出: java.lang.ClassCastException:java.util.HashMap中无法施展to clojure.lang.Associativ

    4热度

    3回答

    我只是读Brodal等人的Purely Functional Worst Case Constant Time Catenable Sorted Lists。他们介绍了数据结构的背景下,不同类型的持久性给我留下了一个明显的问题: 合流持久性:所有的版本都可以更新,查询,此外,两个版本可以组合产生一个新的 版本。请注意,在这种情况下,可以通过反复将其与 本身连接在一起,以多项式形式创建指数规模的结构