问题标签 [scalaz7]
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 - 使用仿函数(Scalaz7)提升一个采用隐式参数的函数
刚开始学习Scalaz。这是我的代码
我已经定义了一个函数(只是为了它)
我想抬起它,以便可以使用 Option、List 等容器来使用它。但是当我这样做时
它说error: could not find implicit value for evidence parameter of type scalaz.Monoid[A]
def addOptioned = Functor[Option].lift(addXY)
如何解除这些功能?
scala - 应用验证语法 scalaz + shapeless 2.0
我正在尝试将此Applicative 验证语法示例转换为 Scalaz 7 + Shapeless 2.0
首先是Scalaz语法
到目前为止一切顺利,现在进入 Shapeless 2.0
现在最后一点
所有编译,但当一个人尝试使用它时,例如:
我收到一个错误
任何想法,指针将不胜感激
scala - 以集合为参数的 scala 提升函数
我有一个接受函数的类f: Option[Seq[Option[A]]] => Option[A]]
我希望这个类的用户能够不必担心Option
框架。所以用户会传递一个函数g: Seq[A] => A
,并且在后台我会提升该函数。起重部分是我无法做到的。
这就是我所拥有的(使用optionInstance.lift
scalaz):
但是,这不会编译,因为电梯操作员正在返回Option[Seq[A]]
而不是Option[Seq[Option[A]]]
. 如何才能做到这一点?
scalaz7 - Scalaz Bind.bind 在哪里实现?
我很好奇该方法在哪里scalaz.Bind.bind
实现?谢谢
我正在查看 7.3.0-SNAPSHOT 源。
scala - 遍历 Scalaz 树
我正在尝试了解 scalaz 树结构并且遇到了一些困难!
首先我定义了一棵树:
到目前为止,我已经使用TreeLoc研究了如何找到与某个谓词匹配的第一个元素。例如,查找值为 3 的第一个节点:
我的下一个挑战是尝试找到与某个谓词匹配的所有节点。例如,我想找到所有叶节点(使用TreeLoc和isLeaf应该很容易)。不幸的是,我一生都无法弄清楚如何走树来做到这一点。
编辑:对不起,我认为我最初的问题不够清楚。需要明确的是,我想以这样一种方式遍历树,以便我可以获得有关节点的信息。Flatten、foldRight 等只允许我对 [Int] 进行操作,而我希望能够对 Tree[Int](或 TreeLoc[Int])进行操作。
scala - 在 Scalaz 7 中使用 EitherT 时为 Monad[Future] 指定执行上下文
我一直在尝试整理一些使用多个函数的代码,这些函数都返回类型 Future[Either[String, A]]。
由于必须在 Future 内部然后在 Either 内部达到峰值才能获取值的问题,这些函数不能整齐地组合在 for 理解中。在使用了 EitherT monad 转换器后,我找到了一个我喜欢使用 EitherT 的解决方案,尽管必须添加 EitherT 并且在获得最终结果时必须额外调用“运行”的步骤并不理想。
我的解决方案如下,但我不满意的一件事是您需要创建一个Monad[Future]
才能使 anyT 工作,这需要一个执行上下文。没有明显的方法可以做到这一点。我所做的是在我的代码范围内有一个隐式执行上下文,并创建一个 Future Monad,我将相同的执行上下文传递给它,以便两段代码使用相同的。这似乎有点混乱,容易出错。
请让我知道是否有更好的方法。
scala - Monad IO catchAll 运算符的行为
我正在学习 scalaZ 的 monad IO,但我无法理解 catchAll 和 catchSome 运算符的工作原理。我期待看到类似 RxJava 的 onError 或 onErrorrResumeNext 的行为,但没有捕获可抛出的对象,它只是破坏测试并抛出 NullPointerException ..
这是我的两个例子
并抓住一些例子
知道我在做什么错吗?
问候
scala - 展开 Identity monad 的值
我一直在玩 scalaz,但我被困在一个看似微不足道的问题上。我在玩 Reader 和 Kliesli monad,发现自己遇到了这样的事情:
尽职尽责的回应:
我现在要做的是从 Identity monad 中解开 Int ,因为我应该使用 ?? 运算符,具有此签名:
我应该传递的第一个参数是一个默认值,一个名为 Int 的调用(正如 Brian McCutchon 所指出的):
在继续前进之前,我想了解我在这里缺少什么。感谢 EDITED 解决了我对没有参数功能的按名称调用的困惑。耻辱。
scala - 使用复杂(双重)操作在 scalaz 中合并地图
我正在使用映射将某些值与元组 (Int, Double) 相关联,其中 int 是它们出现的顺序和它们显示的次数的两倍(它不是,但是使用 int 和 double 来区分这样更清晰)
棘手的部分是我想为元组的每个元素使用不同的幺半群,对于 int 我想保持最小值,记住第一次出现,而对于双倍我想使用加法幺半群所以对于现有的键我们有:
对于新密钥,我们有:
我找不到这样做的方法,我显然可以使用加法 monoid,我可以使用 minval ,但我看不到如何组合它们。任何帮助表示赞赏!谢谢
scala - 将多个转换与状态 Monad 链接起来
我开始使用 state monad 来清理我的代码。我已经解决了我的问题,我处理了一个名为 CDR 的事务并相应地修改了状态。使用此功能执行状态更新,对于单个事务来说它工作得非常好。
这是一个例子:
我现在要做的是在迭代器上链接许多事务。我发现了一些效果很好但状态转换不需要输入的东西(通过 RNG 改变状态)
我没有成功地尝试适应这一点,但我无法让他们类型签名匹配,因为我的状态函数需要 cdr(事务)输入
谢谢