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

Scala – 功能组成,Kleisli箭和Monadic法则

发布时间:2020-12-16 09:31:59 所属栏目:安全 来源:网络整理
导读:看完这本 article后,我明白 = (Kleisli箭头)只是组成函数的更高阶函数,返回“monadic值”。例如: val f: A = M[B] = ...val g: B = M[C] = ...val h: A = M[C] = f = g // compose f and g with Kleisli arrow 它看起来像一个简单的“简单”函数的组合(即
看完这本 article后,我明白> => (Kleisli箭头)只是组成函数的更高阶函数,返回“monadic值”。例如:

val f: A => M[B] = ...
val g: B => M[C] = ...

val h: A => M[C] = f >=> g // compose f and g with Kleisli arrow

它看起来像一个简单的“简单”函数的组合(即返回简单值的纯函数):

val f: A => B = ...
val g: B => C = ...

val h = f andThen g; // compose f and g

?

现在我猜这个“简单”的作品,符合某些法律

>身份:f和T g g g和g,然后f = g代表身份函数:f [A](a:A):A = a
>相关性:(f1和Then f2),然后f3 == f1和Then(f2和Then f3)

现在我的问题:

>> =>符合这些法律,身份是f(a:A)= M [a] .unit(a)?
>我们可以从这些法律中得出一元法吗?这些法律和一元法是否相当?

解决方法

你在这里的这个建设是 category的直接后果。

是的,他们确实符合。而他们所遵守的确是他们被称为克莱斯利的原因,因为克莱斯利箭号加上形式是monad(每个monad所引起的)的Kleisli category。这也是为什么单位被称之为:它是克莱斯利箭头组成的单位。
是的,他们可以派生。使用变换(f = = g)x = f =< (g x)(其中< =< is和Then,=<<可能类似于Scala中的翻转(bind)。推导的确切步骤可以在here找到。

(编辑:李大同)

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

    推荐文章
      热点阅读