Cn/Haskell 入门五步走
Haskell 是一门通用型纯粹函数式编程语言。此篇将引导你尽快上路。
安装 Haskell
类似其他语言,Haskell 提供两种风格的处理方式:批处理(“编译器”)和交互式(“解释器”)。其解释器可直接用于测试和计算,是初学者的好帮手。
GHC | 编译器和解释器(GHCi) | 可能是特性实现最全面的系统 |
Hugs | 解释器 | 高度可移植,轻量级 |
GHC 和 Hugs 都可以在 Windows 上工作,Hugs 与之配合得更好。 在 Mac OS X 上安装 Haskell。
运行 Haskell
启动一个终端。如果安装了 GHC,在命令行输入 ghci (GHC 解释器的可执行文件名)。如果安装了 Hugs,输入 hugs。
$ ghci ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.4, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base-1.0 ... linking ... done. Prelude>
现在出来个提示符,Haskell 系统静候佳音。
第一个 Haskell 程序
如果学习过其他编程语言,你的第一个程序可是 "Hello, world!"?我们这样做:
Prelude> "Hello, World!"
"Hello, World!"
Haskell 系统对此字符串求值,并输出结果。稍加修改,就可以直接输出到标准输出:
Prelude> putStrLn "Hello World"
Hello World
通过 Haskell 编译器,如 GHC,可以把代码编译成单独的可执行档。新建源文件 hello.hs,加入:
main = putStrLn "Hello, World!"
编译:
$ ghc -o hello hello.hs
运行(Unix 系统上用 ./hello,Windows 系统用 hello.exe):
$ ./hello Hello, World!
Haskell 计算器
做点有趣的。你的第一个真正的 Haskell 程序是阶乘函数。回到解释器,定义之:
Prelude> let fac n = if n == 0 then 1 else n * fac (n-1)
以上定义了一个阶乘函数 fac。
附加参数,fac 跑起来:
Prelude> fac 42
1405006117752879898543142606244511569936384000000000
可喜可贺! 编程这般容易。注意,如果使用 Hugs,须从文件 fac.hs 加载 fac,其中 fac.hs 如下定义:
fac n = if n == 0 then 1 else n * fac (n-1)
如下运作:(对 GHCi 同样有效)
Hugs.Base> :load fac.hs
Main> fac 42
1405006117752879898543142606244511569936384000000000
亦可编译之,生成可执行档。编辑 fac.hs (使用模式匹配,程序更加可爱):
fac 0 = 1
fac n = n * fac (n-1)
main = print (fac 42)
然后编译运行:
$ ghc -o fac fac.hs $ ./fac 1405006117752879898543142606244511569936384000000000
太棒了!
更上一层楼
还有很多不错的 Haskell 教程和图书。推荐:
教程
- 十分钟学会 Haskell (简体中文)
- Yet Another Haskell Tutorial (English)
- A Gentle Introduction to Haskell (English, File:GentleFR.pdf)
- Examples: on-line suppliment of A Gentle Introduction to Haskell - Code.
<Download> (English).
图书、资料、教程的完整列表:
加入社区!
与 Haskell 社区成员交流: