加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala(猫或scalaz)中转换仿函数(F [A] => G [A])

发布时间:2020-12-16 18:09:11 所属栏目:安全 来源:网络整理
导读:在Cats或 Scalaz中是否存在可在不同容器类型之间进行转换的类型类?例如 选项?尝试 尝试?未来 尝试?或 选项?名单 似乎FunctionK /? / NaturalTransformation可能是我正在寻找的,但没有为它们定义任何实例,我不知道为什么. 解决方法 自然变换是您正在寻找的.
在Cats或 Scalaz中是否存在可在不同容器类型之间进行转换的类型类?例如

>选项?>尝试
>尝试?>未来
>尝试?>或
>选项?>名单

似乎FunctionK /?> / NaturalTransformation可能是我正在寻找的,但没有为它们定义任何实例,我不知道为什么.

解决方法

自然变换是您正在寻找的.它们定义了仿函数之间的态射(在本例中,List [A]和Option [A]类型构造函数).您可以使用?>定义一个. Scalaz中的“运算符”:

def main(args: Array[String]): Unit = {
  val optionToList = new (Option ~> List) {
    override def apply[A](fa: Option[A]): List[A] = fa.toList
  }

  println(optionToList(Some(3)))
  println(optionToList(None))
}

产量:

List(3)
Nil

?>特性天然转化的合成糖[-F [_],G [_]]:

/** A universally quantified function,usually written as `F ~> G`,* for symmetry with `A => B`.
  */
trait NaturalTransformation[-F[_],+G[_]] {
  self =>
  def apply[A](fa: F[A]): G[A]

  // Abbreviated for the answer
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读