浅论未来函数式编程的数据库转变(持续更新)

13-01-28 SpeedVan
函数,一种输入一种输出,但这样的定义没有所谓的记忆体存在。

但我们为什么需要计算机帮我们记忆?我认为是因为输入不完整,例如我们现在使用的数据库,实际上是保存我们“接下来的输入”。也就是说“当人类想要某种信息,但这些信息并不是一次过获得”这种情况下,就需要记录下这样的状态。这样的理解下,我们不禁想到某个定义——一个函数有N个参数, 而我们为其提供少于N个参数,得到的东西我们称之为“部分应用函数”。

所谓的保存是没有输出的,对人类是没任何信息量的。换句话说,当这种信息永不被人所知所用,也就等于没用。我们认为数据库的信息有用,是因为我们一定会输出它,使用它。按照这样的理解保存不应该独立拿出来思考,或者更狠地说,我们应该让这样的词语消失(这样虽然极端,但这是一种思维的挑战,方便打破固有思维)。拥有记忆体的系统,其实是一个巨大的“部分应用函数”。

若从这个角度展开,可以说是一场非常可怕的思维革命,但它是非常有用的。

(组织语言中,因为要从整个指令体系进行颠覆,所以需要点时间,可先给大家一个切入点去思考:在“部分应用函数”中,事务,数据,事件在哪里?待续)

附录:

部分应用函数(Partial Applied Function):

部分应用函数, 是指一个函数有N个参数, 而我们为其提供少于N个参数, 那就得到了一个部分应用函数.

def sum(a:Int,b:Int,c:Int) = a + b + c;

def p_sum = sum(1, _:Int, _:Int)

def p_sum = sum (_:Int, 1, _:Int)

(顺手摘自http://www.cnblogs.com/nixil/archive/2012/05/16/2503722.html)

    

SpeedVan
2013-02-02 22:35
这个现在要放弃了,因为当我认识到所谓的赋值是一种IO操作的时候,我才发现我的认识还尚浅——我认为数据库每一个数据是一个函数,整个数据库是所有数据型函数的组合,数据型函数和逻辑运算函数再组合就是整个系统。增加新数据就是增加新的(约束)函数,与旧的整体再组合出新的巨大函数。

尽管我发现我的原来的认识跟“赋值=IO”很相似,但这种新认识我是不敢想象的。现在正在发掘相关资料。

猜你喜欢