[Haskell] 初识Functional Programming
来源:互联网 发布:hidpi canvas.min.js 编辑:程序博客网 时间:2024/05/05 22:26
最早听说函数式编程是大一时候看一本过期一两年的程序员杂志,在旧杂志摊位十块钱买三本那种。当时懵懵懂懂不理解也硬着头皮看,记得很深的有一句话:“现在的程序员应该多接触不同范式的编程语言,而国内太多学生还在死啃c++和java”。刚好这学期,之前教我们数据结构算法的乔海燕老师开了门haskell函数式编程的公选课,我决定认真学一学。这里把课堂学习的心得简单写下。
什么是函数式语言编程?
一个简单的例子:求1到10的和
我觉得整节课最能吊起我胃口的就是接下来这一段代码,相信很多c程序员看了都会为之惊叹! 太优美了。haskell写的快速排序:
相比之下,c++起码要十几行吧:
这是其优美简洁、容易理解的特点。
除此以外还有无副作用、强类型、代码重用、模块化、高阶函数,惰性计算等特点。
此处的惰性计算(lazy evaluation) 应该是指与c++ java等语言相对的严格计算(strict)
____“在一个严格的语言中,每一表达式,无论其计算结果是否重要,都会得到计算”——《YAHT》
详细的介绍可以查阅一篇文章: “Why functional programming matter?”
函数的定义:
接下来老师就带着我们写第一个haskell的程序,这里用的解析器是hugs,主要用于教学。另一款也是最常见的是GHC(Glasgow Haskell Compiler)
在hugs下运行
其中第一次用square溢出了,不过当我把程序中的int改为integer后,那整数简直就是无限大了Q Q 如下图
最后随便试了试2的xx次方,太大了就会卡住= = 不过这种瞬间输出的快感还是灰常棒!
最后整理一下来自O‘Reilly的 Real World Haskell中的网络资源,方便以后用。
The Haskell hierarchical libraries reference
http://www.haskell.org/ghc/docs/latest/html/libraries/
GHC Documentation 包括了User's Guide Librariex GHC API 和 Cabal
http://www.haskell.org/ghc/docs/7.0-latest/html/
超有个性的Hoogle也Hayoo 两个Haskell API搜索引擎
http://www.haskell.org/hoogle/
http://holumbus.fh-wedel.de/hayoo/hayoo.html
Haskell98 Report 貌似是语言规范描述
http://www.haskell.org/onlinereport/
The Haskell wiki
http://www.haskell.org/haskellwiki/Applications_and_libraries
Community:
the Haskell website
http://www.haskell.org/haskellwiki/Haskell
weekly news
http://sequence.complete.org/
- [Haskell] 初识Functional Programming
- functional programming
- Functional Programming
- Functional Programming
- 初识haskell
- Functional Programming vs. Imperative Programming
- 突然想到Functional Programming
- Functional Programming 的思考
- Trends in Functional Programming
- Functional Reactive Programming
- Functional Programming & Template Metaprogramming
- Functional Programming in C++
- Apply Functional Programming Principles
- Functional Reactive Programming
- Apply Functional Programming Principles
- Functional Reactive Programming<1>
- Functional Programming[转]
- Swift Functional Programming Tutorial
- uploadify API
- PAIP.手机sms短信,联系人的同步与备份.txt
- Oracle 10046事件
- Collections常用的静态方法浅析之排序:sort(List list)
- vs2008 专用卸载工具
- [Haskell] 初识Functional Programming
- 股价上涨,资金流出以及内外盘的关系
- jquery 获取 单选、多选、下拉框属性值
- 备忘
- 解决Ubuntu下gedit不能显示中文的问题
- 净资产和股价的关系
- Activity的启动流程
- C++的前置声明
- Linux中find常见用法示例