问题标签 [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 - 如何给 scalaz 的 Functor 赋予具有上下文绑定的更高种类的类型?
我想为以下类定义一个 Functor 实例:
这可能吗 ?或者,可以定义一个 'BoundedFunctor 特征吗?像这样的东西:
这是我的励志示例:如何为 TypedConverter 类定义 Functor。
这种更高种类的类型对其类型参数有两个约束,第一个是 Manifest,因为它用于“canConvert”的实现,第二个是 AnyRef,因为 unmarshal 需要一个 Object。
实际上我正在尝试创建一个 InvariantFunctor,但 Functor 会开始。
scala - 我可以使用 monad 转换器来简化这个组合吗?
假设我有
我想得到类型的结果,VS[Option[B]]
但如果v
是 a Success(None)
,结果也应该是 a Success(None)
。这是一个例子:
然后:
成功案例是:
空壳是:
有没有“更好”的方式来做到这一点(可能涉及 kleisli 组合或单子变换器)?
scalaz - 验证是 SemiGroup/Monoid :使用 |+| 不工作
我的印象是 Validation 可以用作 Monoid/SemiGroup 我在 scala 2.9.2 和 scalaz 7 快照下尝试了以下代码
我期待一个Success(3)
然后
failureA |+| failureB
res1: scalaz.Validation[java.lang.String,Nothing] = Failure(AB)
按预期给出
和
success1 |+| failureA
按预期失败
为什么|+|
onSuccess
不起作用?这是一个错误还是我在这里错过了什么
scala - 文档中对 ->>>[_, _ ] 和 ~> 的引用
我在哪里可以找到 Lang 规范或任何博客中的参考资料如何阅读这些结构:
或者
如果它是类型名称 - 那么代码 F[A] ->>> F[B]
不应该是可编译的,但它是
scala - 使用 Scalaz 在 Scala 中进行验证的异步计算
在编写一个完全异步的库来访问远程服务(使用 Play2.0)时,我正在使用Promise
并Validation
创建非阻塞调用,该调用具有一次显示失败和有效结果的类型。
Promise
来自 Play2-scala,其中Validation
来自 scalaz。
所以这里是此类函数的示例类型
- F ::
A => Promise[Validation[E, B]]
- G ::
B => Promise[Validation[E, C]]
到目前为止,很好,现在如果我想编写它们,我可以简单地使用Promise
呈现 a的事实flatMap
,所以我可以用一个理解来完成
好的,我在这里解决了我的问题,因为我没有Validation
在理解范围内重用结果。所以如果我想重用x
in g
,我可以这样做
很公平,但是这种样板会一遍又一遍地污染我的代码。这里的问题是我有一种像M[N[_]]
.
在这个阶段,f°编程中是否有任何结构可以通过轻松跳过secong级别来使用这种结构:
现在,下面是我如何实现类似的东西。
我创建了一种 Monadic 结构,将两个层次合二为一,让我们说用两种方法ValidationPromised
对类型进行拉皮条:Promise
这让我可以做这样的事情
正如我们所看到/~~>
的,它非常类似于flatMap
但跳过了一个级别。问题在于冗长(这就是为什么 Scala 中存在“for-comprehension”而 Haskell 中存在“do”的原因)。
另一点,我也有/~>
,map
但在第二级(而不是 Valid 类型 -第三级)
所以我的第二个问题是前一个问题的推论......我是否正在通过这种结构来实现可持续的解决方案?
抱歉这么久
scala - Scalaz 和 REPL
我已成功将 scalaz 添加到 scala repl (2.9.1) 并尝试了一些没有问题的基本示例,例如:
List(10, 20, 30) <*> (List(1, 2, 3) map ((_: Int) * (_: Int)).curried)
或者
List(10, 20, 30) |@| List(1, 2, 3) apply (_ * _)
但是,map 的别名,即 °,如本示例所示 http://scalaz.github.com/scalaz/scalaz-2.9.1-6.0.4/doc.sxr/scalaz/example/ExampleApplicative.scala.html #23569
不被认可,我得到了一个
error: value ° is not a member of List[Int]
也许我使用了错误的字符?上面示例中的复制粘贴会吞噬特殊字符...
任何指导将不胜感激!:)
scala - Scala 中的 Comonad 示例
什么是 Comonad,如果可以用 Scala 语法描述的话。我找到了 scalaz库实现,但不清楚它在哪里有用。
scala - 展平嵌套的 Scalaz 验证
我对 scalaz 还很陌生,我已经从验证开始。
我有一些表单的验证功能:
然后我使用 applicative 样式来组合多个验证,然后调用另一个也返回验证的函数:
在哪里,
但是,当调用上面的结果类型是:
我可以通过使用两个函数在结果上调用 fold 来解压它,第一个只是将 NEL 作为失败传播,第二个只是传播其参数:
这有效并返回正确的类型和结果。但是,它感觉不是正确的解决方案,所以我必须遗漏一些东西。我需要做些什么来避免最后出现这种可怕的折叠?
scala - 在 scala 中应用几个字符串转换
我想在 scala 中以功能方式对字符串执行几个有序和连续的 replaceAll(...,...) 。
什么是最优雅的解决方案?斯卡拉兹欢迎!;)