Cn/Haskell 入门五步走

From HaskellWiki
Revision as of 10:52, 15 December 2007 by Wangzhifen (talk | contribs) (Cn/Haskell 五步走 moved to Cn/Haskell 入门五步走)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 社区成员交流:

Languages: en zh/cn