首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏函数式编程语言及工具

    Scalaz(14)- Monad:函数组合-Kleisli to Reader

    Kleisli就是函数A=>M[B]的类封套,从Kleisli的类定义可以看出:scalaz/Kleisli.scala 1 final case class Kleisli[M[_], A, B](run / 5 def kleisli[M[_], A, B](f: A => M[B]): Kleisli[M, A, B] = Kleisli(f) 6 ... ` */ 2 def >=>[C](k: Kleisli[M, B, C])(implicit b: Bind[M]): Kleisli[M, A, C] = kleisli((a: A) => Kleisli[M, C, B] = k >=> this 12 13 def compose[C](k: Kleisli[M, C, A])(implicit b: Bind[M]): Kleisli 函数组合操作 7 import Kleisli._ 8 val kfg = kleisli(kf) >=> kleisli(kg) //> kfg : scalaz.Kleisli

    93950发布于 2018-01-05
  • 来自专栏函数式编程语言及工具

    深圳scala-meetup-20180902(2)- Future vs Task and ReaderMonad依赖注入

    scala的函数式组件库cats提供了一个Kleisli类型,reader monad就是从它推导出来的: final case class Kleisli[M[_], A, B](run: A => trait KleisliFunctions { /**Construct a Kleisli from a Function1 */ def kleisli[M[_], A, B](f: A => M[B]): Kleisli[M, A, B] = Kleisli(f) … def >=>[C](k: Kleisli[M, B, C])(implicit b: Bind[M]): Kleisli[M, A, C] = kleisli((a: A) => b.bind(this(a))(k.run)) … Kleisli的用途就是进行函数的转换 // (A=>M[B]) >=> (B=>M[C]) >=> (C=>M[D]) = M[D] 实际上Kleisli就是ReaderT: type ReaderT[F[_], E, A] = Kleisli

    66920发布于 2018-09-28
  • 来自专栏函数式编程语言及工具

    Scalaz(45)- concurrency :Task-函数式多线程编程核心配件

    {ExecutorService,Executors} 2 type Delegated[A] = Kleisli[Task,ExecutorService,A] 3 def delegate: Delegated [ExecutorService] = Kleisli(e => Task.now(e)) 4 //> delegate: => demo.ws.task.Delegated java.util.concurrent.ExecutorService] 5 implicit def delegateTaskToPool[A](ta: Task[A]): Delegated[A] = Kleisli delegate 9 b <- Task("x")(p) 10 c <- Task("y")(p) 11 } yield c //> tPrg : scalaz.Kleisli scalaz.concurrent.Task,java.util.concurrent.Executor 12 //| Service,String] = Kleisli

    91460发布于 2018-01-05
  • 来自专栏函数式编程语言及工具

    泛函编程(24)-泛函数据类型-Monad, monadic programming

    A=>[B]是瑞士数学家Heinrich Kleisli法则的箭头(Kleisli Arrow)。 我们可以用Kleisli Arrow来实现一个函数compose: def compose[A,B,C](f: A=>[B], g: B=>M[C]): A=>M[C]。

    1K100发布于 2018-01-05
  • 来自专栏函数式编程语言及工具

    Scalaz(16)- Monad:依赖注入-Dependency Injection By Reader Monad

    OnOffDevice,不需要实现依赖项目就可以直接使用这些Reader功能函数: 1 ef trigger = OnOffService.on //> trigger: => scalaz.Kleisli extends OnOffDeviceImpl 2 def trigger = OnOffService.on //> trigger: => scalaz.Kleisli extends Device with DeviceImpl 2 def trigger = OnOffService.on //> trigger: => scalaz.Kleisli

    79580发布于 2018-01-05
  • 来自专栏黯羽轻扬

    Monad_Haskell笔记10

    identity):m >>= return ≡ m 结合律(Associativity):(m >>= f) >>= g ≡ m >>= (\x -> f x >>= g) 单位元的性质看起来不很明显,可以借助Kleisli composition转换成更标准的形式: -- | Left-to-right Kleisli composition of monads. (>=>) :: Monad m => (a 没错,就是<=< 用Kleisli composition(>=>)来描述Monad laws: 左单位元:return >=> f ≡ f 右单位元:f >=> return ≡ f 结合律:(f >

    1.3K50发布于 2019-06-12
  • 来自专栏黯羽轻扬

    Monadic Function_Haskell笔记12

    (subtract 1)) 7 4.0 monadic function也是function,自然也能组合(实际上之前已经见过了) 在Monad laws中有提到过一个东西,叫做Kleisli composition : -- | Left-to-right Kleisli composition of monads. (>=>) :: Monad m => (a -> m b) -> (b -> m c

    1.2K30发布于 2019-06-12
  • 来自专栏函数式编程语言及工具

    Scalaz(22)- 泛函编程思维: Coerce Monadic Thinking

    hasCoffee) OnOffService.on else OnOffService.off } yield onoff //> trigger: (cntry: String)scalaz.Kleisli

    648100发布于 2018-01-05
  • 来自专栏函数式编程语言及工具

    Scalaz(18)- Monad: ReaderWriterState-可以是一种简单的编程语言

    <- e3(a,b) 12 d <- e2(c) 13 } yield d //> prg : scalaz.Kleisli [scalaz.Id.Id,Int,Int] = Kleisli(<function1>) 14 prg.run(10) //

    1.7K70发布于 2018-01-05
  • 来自专栏CreateAMind

    新概率书 Structured Probabilistic Reasoning

    (通信)信道的概念在其他地方广泛使用,有各种名称,如条件概率、随机矩阵、概率分类器、马尔可夫核、条件概率表(在贝叶斯网络中)、概率函数/计算、信号(在贝叶斯说服理论中),最后称为 Kleisli 映射(

    62630编辑于 2022-03-14
  • 来自专栏函数式编程语言及工具

    Cats(4)- 叠加Free程序运算结果,Stacking monadic result types

    cats同样实现了几个类型的MonadTransformer如:OptionT、EitherT、StateT、WriterT、Kleisli等等,命名方式都是以类型名称尾缀加T的规范方式,如: final

    2.3K60发布于 2018-01-05
  • 来自专栏CreateAMind

    组合神经科学的新数学语言

    涉及 BG 门控的计算可以形式化地描述为单子 T 的克莱斯利范畴 (Kleisli category) Kl(T) 中的态射。

    9510编辑于 2026-03-11
  • 来自专栏CreateAMind

    组合神经科学:借幺半群、函子与操作子探索脑回路新语言

    涉及 BG 门控的计算可以形式化地描述为单子 T 的克莱斯利范畴 (Kleisli category) Kl(T) 中的态射。

    6210编辑于 2026-03-11
领券