范畴论基础(9) - Writer Monad

提出问题 假设有一个half函数 half x = x div 2 这时候要连续执行两次就很容易,可以compose quarter = half . half 如果函数除了要除2,还要写一条日志,那怎
Read more →

范畴论基础(8) - Reader Monad

提出问题 假设有这样一个数据类型,用于存储一个应用的配置信息 data Config = Config { selectFirst :: Bool, greet :: String } 有两个函数都依赖这个配置 – selectUserToGreet 根据 Config 的 selectFirst 决定选择哪个user
Read more →

范畴论基础(7) - 基于Haskell重写例子

Haskell简介 Haskell (/ˈhæskəl/) is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research and industrial applications, Haskell has pioneered a number of programming language features such as type classes, which enable type-safe operator overloading. Haskell’s main implementation is the Glasgow Haskell Compiler (GHC). It
Read more →

范畴论基础(6) - Applicative Functor

遗留问题 有一个遗漏了的函数签名,是 T[A -> B]。(在函数式编程里,函数是一等公民,函数本身也是一个值,所以也可以放进容器里) 有时候,一个方法也会
Read more →

范畴论基础(5) - Functor与Monad小结

Functor与Monad到底在做什么? Functor与Monad,是Category Theory中的概念。但是在实际编程中,这两个东西到底
Read more →