29 Jul 2022

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

Haskell简介 Haskell (/ˈhæskəl/) is a general-purpose, statically-typed, purely functional programming language with type i...
28 Jul 2022

范畴论基础(6) - Applicative Functor

遗留问题 有一个遗漏了的函数签名,是 T[A -> B]。(在函数式编程里,函数是一等公民,函数本身也是一个值,所以也可以放进容器里) 有时候,一个方法也会被包装在容器中,还是以 Option<T> 为例: 假设一个业务,...
27 Jul 2022

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

Functor与Monad到底在做什么? Functor与Monad,是Category Theory中的概念。但是在实际编程中,这两个东西到底是什么? 通过之前的内容,可以给出两个在编程中非常不严谨的Functor与Monad定义: 有m...
25 Jul 2022

范畴论基础(4) - Monad

JavaScript中的flatMap方法(本质上)是什么? // [ [ 1, 1 ], [ 2, 2 ], [ 3, 3 ] ] const val1 = [1, 2, 3].map(i => [i, i]); // [ 1, 1...
24 Jul 2022

范畴论基础(3) - Functor

JavaScript中的map方法(本质上)是什么? const array1 = [1, 2, 3] const array2 = array1.map(i => i + 1) const array3 = array1.map(i...
24 Jul 2022

范畴论基础(2) - 函数式编程基本概念

函数签名 f :: A -> B 表示一个函数f,输入类型A,返回类型B f :: A -> B -> C 可以表示两个等价的含义: 一个函数f,输入类型A 和B,返回C 一个函数f,输入A,返回一个函数g :: B -&...