【发布时间】:2013-09-27 03:07:27
【问题描述】:
我尝试为无形的HList 到point 和bind 实现定义一个Monad (scalaz)。第一个问题是HList trait 不是类型构造函数,但这可以用 lambdas 类型解决,point 很简单,但我找不到bind 的正确实现,我想我需要一些函数输入Poly1 和一些Aux/Mapper 技巧,但无形的那一面对我来说仍然是黑暗的。 HList 的所有函数都是 Monad,比如简单的 List,那么可以从 Scalaz 中实现一个吗?
【问题讨论】:
-
这在直接意义上是不可能的,但这是一个有趣的问题。参见例如my answer here(涉及应用函子而不是单子)、Shapeless 中的this related example,以及我的(未回答的)问题here。
-
ScalaZ 对我来说仍然是未知领域,但这可能包含您需要的方法和互操作性:Shapeless Contrib
-
mandubian (stackoverflow.com/users/601296/mandubian) 写了一篇关于 HList 的幺半群的博文:mandubian.com/2014/07/29/hmonoid,你可能会感兴趣。
标签: scala types monads scalaz shapeless