问题标签 [functional-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
99 浏览

java - FunctionalJava 应用程序在堆栈跟踪中使用 Stream 引发 StackOverflowError

FunctionalJava 应用程序在堆栈跟踪中使用 Stream 引发 StackOverflowError,但该应用程序不(看似)使用流。可能是什么原因?

0 投票
2 回答
195 浏览

java - 未来事件/Java 类完成后发生动作的模式名称

我目前有一个名为 Promise 的类,其工作方式如下:

  1. 它具有未来价值
  2. 它总是可以接受使用未来值作为参数的后续操作
  3. 当值完成时,函数队列启动
  4. 未来完成后添加的任何功能同步发生

所以这似乎是我们在 Java 中使用的函数式编程的设计模式。重要的是我们可以对延迟事件进行菊花链式连接,据我了解,这是 C# 3.0 语言中更多内置的功能,但您必须与 Java 类一起破解。不幸的是,第一,我不知道有比“承诺”或“未来”更好的名称,这似乎具有误导性,因为重点更多的是“DelayedCallStack”而不是手头的价值,第二,我不知道除了编写我们自己相当复杂的 Promise 类之外,还有其他方法可以做到这一点。理想情况下,我想把它从功能性 Java 库中提取出来,但到目前为止,我还没有理解这个概念。

注意 Java 甚至没有为带有参数的异步回调提供语言/库支持,这是我对能够找到它感到如此悲观的原因之一。

那么,这种模式是什么,可以在库中实现吗?

0 投票
1 回答
94 浏览

java - 折叠选项,而不是 `if maybeT.isNone()`

这是一个与为什么 Option 没有折叠方法类似的问题?,但对于功能-java。

如果选项为无,我想执行一些副作用。除了 有什么我可以使用的if maybeT.isNone()吗?

我的思路是这样的Option<B> optionA.fold(Effect<Unit> none, F<A, B> some)

有什么已经存在的东西吗?

0 投票
2 回答
368 浏览

java - 如何构造函数式Java TreeMap?

我刚开始使用FunctionalJava 库并想使用不可变的TreeMap。但是,当使用用户定义的类或接口时,我不知道如何创建一个空的开始。

所有示例都使用预定义类型,如 Ord.stringOrd。我完全不明白如何创建正确的 Ord<IAddress>。

有人可以解释如何做到这一点吗?

谢谢,德里克

0 投票
2 回答
224 浏览

java - JVM JIT 是否优化了几乎相等的新对象的创建?

我正在阅读函数式 Java 库的源代码并注意到这一点:

我想知道为什么他们不总是返回一个单例参数,特别是因为 None 的相等实现:

所以我在 Functional Java 的论坛上进行了搜索,我发现了这个问题和答案:

是否可以将其设置为不会为每次调用 none 创建一个新的 None ,我们可以在所有情况下使用单个对象来表示 None 吗?

不,但是,谁在乎呢?如今,JIT 优化器可以很好地处理这些事情。

我的问题是 JIT 优化器如何以不需要返回单例的方式处理这个问题。我知道对象创建很便宜,但我认为单例会更便宜,在这种情况下它不会增加任何复杂性。

0 投票
2 回答
105 浏览

functional-java - 函数式 Java:如何构造一个空列表?

我希望构建类型的空列表List<String>。我能想出的满足类型检查器的最好的方法是:

这是非常丑陋的。有更好的吗?

0 投票
2 回答
2565 浏览

java - 在 Java 中合并两个列表

我有两个具有相同数量参数的列表,我想要一种优雅组合它们的方式(不是concatenate)。

这是我目前(不太好)的做法(只是为了让你知道我想要做什么)。

是否有一些现有的助手可以让我做类似的事情:

例如,假设我有两个整数列表,并且我有函数f(x, y) = x * y)

我希望结果列表是一个列表 (x[i] * y[i])

具体来说,

谢谢

0 投票
2 回答
297 浏览

java - 范围管理 - 有状态的 IO Monad?

我正在玩函数式编程,尤其是函数式 Java。我已经成功实现了我的 IO Monad 版本,并且正在为我的核心编写 IO 操作。它基本上是将对象序列化为 Xml 文件(对象类型扩展了自定义 XmlWritable 接口)。

不幸的是,为了做到这一点,需要创建一个 OutputStream 实例和一个 XmlSerializer 实例。OutputStream 的范围比 XmlSerializer 的范围更广,这意味着我认为能够在我的 IO monad 中正确处理这两个生命周期的唯一方法是将它们放在一个元组中,在使用 XmlSerializer 编写后关闭 OutputStream .

这会导致代码繁重而丑陋(Java 6 绝对不是最好的):

有没有更惯用的为什么要在函数式编程中处理我的用例?

潜伏着,我发现了 State Monad……但我有点害怕看到如果我在函数式 Java 中的 IO Monad 之上应用 State Monad 会发生什么。

0 投票
3 回答
496 浏览

java - 如何使用函数式编程进行字符串操作?

我正在编写一个函数,我基本上一遍又一遍地做同样的事情。我有下面列出的功能

这是我的服装尺寸功能:

我试图弄清楚如何用更少的代码完成这项工作。我已经读过,通过函数式编程,您可以执行诸如将函数传递给其他函数的参数之类的事情。在网上做了一些阅读之后,我想我想做这样的事情,但我不确定如何或最好的方法是什么。

我在这里阅读了一些关于堆栈溢出的内容,并且我看到人们提到使用命令模式、FunctionalJava 或 LambdaJ 来尝试在 Java 中逼近这个特性。我已经阅读了这两个库的文档并阅读了关于命令模式的 Wikipedia 文章,但我仍然不确定如何使用其中的任何一个来解决我的特定问题。有人可以向我解释一下吗?作为从未做过任何函数式编程的人,这有点令人困惑。

0 投票
1 回答
71 浏览

java - 函数式java编译错误

从这里: http: //functionaljava.googlecode.com/svn/artifacts/3.0/demo/bgga/Option_filter.java

问:我会编译这个例子吗?如果没有办法:放置现在工作示例的目的是什么?

我看不到 Java (5-7) 编译它的任何机会,例如: