- 博客(10)
- 收藏
- 关注
原创 函数式编程里面的fold
第一:基本概念fold在函数式编程里面的基本含义是遍历数据结构,最后产生一个聚合值。最简单的例子是sum list = foldl (+) 0 listfold抽象了两个动作,一个是遍历数据结构本身,一个是累积值和元素之间的关系。用了fold后就只需要关心聚合的初始值是什么,每个元素和累积值如何产生下一个累积值。比如上面的sum的例子,初始值是0, 步进函数式+, 也就是每个元
2014-03-23 13:35:31 4358
原创 谈学习和比较
这是以前自己写的两个豆腐文章,应该是当时的自己有感而发吧,就搬到这里来好了。谈比较(2013-03-04)作为一个普通人,做比较,而且是拿自己和身边人作比较应该是一件很平常的事情。比如比薪水,比住房等等。这个比较里面有个很有意思的限定,就是身边的人。太远的我们都不想比较,或者无论怎么比较心态都还是很正常的。和身边的人比较,心态很容易就是高兴,因为自己比较好,或者气愤,因
2013-10-16 15:34:40 917 1
原创 邱奇编码(Church Encoding)的Javascript实现练习
1.背景学习函数式编程也有一段时间了,首先发现现在学习这类的主题交叉的东西太多了,或者发现追根溯源太耗时间和精力了,好想吃个什么羊草猪草就一下子通了任督二脉了。期望照进现实还是得埋头苦学呀。前段总结自己给了自己一个答案,就是自己还是太具体了,抽象层次不够。要学函数式编程,得把一个东西给搞透了,那就是眼里值(value)和函数(function)没有区别。于是就到了这里Church enco
2013-10-16 15:12:19 2181
原创 普通程序员解说lambda演算(1)
alpha变换首先alpha变换引出了绑定变量和自由变量的概念。一个函数体内使用的变量有几种,第一种是函数的参数,第二种是函数内部定义的局部变量,第三种是既不是函数的参数也不是函数内部定义的局部变量的的变量。第一种和第二种被称为绑定变量,第三种称为自由变量。其次alpha变换引出了两个函数相同的概念,如果对于所有的相同的输入,两个函数给出的输出都是一样的。那么两个函数被认为是相同的。
2013-10-16 00:06:04 1206
原创 o.m()的那点儿事
在面向对象的系统中,如果o.m(),那么一般情况下指的是去查找和调用一个对象o的方法m。在Java里面,那么就是在o以及o的父类中去查找m的具体实现。这样的局限是你无法为已有的类(比如内置类型string)调用一个不存在的方法,除非你创建一个包装类比如stringwapper,给这个类添加方法m,然后每次使用的时候用的都应该是stringwapper的实例。好处是有且仅有一种方法,不会感觉
2013-10-13 14:57:41 876
原创 学Javascript也可以装B
程序员一定要学会装B,不会装B的程序员一看就知道,一脸的苦瓜。然后对其他口若悬河滔滔不绝的程序员来一句:靠就你M会装B。装B有好些方式,最近新的编程语言出现的有些汹涌(当然有些也蛮老了,最近被翻出来了),特别是申明自己是函数式语言的,或者有明显的函数式特性的语言特别多。现在不说自己会一种或者两种这样的编程语言都不好意思和别人讨论和交流了。别人给你讲Haskell,给你讲F#,给你说
2013-10-13 14:52:06 924
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人