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 现在我的问题: >> =>符合这些法律,身份是f(a:A)= M [a] .unit(a)? 解决方法
你在这里的这个建设是
category的直接后果。
是的,他们确实符合。而他们所遵守的确是他们被称为克莱斯利的原因,因为克莱斯利箭号加上形式是monad(每个monad所引起的)的Kleisli category。这也是为什么单位被称之为:它是克莱斯利箭头组成的单位。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |