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

Scala comonads; Comonad法律?

发布时间:2020-12-16 10:03:05 所属栏目:安全 来源:网络整理
导读:因此,鉴于comonad的这种编码(见下文),上面的comonad定律是否正确?由于某种原因,我不认为他们是从他们那里看到的,而且我知道从那里出错会导致只有糟糕的道路,所以我很欣赏你的推动,提示,帮助,回答你的问题. /** * note: I think these are right * Comonad L
因此,鉴于comonad的这种编码(见下文),上面的comonad定律是否正确?由于某种原因,我不认为他们是从他们那里看到的,而且我知道从那里出错会导致只有糟糕的道路,所以我很欣赏你的推动,提示,帮助,回答你的问题.

/**
       * note: I think these are right
       * Comonad Laws
       * 
       * (i)   counit(cojoin(m))      == m
       * 
       * (ii)  >>(counit(m))(cojoin)  == m
       * 
       * (iii) cojoin(cojoin(m))      == >>(cojoin(m))(cojoin)
       * 
       */

        trait Comonad[M[_]] {

           // map
           def >>[A,B](a: M[A])(f: A => B): B

          // extract | coeta 
          def counit[A](a:M[A]): A

          // cobind | =<< | extend
          def coflatMap[A,B](ma:M[A])(f: M[A] => B): M[B]

          // coflatten | comu
         def cojoin[A](a: M[A]): M[M[A]]
        }

解决方法

你快到了. (i)和(iii)都是正确的,但(ii)是错误的.你可以发现错误,因为(ii)输入不好:对于>>(counit(m)参数counit(m)有A型而不是M [A].

您的运营的正确法律是:

* (i)   counit(cojoin(m))      == m
   * 
   * (ii)  >>(cojoin(m))(counit)  == m
   * 
   * (iii) cojoin(cojoin(m))      == >>(cojoin(m))(cojoin)

因此,对于(i)和(ii)两者而言,法律规定,将一个国家或者一个国家的“地图”应用于联合的结果等同于身份功能.

(编辑:李大同)

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

    推荐文章
      热点阅读