函数式编程
shiarng
这个作者很懒,什么都没留下…
展开
-
使用函数式编程语言,该怎么设计软件?
挑了几个函数式编程的语言,haskell,erlang ,scala, 逐个琢磨了一下。 它们的好处,我同意。然而,使用函数式语言编程,该怎么设计软件?该怎么抽象现实问题?怎么建模?我们已经有了面向对象分析和设计的方法,有了设计模式,这些可都是建立在对象的基础上;转换到函数式语言,又该怎么去分析问题?还用不用对象? 这个疑惑,一直存与心头,得不到解决。翻看国内外书籍,好像都没有提原创 2012-04-05 11:24:11 · 482 阅读 · 0 评论 -
函数式语言特点之-闭包
闭包(Closure),虽然名声在外,被认为是典型的函数式语言的特征。 但是,在有些函数式语言中是不存在的。原因是:用不着,它们没有可变量,自然是用不着。闭包的兴起,首先要允许可变量的存在。语言遵循的设计哲学不同,特点也就不同。原创 2012-05-19 20:21:28 · 471 阅读 · 0 评论 -
函数式编程特点之-lambda演算
lambda演算可说是函数式编程的基石,实际上已和函数式语言浑然一体了。 不过聊起来可太数学了,反正已经证明lambda演算和图灵机等效了,不用去我们去操心了。 现在java,c++,c#等语言要引进这些东西,但是颇费脑筋,弄出匿名函数,匿名表达式一大堆东西来。原创 2012-04-22 21:35:20 · 642 阅读 · 0 评论 -
说说并发
并发这个概念一直都有,范围很光,主机级别的分布式,集群,操作系统级别的进程,线程,纤程,一直到语言级别的函数式编程,协程有些是在操作系统级别实现,有些是在语言级别实现,算是跨了两个级别。 无论 map-reduce大热,函数式语言大热,greenevent,erlang的process,scala的actor、stm,C++的TBB、cilk++,都是在不同的级别追求并发,都意原创 2012-05-19 21:24:16 · 483 阅读 · 0 评论 -
函数式语言特点之-单子
说过函数式语言天生可以并发,不过有些东西,却排斥并发,非顺序执行不可,比如控制命令、资源的使用等。怎样才能把顺序执行的概念完美的揉合在并发执行中,这就令函数式语言大伤脑筋了,haskell语言发明了单子,才算是解决了这个问题。 顺便提一下,对比函数式语言,感觉把C语言等称为过程式、命令式语言,不过称为控制式语言更加贴切,用控制一词,描述该语言顺序执行的特点比较贴切。原创 2012-05-19 20:37:39 · 628 阅读 · 0 评论 -
函数式语言特点之-语句并发执行
这个特点还是起源于人工智能,事实、规则无所谓顺序,设计函数式语言的时候,自然可以考虑语句都并发执行。原创 2012-05-19 20:30:41 · 449 阅读 · 0 评论 -
函数式语言特点之-不变量
为什么函数式语言非要强调不变量呢,强调无副作用,全部使用局部变量不就行了么? 要深究原因,也只需想想它的起源-人工智能中的推理、符号运算,使用事实(符号),得出结论(结果)。事实、或者符号,那就是不变的啊,对应不变量天经地义,使用变量才是灾难。 函数式语言一诞生,长大了就会脱离母体-符号运算,来征服世界,带着它的胎记-不变量。 我说不清楚原创 2012-05-19 20:12:54 · 536 阅读 · 0 评论 -
函数式语言特点之-匹配执行语句
看函数式编程,有个很奇怪的概念,就算根据表达式结果,来执行相匹配的语句。初一看,不就是加强版的switch语句么?为什么要这么强调这个特点? 的确,在这里,它们是和switch一样,不过是起分支作用。其实,还有更深的含义。 联系一下发明lisp,prolog等函数式语言的缘由-人工智能,就很清楚了。起初的人工智能研究集中在知识推理方面,使用谓词演算、规则之类原创 2012-05-19 20:01:08 · 326 阅读 · 0 评论 -
几个比较新的并发模型-STM, process,actor
STM受到数据库事务模型的启发,很有创意,akka实现得不错。微软研究院对STM做过研究,又放弃了,据说STM模型有缺陷。 erlang的process,消息模型,可谓是极致简单美丽,然而,erlang对消息队列的处理必须是顺序执行的,也就是隐含的同步协调点,并发的效率,完全取决于erlang虚拟机的运作。 scala的actor模型是仿erlang的,自然原创 2012-05-19 21:25:25 · 2684 阅读 · 0 评论