functional-programming相关内容

使用underscore.js以块形式分割JavaScript数组

我需要将一个javascript数组拆分为 n 大小的块。 p> [“a1”,“a2”,“a3”,“a4”,“a5”,“a6”,“a7” ,a8,a9,a10,a11,a12,a13,bb,b,b,c,c, b 和一个 n 等于4,输出应该是这样的: [[“a1”,“a2”,“a3”,“a4”], [“a5”,“a6”,“a7”,“a8”], [ “a9”,“a10” ..

任何Javascript引擎尾部调用优化?

我有一个使用Javascript实现的尾递归寻路算法,并且想知道是否有任何(所有?)浏览器可能会遇到堆栈溢出异常。 解决方案 ECMAScript 4规范最初将增加对TCO的支持,但它被放弃了。 $ b http://lambda-the-ultimate.org/node/3047 据我所知,目前没有广泛使用的JS实现自动TCO。不过,这可能对您有用: http://www. ..
发布时间:2018-04-18 15:05:32 前端开发

如何在列表中压缩列表

我想压缩以下列表: >>> zip([[1,2],[3,4],[5,6]]) [[1,3,5],[2,4,6]] 只有当列表被分割时,才能通过当前的 zip 实现来实现。转换为单个组件: >>> zip([1,2],[3,4],[5,6]) (1,3,5),(2,4,6)] 不知道如何分割列表并将各个元素传递给 zip 。一个功能性的解决方案是首 ..
发布时间:2018-04-18 15:05:29 Python

foldr与foldl(或foldl')的含义

首先,我正在阅读的真实世界Haskell 说永远不要使用 foldl ,而是使用 foldl' 。所以我相信它。 但我对何时使用 foldr 与 foldl'。虽然我可以看到他们在我面前的工作方式不同,但我太愚蠢地无法理解何时“哪个更好”。我想在我看来,它应该无关紧要,因为它们都产生相同的答案(不是吗?)。事实上,我以前使用这个构造的经验来自Ruby的 inject 和Clojure的 re ..
发布时间:2018-04-18 15:05:27 其他开发

什么是(f。)。 g的意思是在Haskell中?

我已经看到很多函数是根据(f。)模式定义的。克。例如: countWhere =(长度。)。过滤 duplicate =(concat。)。复制 concatMap =(concat。)。 map 这是什么意思? 解决方案 点运算符(即(。))是函数组合运算符。它的定义如下: infixr 9。 (。)::(b - > c) - > (a - ..

如何使用( - >)Monad实例以及有关( - >)的混淆

在不同的问题中,我发现了有关使用Monads的( - >)实例的注释提示,为实现无点风格。 至于我,这有些太抽象了。好的,我在( - >)上看到了Arrow实例,在我看来,( - >)可以用在实例符号中,但不能用在类型声明中(这只会是另一个问题的原因)。 有任何使用的例子 - >)作为Monad的实例?或者一个很好的链接? 对不起,如果这个问题可能已经在这里讨论过了,但是搜索“( ..
发布时间:2018-04-18 15:05:11 其他开发

eq ?, eqv?,equal ?,和=在Scheme中有什么区别?

我想知道这些操作之间有什么不同。我在堆栈溢出中看到了类似的问题,但它们是关于Lisp的,并且这三个操作符之间没有比较。所以,如果已经有人问我,请告诉我。 我在Scheme中编写不同类型的命令,并得到以下输出: (eq?5 5) - > #t (eq?2.5 2.5) - > #f (等于2.5 2.5) - > #t (= 2.5 2.5) - > #t 有人可 ..
发布时间:2018-04-18 15:05:09 其他开发

什么是Y组合器?

Y-combinator是来自“功能”的计算机科学概念,事物的一面。大多数程序员对combinators了解得不多,如果他们甚至听说过它们的话。 什么是Y组合器? 它们适用于过程语言 如果您准备好进行长时间阅读, Mike Vanier有一个很好的解释。长话短说,它允许您以本地不一定支持它的语言实现递归。 ..

选项[T]的要点是什么?

我无法理解Scala中的 Option [T] 类。我的意思是,我无法看到 None 超过 null 的任何优势。 例如,考虑下面的代码: object Main { class Person(name: String,var age:int){ def display = println(name +“”+ age) } $ b $ def getPerson1:Perso ..
发布时间:2018-04-18 15:04:55 Java开发

斯卡拉的案例课和课堂课有什么区别?

我在Google搜索了一个个案类和一个类之间的区别。大家都提到,当你想对类进行模式匹配时,用例类就是这样。否则,使用类,并提到一些额外的额外津贴,如等于和哈希代码覆盖。但是,这些是为什么要使用案例类而不是类的唯一原因? 我想在Scala中这个功能应该有一些非常重要的原因。什么是解释或是否有资源来了解有关Scala案例类的更多信息? 解决方案 案例类可以看作是纯粹的和不可变的持有数据的 ..
发布时间:2018-04-18 15:04:49 其他开发

堆栈溢出从Java深层递归?

在使用函数式语言的一些经验后,我开始在Java中更多地使用递归 - 但是这种语言似乎有一个相对较浅的调用堆栈,大约有1000个。 有没有办法让调用堆栈更大?像我可以让数百万通话深度的函数一样,比如Erlang? 当我执行Project Euler问题时,我越来越注意到这一点。 谢谢。 解决方案 我猜你可以使用这些参数。 b $ b -ss Stacksize增加本 ..
发布时间:2018-04-18 15:04:39 Java开发

分区Java 8流

如何在Java 8 Stream上实现“分区”操作?通过分区我的意思是,将一个流分成给定大小的子流。不知何故,它与Guava Iterators.partition()方法,只是希望这些分区是懒惰评估的Streams而不是List。 将任意源流划分为固定大小的批处理是不可能的,因为这会搞乱并行处理。并行处理时,您可能不知道分割后的第一个子任务中有多少个元素,因此您无法为下一个子任务创建分区, ..
发布时间:2018-04-18 15:04:36 Java开发

斯卡拉分配评估单元的动机是什么,而不是分配的值?

Scala赋值对Unit的评价动机是什么,而不是赋值? I / O编程中的一个常见模式是做这样的事情: 但是在Scala中这是不可能的,因为... bytesRead = in.read(buffer) .. returns单位,而不是bytesRead的新值。 看起来像是一个有趣的事情,可以省略函数式语言。 我想知道为什么这样做? 解决方案 ..
发布时间:2018-04-18 15:04:33 其他开发

Monad用简单的英语? (对于没有FP背景的OOP程序员)

OOP程序员会理解(没有任何函数式编程背景),什么是monad? 它有什么问题解决和它使用最常见的地方是什么? 编辑: 为了澄清我正在寻找的那种理解,让我们假设你将具有monad的FP应用程序转换为OOP应用程序。你会做什么来将Monad的责任移交给OOP应用程序? 解决方案 更新:这个问题是一个非常长的博客系列的主题,你可以阅读 Monads - 感谢这是一个很好的 ..
发布时间:2018-04-18 15:04:31 其他开发