Monads之规则

来源:互联网 发布:visio for mac 2016 编辑:程序博客网 时间:2024/05/01 16:28



The associative law

组合规则

FP IN SCALA

case class Order(item: Item, quantity: Int)case class Item(name: String, price: Double)val genOrder: Gen[Order] = for {name <- Gen.nextStringprice <- Gen.nextDoublequantity <- Gen.nextInt} yield Order(Item(name, price), quantity)

可以组合

val genItem: Gen[Item] = for {name <- Gen.nextStringprice <- Gen.nextDouble} yield Item(name, price)
val genOrder: Gen[Order] = for {item <- genItemquantity <- Gen.nextInt} yield Order(item, quantity)

Kleisli composition

源码解释

def compose[A,B,C](f: A => M[B], g: B => M[C]): A => M[C]
compose(compose(f, g), h) == compose(f, compose(g, h))
类似于结合律,前提是参数的顺序不变


The identity laws
跟Monadic的zero一样的道理

0 0
原创粉丝点击