问题标签 [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 - Scala中方法的条件调用
我在我的代码中多次发现这种模式:
我想知道是否有一种语法上更令人愉悦的方式来编写上面的代码,尤其是避免object
变量的重复。就像是:
不幸的是,上面的行失败了,因为类型推断需要一个参数类型(_.callAMethod)
。
我现在最好的方法是:
不是很好,因为我必须声明一个,implicit val
但如果有几个链式调用,这会得到回报:
有没有人有更好的主意?我在这里错过了一些 Scalaz 魔法吗?
scala - 帮助我理解这个 Scala 代码:scalaz IO Monad andimplicits
这是对这个问题的跟进。
这是我试图理解的代码(来自http://apocalisp.wordpress.com/2010/10/17/scalaz-tutorial-enumeration-based-io-with-iteratees/):
这段代码是这样使用的(我假设import io._
是隐含的)
我现在正试图理解这个implicit val IOMonad
定义。这是我的理解。这是一个scalaz.Monad,所以它需要定义pure
和bind
抽象scalaz.Monad
特征的值。
pure
获取一个值并将其转换为包含在“容器”类型中的值。例如,它可能需要一个Int
并返回一个List[Int]
。这看起来很简单。
bind
接受一个“容器”类型和一个将容器持有的类型映射到另一种类型的函数。返回的值是相同的容器类型,但它现在拥有一个新类型。一个示例是使用将s 映射到s的函数将aList[Int]
映射到 a 。和差不多吗?List[String]
Int
String
bind
map
的实施bind
是我卡住的地方。这是代码:
这个定义接受IO[A]
并将其映射到使用一个接受并返回一个IO[B]
的函数。我想要做到这一点,它必须用来“压平”结果(对吗?)。A
IO[B]
flatMap
= IO { ... }
是一样的
我认为?
该implicitly
方法查找实现的隐式值(值,对吗?)Monad[Function0]
。这个隐含的定义从何而来?我猜这是来自implicit val IOMonad = new Monad[IO] {...}
定义,但我们现在处于该定义之内,事情变得有点循环,我的大脑开始陷入无限循环:)
此外,bind
( () => a.unsafePerformIO
) 的第一个参数似乎是一个不带参数并返回 a.unsafePerformIO 的函数。我应该怎么读这个?bind
将容器类型作为其第一个参数,所以可能() => a.unsafePerformIO
解析为容器类型?
scala - 我如何使用名称作为应用程序?
Name
是一个Monad
,因此Applicative
也是一个。为什么这段代码不起作用?我是否需要添加任何类型注释才能使其工作?谢谢!
scala - 使用带有 scalaz 的视图边界
我通过将现有类转换为使用Monoid特征来首次涉足 scalaz。我想要实现的是在我的类类型参数上设置一个视图绑定,以确保它只能用于可以隐式转换为 Monoid 的类型。因此,我的(简化的)类定义是:
编译这个简单的例子会产生编译器错误:
以前,此视图绑定是针对我自己的自定义特征定义的,并通过从 T 到特征的隐式转换来定义,并且效果很好。
现在我已经将它转换为scalaz,我错过了什么?
谢谢,克里斯
scala - Scalaz 验证失败的映射
这将返回一个Validation[NumberFormatException, Int]
. 有没有办法我可以在失败端(例如toString
)应用一个函数来获得一个Validation[String, Int]
?
scala - 字符串被视为 Monoid
给定一个像这样或那样的签名:
假设 A 是Char
,有没有办法得到 aString
而不是 a List[Char]
?
String
不接受类型参数,所以我认为这是不可能的。下一个最佳选择是什么?现在,我mkString
在结果上使用,但感觉不是最佳的。
我认为String
是一个带有零 ""
和附加 +
的幺半群......
scala - Scalaz 的 traverse_ 与 IO monad
我想使用 IO 单子。
但是此代码不适用于大文件。我收到了 StackOverflowError。我尝试了该-DXss
选项,但它引发了同样的错误。
我该怎么做?
我写了输出所有元素的Iteratee。
这也是同样的结果。
我认为是由 IO 实现引起的。
generics - 在 Scala 中,是否有减少泛型类型数量的简写?
我想调用 Scalaz 的pure
方法将值放入 State monad。以下作品:
我还可以消除类型别名(感谢 Scalaz 的 Pure.scala):
但这非常笨拙。有没有更短的方法来合成这样的类型?就像函数文字的占位符语法一样,有没有类似的东西:
scala - Scalaz 状态单子示例
我还没有看到很多scalaz state monad的例子。有这个例子,但很难理解,而且似乎只有另一个关于堆栈溢出的问题。
我将发布一些我玩过的例子,但我欢迎更多的例子。另外,如果有人可以提供有关为什么使用 , 和 的示例init
,那就modify
太好了。put
gets
编辑:这是关于状态单子的精彩 2 小时演示。
scala - 按键合并地图
假设我有两张地图:
我想按键合并这些映射,应用一些函数来收集值(在这种特殊情况下,我想将它们收集到一个序列中,给出:
感觉应该有一个很好的,惯用的方式来做到这一点。