问题标签 [scalaz]

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 投票
6 回答
1054 浏览

scala - if (p(f(a), f(b)) a else b 的功能等价物

我猜想必须有一种更好的功能方式来表达以下内容:

所以在这个例子中f == foop == _ < _. scalaz 中肯定有一些高超的聪明才智!我可以看到使用BooleanW我可以写:

但我确信我能够编写一些只引用ab一次的代码。如果这存在,它一定是Function1W和其他东西的某种组合,但 scalaz 对我来说有点神秘!

编辑我想我在这里问的不是“我怎么写这个?” 但是“这样一个函数的正确名称和签名是什么?它与我还不了解的 FP 东西有什么关系,比如 Kleisli、Comonad 等?”

0 投票
1 回答
5135 浏览

scala - scalaz中的函数语法谜题

在观看了Nick Partidge关于派生scalaz的演示文稿之后,我开始查看这个示例,这真是太棒了:

我试图了解该<|*|>方法在做什么,这是源代码:

好的,这相当令人困惑(!) - 但它引用了<**>这样声明的方法:

所以我有几个问题:

  1. 为什么该方法似乎采用了一种类型参数 ( ) 的更高种类M[B]的类型,但可以传递 a Validation(它有两个类型参数)?
  2. 语法(_: A, _: B)定义了第二种(A, B) => Pair[A,B]方法所期望的功能:在失败情况下 Tuple2/Pair 发生了什么?看不到元组!
0 投票
1 回答
1157 浏览

scala - Scalaz Kleisli 问题

scalaz库中有一个trait叫做Kleisli。看代码:

调用k值为 2 的函数给出:

我的问题是:我将如何使用 Scalaz 来组合 f 和 g 来获得一个函数 m ,这样 m(2) 的输出将是:

这甚至可能吗?

0 投票
2 回答
1877 浏览

scala - Scalaz:请求 Cokleisli 组合的用例

这个问题不是诱饵!很明显,我最近一直在研究Scalaz。我试图理解为什么我需要图书馆提供的一些功能。这里有一些东西:

我在我的函数中放了一些 println 语句来看看发生了什么(顺便说一句:如果我试图避免这样的副作用,我会怎么做?)。我的职能是:

然后我通过一个cokleisli将它们组合起来并传入一个NEL[Int]

这个打印什么?

RES 值是最终 NEL 中 (String) 元素的字符数。我想到两件事:

  1. 我怎么能从所涉及的方法签名中知道我的 NEL 将以这种方式减少?(我根本没想到结果)
  2. 这有什么意义?可以为我提炼出一个相当简单且易于理解的用例吗?

这个问题是对像retronym这样可爱的人的一个隐晦的请求,以解释这个强大的库实际上是如何工作的。

0 投票
5 回答
12878 浏览

scala - 使用 Scalaz 将选项列表转换为列表选项

我想将 aList[Option[T]]转换为 a Option[List[T]]。函数的签名类型是

预期的行为是将仅包含Somes 的列表映射到Some包含 elements 中的元素列表的列表Some。另一方面,如果输入列表至少有一个None,那么预期的行为就是返回None。例如:

没有 scalaz 的示例实现将是:

我记得在某处看到过类似的示例,但使用 Scalaz 来简化代码。它会是什么样子?


一个更简洁的版本,使用 Scala2.8 PartialFunction.condOpt,但仍然没有 Scalaz:

0 投票
1 回答
1535 浏览

scala - 如何获得适用于符号方法的 scalaz IDEA 实时模板?

0 投票
2 回答
165 浏览

scala - 在 Set 但不是 List 上使用 scalaz 的 MA 方法的编译问题

0 投票
2 回答
631 浏览

scala - 我可以将这个异步 Java 网络 API 转换为一元表示(或其他惯用的表示)吗?

我已经获得了一个 java api,用于使用基于回调的样式连接到专有总线并通过专有总线进行通信。我目前正在 scala 中实现一个概念验证应用程序,并且我正在尝试弄清楚如何生成一个稍微更惯用的 scala 界面。

一个典型的(简化的)应用程序在 Java 中可能看起来像这样:

在 scala 中,我显然可以定义从 (T => Unit) 到 IListener 的隐式转换,这无疑使事情更易于阅读:

看到这个让我想起了 scalaz promises 和 f# async 工作流。

我的问题是这样的:

我可以将其转换为理解或类似的惯用语吗(我觉得这也应该很好地映射到演员)

理想情况下,我希望看到类似的内容:

0 投票
6 回答
14552 浏览

scala - 如何在 Scala 中组合选项值?

我希望能够对Scalaf: (T,T) => T中的值应用操作。Option[T]我希望结果是None如果两个值中的任何一个是None.

更具体地说,我想知道是否有更短的方法来执行以下操作:

我试过(x zip y) map {case (u,v) => f(u,v)}了,但结果Iterator[T]不是Option[T].

0 投票
1 回答
215 浏览

scala - Scalaz 中的隐式参数