2045得票29回答
什么是尾递归?

在开始学习Lisp时,我遇到了术语尾递归。它确切指的是什么?

1790得票41回答
对象的映射函数(而不是数组)

我有一个对象:myObject = { 'a': 1, 'b': 2, 'c': 3 } 我正在寻找一种与 Array.prototype.map 类似的本地方法,可以按以下方式使用:newObject = myObject.map(function (value, label) { ...

1681得票48回答
什么是Monad?

最近简单了解了Haskell,那么Monad到底是什么呢?请给出一个简洁、明了、实用的解释。 我发现我遇到的大多数解释都比较晦涩难懂,并且缺乏实际细节。

1648得票91回答
JavaScript有像"range()"这样的方法来生成在提供的范围内的数字序列吗?

在PHP中,你可以做到...range(1, 3); // Array(1, 2, 3) range("A", "C"); // Array("A", "B", "C") 也就是说,有一个函数可以通过传递上下限来获取一系列数字或字符。JavaScript本身是否内置了这样的功能?如果没有,我该...

1147得票29回答
函数式编程是否替代了GoF设计模式?

自从去年开始学习F#和OCaml以来,我已经阅读了大量的文章,这些文章坚称设计模式(特别是在Java中)是命令式语言中缺失功能的解决方法。我发现一篇文章提出了一个相当强的观点: 引用: 我遇到的大多数人都读过Gang of Four (GoF)写的设计模式一书。任何有自尊心的程序员都会告诉你...

1147得票18回答
什么是(函数式)响应式编程?

我已经阅读过维基百科上关于反应式编程的文章,还读了一篇关于函数响应式编程的小文章。这些描述非常抽象。 实际上,函数响应式编程 (FRP) 是什么意思? 与非响应式编程相比,什么构成了反应式编程? 我的背景是命令式/OO语言,因此希望能够提供与该范式相关的解释。

1104得票17回答
列表推导式 vs lambda + filter

我有一个列表,想要根据项的属性进行过滤。 以下哪个更好(可读性、性能、其他原因)?xs = [x for x in xs if x.attribute == value] xs = filter(lambda x: x.attribute == value, xs)

982得票16回答
“闭包”和“lambda”之间有什么区别?

有人能解释一下吗?我理解它们背后的基本概念,但我经常看到它们被交替使用,让我感到困惑。 既然我们在这里了,那么它们与常规函数有何不同呢?

928得票6回答
Hindley-Milner 的哪个部分你不理解?

我发誓曾经有一件T恤出售,上面印着不朽的话: 你不理解的部分是什么? 对于我来说,答案是......全部! 特别是,在Haskell论文中经常看到这样的符号,但我不知道它们的含义。我不知道它应该属于哪个数学分支。 当然,我认识希腊字母和符号“∉”(通常表示某物不是集合的元素)。...

888得票21回答
Monad在纯英语中的含义?(针对没有函数式编程背景的面向对象程序员)

用面向对象编程(OOP)的术语,解释一下Monad是什么(不需要任何函数式编程背景知识)? 它解决了什么问题,最常见的使用场景是什么? 更新 为了澄清我所期望的理解,假设你正在将一个含有monads的FP应用程序转换为OOP应用程序。你将如何将monad的职责移植到OOP应用程序中?