Tag: 函数式编程

JavaScript函数式编程库的现状

图书馆 低短划线下划线的启发,显然修复了很多东西,很棒的API显然它是由下划线的启发,它也做错了! fn.js目前在1.0以下很好的文档,基本的function Bilby.js由Brian Mckenna创build,他正在开发一种编译成JavaScript的函数式语言。 似乎有一个核心的function编程概念。 编辑: Bilby似乎符合幻想土地规范。 “幻想之地”幻想世界不仅包含了大量的函数式编程模块,还包含了一个关于如何实现“代数结构”(也就是你的对象)与图书馆兼容的正式规范。 以此为标准将是一件好事。 几乎没有文件(或我无法find它)。 function性JavaScript一个(如果不是) JavaScript的第一个函数式编程库,看起来很不合时宜,但确实很棒。 Wu.js不太了解,但是Lonsdorf在较老的video中使用了它的autoCurry。 Pointfree Fantasy来自幻想图书馆的function集合将Lonsdorf包装成了无点的风格(无论如何)。 添加 民间故事一个年轻但非常有希望的项目,有吨的模块。 因为它的名字暗示了它的灵感,并实现了代数结构的幻想世界规范。 它的文档很浅,但比幻想地更好。 问题 我想要一个一致的库,使我能够轻松做到这些技巧 ,专注于高层次的function概念(函子,单声道,monad,镜头等),不会放弃发展。 我现在最好的select是什么? 笔记 下划线不包括在内,因为它做错了! 虽然我用它作为标签,因为其他库没有标签。

仿函数和endofunctors之间的差异

有人能简单地解释两者之间的区别吗? 我并不完全理解monad是endofunctors而不是functor的部分。

“打结”解释

在阅读Haskell相关的东西时,我有时会遇到“绑结”的expression,我想我明白它做了什么 ,但不知道如何 。 那么,对这个概念的解释有没有什么好的,基本的和简单的?

斯卡拉有警卫吗?

我几天前开始学习Scala,在学习Scala时,我将其与其他函数式编程语言(如Haskell , Erlang )进行了比较,后者对此我有一定的了解。 斯卡拉有可用的守卫序列吗? 我在Scala中进行了模式匹配,但是有没有其他概念等同于另外的守卫呢?

为什么要在Python中进行function编程?

在工作中,我们用一种非常标准的OO方式来编写我们的Python。 最近,有几个人join了function性的潮stream。 他们的代码现在包含更多的lambdaexpression式,地图和缩减。 我知道函数式语言对并发是有好处的,但是编程Python在function上确实有助于并发? 我只是想了解如果我开始使用更多的Pythonfunction特性,我会得到什么。

在函数式编程中实现多态

目前我正在享受从面向对象语言到function语言的转变。 这是一股清新的空气,我发现自己比以前更富有成效。 然而 – OOP的一个方面,我还没有看到FP方面令人满意的答案,那就是多态 。 即我有大量的数据项,当它们被传递到某些函数时需要以不同的方式处理。 为了论证,假设有多种因素推动多态行为,所以潜在地呈指数forms的许多不同的行为组合。 在OOP中,可以使用多态性相对较好地处理:通过组合+inheritance或基于原型的方法。 在FP我有点卡住之间: 编写或编写纯粹的函数,通过分支每个数据项的值有效地实现多态行为 – 感觉就像组装一个巨大的条件表,甚至模拟一个虚拟方法表! 把函数放在纯数据结构中,就像原型一样 – 这看起来像是起作用,但是这不违背定义与数据分开的纯函数的思想吗? 什么是这种情况推荐的function方法? 还有其他好的select吗?

学习function/ Clojure编程 – 实践练习?

我正在用Clojure学习函数式编程。 你可以推荐什么样的实践练习? 在线存储库的解决scheme将是完美的。 我能想到的一个想法是通过sorting,树,图等所有stream行的algorithm,并在Clojure自己实现它们。 虽然它可以工作,但它可能非常陡峭,我可能做得不够高效(与知道自己在做什么的人相比)。

dynamic编程algorithm如何在惯用的Haskell中实现?

Haskell和其他函数式编程语言是围绕不维护状态而build立的。 我对于函数式编程的工作原理和概念还不熟悉,所以我想知道是否可以用FP方式实现DPalgorithm。 什么function的编程结构可以用来做到这一点?

一个简单的例子表明IO不能满足monad法则?

我已经提到IO不符合单子法,但是我没有find一个简单的例子来表明这一点。 有人知道一个例子吗? 谢谢。 编辑:正如ertes和nm指出的,使用seq有点不合法,因为它可以使任何monad失败的法律(结合undefined )。 由于undefined可能被视为非终止计算,所以使用它是完全正确的。 所以修改后的问题是: 有人知道一个例子,说明IO不能满足单子法则,不使用seq ? (或者,如果seq不被允许,那么certificateIO确实符合法律?)

Clojure:如何在运行时找出函数的参数?

给定一个函数对象或名称,我怎样才能确定它的arity? 像(arity func-name)这样的东西。 我希望有一个办法,因为在Clojure中,arity非常重要