functional-programming相关内容

用Google Guava过滤JavaBeans列表

在Java程序中,我有一个我想根据特定属性过滤的bean列表。 例如,假设我有一个Person,一个JavaBean的列表,其中Person具有许多属性,其中包括'name'。 我也有一个名字列表。 现在我想查找所有姓名在名单中的人。 使用Google Guava执行此过滤器的最佳方法是什么? 到目前为止,我已经想过将Guava和Apache beanutils结合起 ..
发布时间:2018-04-18 15:08:35 Java开发

如何识别Java中的不可变对象

在我的代码中,我创建了一个对象集合,这些对象将以各种线程的方式访问,只有当对象是不可变的时候才是安全的。当试图向我的集合中插入新对象时,我想测试它是否是不可变的(如果不是,我会抛出异常)。 我可以做的一件事是检查一些众所周知的不可变类型: private static final Set knownImmutables = new HashSet(Ar ..
发布时间:2018-04-18 15:08:27 Java开发

Java是否支持Currying?

我想知道是否有任何方法可以用Java来解决这个问题。我认为,如果没有原生支持闭包,这是不可能的。解决方案Java 8(2014年3月18日发布)不支持currying。 missfaktor的回答中发布的示例Java代码可以被重写为: import java.util.function。*; import static java.lang.System.out; //测试JDK ..

为什么懒惰评估有用?

我一直在想,为什么懒惰的评估是有用的。我还没有任何人以一种合理的方式向我解释;大多数情况下它最终会让人“相信我”。 注意:我不是指记忆。 解决方案 主要是因为它可以更高效 - 如果它们不会被计算,则不需要计算它们的值用过的。例如,我可以将三个值传递给函数,但根据条件表达式的顺序,实际上只能使用一个子集。在像C这样的语言中,无论如何都要计算所有三个值。但在Haskell中,只计算了必要 ..
发布时间:2018-04-18 15:08:18 其他开发

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

在工作中,我们用一种非常标准的OO方式来编写我们的Python。最近,几个人开始了功能性的潮流。他们的代码现在包含更多的lambda表达式,映射和缩减。我知道函数式语言对并发有好处,但是编程Python在功能上确实有助于并发?我只是想了解如果我开始使用更多Python的功能特性,我会得到什么。 strong>:我已经接受了评论中的任务(部分原因,似乎是由Python中的FP狂热分子,但不是唯一的) ..
发布时间:2018-04-18 15:08:13 Python

使用reduce()的有用代码?

这里有人有没有使用python中的reduce()函数的有用代码?除了我们在例子中看到的通常的+和*之外,还有其他代码吗? 请参阅 Python 3000中reduce()的命运 by GvR 解决方案 any 和 all 来代替这些情况。 foldl 和 foldr 会出现在Scheme a很多... 以下是一些可爱的用法: 拼合列表 目标:转到 [[1,2, ..
发布时间:2018-04-18 15:07:56 Python

你怎么能做任何有用的没有可变状态?

最近我一直在阅读很多关于函数式编程的东西,而且我可以理解它的大部分内容,但是我无法用脑袋包裹的一件事就是无状态编码。在我看来,通过消除可变状态来简化编程就像是通过移除仪表板来“简化”汽车:成品可能更简单,但运气好,可以与最终用户交互。 几乎所有我能想到的用户应用程序都将状态视为核心概念。如果您编写文档(或SO帖子),则状态会随着每个新输入而改变。或者如果你玩视频游戏,那么就会有很多状态变量, ..
发布时间:2018-04-18 15:07:52 其他开发

为什么在Haskell中将副作用建模为monad?

我的意思是monad只是一个有4个操作的接口,所以什么是推理建模的副作用? 解决方案 假设函数有副作用。如果我们把它产生的所有效果作为输入和输出参数,那么这个函数对外界来说是纯粹的。 所以对于不纯的函数 f':: Int - > Int 我们将RealWorld添加到考虑范围中 f :: Int - > RealWorld - > (Int,R ..
发布时间:2018-04-18 15:07:49 其他开发

为什么功能语言?

我在这里看到很多关于函数式语言和东西的讨论。你为什么要用“传统”语言来使用它?他们做得更好些什么?他们更糟糕的是什么?什么是理想的函数式编程应用程序? 解决方案 函数式语言使用与命令式和面向对象语言不同的范式。他们使用无副作用的函数作为语言的基本构建块。这使得许多事情变得更加困难(或者在大多数情况下与人们习惯的不同)。执行无副作用函数的顺序并不重要。例如,在Erlang中,这用于以非常透明 ..
发布时间:2018-04-18 15:07:43 其他开发

list.reverse不返回列表?

对于 list.reverse(),返回对象被命名为 None 。因此,当我调用 solution(k)时,此代码失败。有什么办法可以解决临时问题吗?或者我该怎么做? fCamel ='F' bCamel ='B' gap ='' k = ['F','','B','F'] def solution(格式): return((formation .index(bCamel) ..
发布时间:2018-04-18 15:07:38 Python

monad绑定(>> =)运算符更接近函数组合(链接)还是函数应用程序?

在很多文章中,我已经读过monad >> = 操作符是表示函数组合的一种方法。但对我来说,它更接近某种高级函数应用程序。 ($)::(a - > b) - > a - > b (>> =):: Monad m => m a - > (a - > m b) - > mb 对于构图,我们有 (> =>):: Monad m => (a - > m b) - ..

Haskell是否真的是纯粹的(任何处理系统外部输入和输出的语言)?

在涉及函数式编程的Monad之后,该特性实际上是否使语言变得纯粹,还是仅仅是另一种“摆脱监狱免费卡”来推断现实世界中的计算机系统,而不是黑板数学? 编辑: 这不是火焰诱饵,因为有人在这篇文章中说过,但真正的问题是我希望有人能够打倒我,并说,证明它是纯粹的。 另外,我正在考虑关于其他不太纯粹的功能性语言以及一些使用良好设计和比较纯度的面向对象语言。到目前为止,在我非常有限的FP世界 ..

什么是“n + k模式”为什么他们从Haskell 2010被禁止?

当阅读维基百科在Haskell 2010上的条目时,我偶然发现: - 仅使用前缀记法和n + k模式(不再在Haskell 2010中允许) 阶乘0 = 1 factorial(n + 1)=(*)(n + 1)(factorial n) “n + k模式”是什么意思?我想这是第二行,但我不明白这可能是错误的。任何人都可以解释那里有什么问题吗?为什么Haskell 2 ..
发布时间:2018-04-18 15:07:21 其他开发

Ruby是否执行尾部呼叫优化?

功能性语言导致使用递归来解决很多问题,因此其中很多都执行尾部呼叫优化(TCO)。作为该功能的最后一步,TCO会导致从另一个函数(或其本身,在这种情况下,此功能也称为尾递归消除,这是TCO的子集)对函数的调用,因为不需要新的堆栈帧,这可以减少开销和内存使用。Ruby显然已经从功能语言(lambdas,函数如map等等)中“借用了”一些概念,这些概念来自于函数式语言让我好奇:Ruby是否执行tail调 ..
发布时间:2018-04-18 15:07:16 其他开发

尽早放弃

提早终止弃牌的最佳方法是什么?作为一个简单的例子,假设我想总结一个 Iterable 中的数字,但是如果我遇到了我不期待的事情(比如奇数),我可能想要终止。这是第一个近似值 def sumEvenNumbers(nums:Iterable [Int]):Option [Int] = { nums.foldLeft(Some(0):Option [Int]){ case(Some(s), ..
发布时间:2018-04-18 15:07:13 其他开发