
编程
simonxk
这个作者很懒,什么都没留下…
展开
-
邱奇编码(Church Encoding)的Javascript实现练习
1.背景学习函数式编程也有一段时间了,首先发现现在学习这类的主题交叉的东西太多了,或者发现追根溯源太耗时间和精力了,好想吃个什么羊草猪草就一下子通了任督二脉了。期望照进现实还是得埋头苦学呀。前段总结自己给了自己一个答案,就是自己还是太具体了,抽象层次不够。要学函数式编程,得把一个东西给搞透了,那就是眼里值(value)和函数(function)没有区别。于是就到了这里Church enco原创 2013-10-16 15:12:19 · 2225 阅读 · 0 评论 -
普通程序员解说lambda演算(1)
alpha变换首先alpha变换引出了绑定变量和自由变量的概念。一个函数体内使用的变量有几种,第一种是函数的参数,第二种是函数内部定义的局部变量,第三种是既不是函数的参数也不是函数内部定义的局部变量的的变量。第一种和第二种被称为绑定变量,第三种称为自由变量。其次alpha变换引出了两个函数相同的概念,如果对于所有的相同的输入,两个函数给出的输出都是一样的。那么两个函数被认为是相同的。原创 2013-10-16 00:06:04 · 1251 阅读 · 0 评论 -
函数式编程里面的fold
第一:基本概念fold在函数式编程里面的基本含义是遍历数据结构,最后产生一个聚合值。最简单的例子是sum list = foldl (+) 0 listfold抽象了两个动作,一个是遍历数据结构本身,一个是累积值和元素之间的关系。用了fold后就只需要关心聚合的初始值是什么,每个元素和累积值如何产生下一个累积值。比如上面的sum的例子,初始值是0, 步进函数式+, 也就是每个元原创 2014-03-23 13:35:31 · 4474 阅读 · 0 评论 -
o.m()的那点儿事
在面向对象的系统中,如果o.m(),那么一般情况下指的是去查找和调用一个对象o的方法m。在Java里面,那么就是在o以及o的父类中去查找m的具体实现。这样的局限是你无法为已有的类(比如内置类型string)调用一个不存在的方法,除非你创建一个包装类比如stringwapper,给这个类添加方法m,然后每次使用的时候用的都应该是stringwapper的实例。好处是有且仅有一种方法,不会感觉原创 2013-10-13 14:57:41 · 902 阅读 · 0 评论 -
学Javascript也可以装B
程序员一定要学会装B,不会装B的程序员一看就知道,一脸的苦瓜。然后对其他口若悬河滔滔不绝的程序员来一句:靠就你M会装B。装B有好些方式,最近新的编程语言出现的有些汹涌(当然有些也蛮老了,最近被翻出来了),特别是申明自己是函数式语言的,或者有明显的函数式特性的语言特别多。现在不说自己会一种或者两种这样的编程语言都不好意思和别人讨论和交流了。别人给你讲Haskell,给你讲F#,给你说原创 2013-10-13 14:52:06 · 943 阅读 · 0 评论 -
为什么选择Erlang作为服务器编程语言
虽然Erlang有很长的历史,并且也不饿,在今天原创 2014-07-03 17:05:14 · 2298 阅读 · 0 评论