• 让程序变得可推导,关键是对可变状态的围剿,纵观业界有三种方向:1. 通过函数式语言让不变性成为语言的默认特性,这样可变状态变成特例。这种方式会让程序员尽量不用可变状态,就是没办法回避也会努力花力气做好做完善。 2.让可变状态变成编程的核心,也就是说
  • 因为函数的父节点是CLR运行时或者JVM运行时,函数的标识是它们的父节点定义的。面向对象中的方法是绑定在类型系统上的函数。类型系统是什么?类型系统就是有组织有纪律有偏移地一层一层的进行分类,组织结构是棵树,每一节点都不交叉,任何两节点的通信必定经过了它们共同的父节点。方法被绑定在了类型系统上 icon
  • 这篇Motivation for Monads其实谈了为什么需要函数编程和Monad?指出函数编程的几个特点,与 icon
  • 大师和他的徒弟盘坐着进行图灵冥想,沉思Lambda. 徒弟看着大师问:“老师,你能告诉我什么是简单吗?编程是复杂的,框架通过去除选择使得编程入手变得简单,那么类和框架哪个更好呢?” 大师看着徒弟问:“你读过智者大师 icon
  • 这是一篇将离散数学结构中的集合set,序列sequence,函数function,disjoint unuin,关系relation和语法转变成使用Java,Python,Racket和Haskell可运行的代码: icon
  • 计算机科学领域中一个重要成就是:类型理论type theory对应于一个特别的逻辑系统。Type s icon
  • 2015-03-15 16:05 "@jdon007"的内容两种比较常用的思考方法(或解决方法),用哪一种,还是取决于问题域 ... 讲得很 icon
  • 函数语言主要优点是秉承数学的严谨性与可推导性,该文比较了纯函数语言Haskell在代数方程上与Scala语言的不同性,突出了Haskell纯函数语言的特点。 icon
  • REST的JSON格式是现在流行的通讯数据格式,但是在Reactive运动如React.js等前端新技术的推动下,以及面向函数编程概念的普及,人们发现JSON已经不再满足需要了。 GraphQL和Falcor是对REST的JSON的进化发展,GraphQL icon
  • functional calisthenics是一套类似Object calisthenics面向对象健美操的实践模式,这些规则能够让你函数编程得更好,这些严格的约束能够让你以不同角度来思考如何编写代码。 1. 副作用只发生在顶层我们希望我们的代码 icon
  • 使用Monad可以解决下面两个问题: 1. 假设每个函数会按次序共享一个全局状态,那么我们使用StateMonad。多个函数共享一个全局状态在面向对象范式中是使用对象Object完成,状态作为对象的字段,而函数作为对象的方法,如下: icon
  • 函数编程中Functor函子与Monad是比较难理解的概念,本文使用了形象的图片方式解释了这两个概念,容易理解与学习,分别使用Haskell和Swift两种语言为案例。 1. 函子functor是一种实现fmap或map的数据类型2. applic icon
  • 在函数编程世界中,我们经常说“reason about可推导”,或者说,我们要让我们的程序可推导。那么这个可推导是什么意思呢? icon
  • 计算机中人们所说的“不变性”到底是什么?起初指的是2 = 1 + 1这样的事情;起初指的是往气球里面充1立方米空气,只要气球不漏气全部放出来应该还是1立方米。指的这样的不变性。起初如果指的是上面那样的不变性,现在指的应该还是那样的不变性。因为任何一个词汇无论如何演化只要能够存留下来的 icon
  • 根据这篇文章触发的灵感,写了两篇定义性文章: 什么是Monoid? icon
  • Function和Operation的异同Function是绑定在ResourceType(class)上的,一种资源类型上有一个Function列表。record(object)从ResourceType(class)继承这些Function列表。这种绑定 icon
  • 如果再往下抽象一个层次,Person对象的Gender、Name、Birthday属性、Person对象的Type类型(typeof Person得到的值)等等都变成了维度。一个变化方向是一个维度,而且是正交的维度,仅通过Name值或Birthday值无法知道一个对象是不是人,同样,只知道一个对象的 icon