问题标签 [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.
scala - if (p(f(a), f(b)) a else b 的功能等价物
我猜想必须有一种更好的功能方式来表达以下内容:
所以在这个例子中f == foo
和p == _ < _
. scalaz 中肯定有一些高超的聪明才智!我可以看到使用BooleanW
我可以写:
但我确信我能够编写一些只引用a和b一次的代码。如果这存在,它一定是Function1W
和其他东西的某种组合,但 scalaz 对我来说有点神秘!
编辑:我想我在这里问的不是“我怎么写这个?” 但是“这样一个函数的正确名称和签名是什么?它与我还不了解的 FP 东西有什么关系,比如 Kleisli、Comonad 等?”
scala - scalaz中的函数语法谜题
在观看了Nick Partidge关于派生scalaz的演示文稿之后,我开始查看这个示例,这真是太棒了:
我试图了解该<|*|>
方法在做什么,这是源代码:
好的,这相当令人困惑(!) - 但它引用了<**>
这样声明的方法:
所以我有几个问题:
- 为什么该方法似乎采用了一种类型参数 ( ) 的更高种类
M[B]
的类型,但可以传递 aValidation
(它有两个类型参数)? - 语法
(_: A, _: B)
定义了第二种(A, B) => Pair[A,B]
方法所期望的功能:在失败情况下 Tuple2/Pair 发生了什么?看不到元组!
scala - Scalaz Kleisli 问题
scalaz库中有一个trait
叫做Kleisli。看代码:
调用k
值为 2 的函数给出:
我的问题是:我将如何使用 Scalaz 来组合 f 和 g 来获得一个函数 m ,这样 m(2) 的输出将是:
这甚至可能吗?
scala - Scalaz:请求 Cokleisli 组合的用例
这个问题不是诱饵!很明显,我最近一直在研究Scalaz。我试图理解为什么我需要图书馆提供的一些功能。这里有一些东西:
我在我的函数中放了一些 println 语句来看看发生了什么(顺便说一句:如果我试图避免这样的副作用,我会怎么做?)。我的职能是:
然后我通过一个cokleisli将它们组合起来并传入一个NEL[Int]
这个打印什么?
RES 值是最终 NEL 中 (String) 元素的字符数。我想到两件事:
- 我怎么能从所涉及的方法签名中知道我的 NEL 将以这种方式减少?(我根本没想到结果)
- 这有什么意义?可以为我提炼出一个相当简单且易于理解的用例吗?
这个问题是对像retronym这样可爱的人的一个隐晦的请求,以解释这个强大的库实际上是如何工作的。
scala - 使用 Scalaz 将选项列表转换为列表选项
我想将 aList[Option[T]]
转换为 a Option[List[T]]
。函数的签名类型是
预期的行为是将仅包含Some
s 的列表映射到Some
包含 elements 中的元素列表的列表Some
。另一方面,如果输入列表至少有一个None
,那么预期的行为就是返回None
。例如:
没有 scalaz 的示例实现将是:
我记得在某处看到过类似的示例,但使用 Scalaz 来简化代码。它会是什么样子?
一个更简洁的版本,使用 Scala2.8 PartialFunction.condOpt
,但仍然没有 Scalaz:
scala - 我可以将这个异步 Java 网络 API 转换为一元表示(或其他惯用的表示)吗?
我已经获得了一个 java api,用于使用基于回调的样式连接到专有总线并通过专有总线进行通信。我目前正在 scala 中实现一个概念验证应用程序,并且我正在尝试弄清楚如何生成一个稍微更惯用的 scala 界面。
一个典型的(简化的)应用程序在 Java 中可能看起来像这样:
在 scala 中,我显然可以定义从 (T => Unit) 到 IListener 的隐式转换,这无疑使事情更易于阅读:
看到这个让我想起了 scalaz promises 和 f# async 工作流。
我的问题是这样的:
我可以将其转换为理解或类似的惯用语吗(我觉得这也应该很好地映射到演员)
理想情况下,我希望看到类似的内容:
scala - 如何在 Scala 中组合选项值?
我希望能够对Scalaf: (T,T) => T
中的值应用操作。Option[T]
我希望结果是None
如果两个值中的任何一个是None
.
更具体地说,我想知道是否有更短的方法来执行以下操作:
我试过(x zip y) map {case (u,v) => f(u,v)}
了,但结果Iterator[T]
不是Option[T]
.