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