Tag: 函数式编程

什么是高阶函数的一些有趣的用法?

我目前正在做一个函数式编程课程,我很高兴高阶函数和函数作为一等公民的概念。 然而,我还不能想到许多实际上有用的,概念上的惊人的,或者只是简单有趣的高阶函数。 (除了典型和相当沉闷的map , filter等function)。 你知道这样有趣的function的例子吗? 也许返回函数的函数,返回函数列表(?)等的函数 我会很感激Haskell的例子,这是我目前正在学习的语言:)

为什么要避免子types?

我看到很多Scala社区的人build议避免“瘟疫”这样的分类。 什么是反对使用子types的各种原因? 有什么select?

R中更高级别的function – 是否有正式的撰写操作员或咖喱function?

我可以在R中创build一个组合操作符: `%c%` = function(x,y)function(…)x(y(…)) 要这样使用: > numericNull = is.null %c% numeric > numericNull(myVec) [2] TRUE FALSE 但是我想知道是否有一套官方的函数来做这种事情和其他的操作,例如在R中进行。很大程度上是为了减less我的代码中括号,函数关键字等的数量。 我的咖喱function: > curry=function(…){ z1=z0=substitute(…);z1[1]=call("list"); function(…){do.call(as.character(z0[[1]]), as.list(c(eval(z1),list(…))))}} > p = curry(paste(collapse="")) > p(letters[1:10]) [1] "abcdefghij" 例如聚合这是特别好的: > df = data.frame(l=sample(1:3,10,rep=TRUE), t=letters[1:10]) > aggregate(df$t,df["l"],curry(paste(collapse="")) %c% toupper) lx 1 1 ADG 2 2 BCH 3 3 EFIJ 我发现它比以下更优雅和可编辑: > aggregate(df$t, df["l"], […]

Scala中的真实世界函数式编程

SOOOO … 半群,幺半群,单子,函子,镜头,变形,变形,箭……这些都听起来不错,经过一两次(或十次)的练习,你就能掌握它们的本质。 和Scalaz ,你可以免费得到它们。 然而,就现实世界的编程而言,我发现自己正在努力寻找这些概念的用法。 是的,当然,我总是在网上find一些人使用monads IO或斯卡拉镜头,但… …仍然… 我试图find的是某种模式的“规定性”方面的东西。 就像这样:“在这里,你正在试图解决这个问题 ,解决这个问题的一个好办法就是用这种方法来使用镜头!” build议? 更新:按照这两行,有一两本书,会很棒(感谢Paul): Java核心库中的GoFdevise模式示例

什么是Scala中的函数字面量?

什么是Scala中的函数字面量,我应该什么时候使用它们?

不可变的数据结构性能

我不明白如何能够作为一个集合是不可改变的,仍然有一个可以接受的性能。 从我读过的F#集内部使用红黑树作为他们的实现。 如果每次我们要为红黑树添加新的东西,我们必须基本上重新创build它,怎么会有好的performance? 我在这里错过了什么? 虽然我问这个F#的集合,我认为这是任何其他语言具有或使用不变的数据结构相关。 谢谢

Python中列表的模式匹配

我想在Python中的列表上做一些模式匹配。 例如,在Haskell中,我可以做如下的事情: fun (head : rest) = … 所以当我通过一个列表时, head将是第一个元素, rest将是尾随元素。 同样,在Python中,我可以自动解包元组: (var1, var2) = func_that_returns_a_tuple() 我想用Python中的列表做类似的事情。 现在,我有一个函数返回一个列表,以及一段代码,它会执行以下操作: ls = my_func() (head, rest) = (ls[0], ls[1:]) 我想知道我是否可以用Python中的某一行来做这件事,而不是两件事。

函数式编程:什么是“不正确的列表”?

有人可以解释一下“不正确的清单”是什么吗? 注意 :谢谢大家! 所有你们摇滚!

纯function语言中的高效堆

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

一步定义和调用function

有没有在Javascript中定义一个函数的方法,并立即调用它,使其可以重用? 我知道你可以做一次性的匿名function: (function(i) { var product = i * i; console.log(product); // Can't recurse here because there's no (ECMA standard) way for the // function to refer to itself }(2)); // logs 4 或者你可以命名一个函数然后调用它: function powers(i) { var product = i * i; console.log(i * i); if (product < 1e6) { powers(product) }; } powers(2); […]