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)两者而言,法律规定,将一个国家或者一个国家的“地图”应用于联合的结果等同于身份功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |