http://blog.csdn.net/albert_lee/archive/2010/04/10/5469933.aspx

 

from albert_lee

 


 

原创   Haskell 几乎无痛苦上手指 收藏

 

趁着自己重装Linux 虚拟机的机会,把安装 haskell 的过程记录一下,顺便帮那些还犹豫徘徊在haskell门外的读者入门。

基本概念:

Haskell

是一门通用函数式语言,几乎可以进行任何种类的开发,包括命令行,GUI,数据库,Web.源代码可以跨平台: Linux,Mac, Windows, FreeBSD 等.

Haskell 的特点:

函数式变成风格为主,命令式风格为辅,具有严格且方便易用的类型系统。类型检查可以帮助程序员在开发过程中避免很多错误,并辅助组织程序的结构。

Haskell 的开发工具:

主要有 GHC, hugs 两种, 还有中 nhc 没用过就不说了。我们这里要安装的是 GHC,以及在 ghc 基础上的 Haskell Platform。

GHC

全称: Glasgow Haskell Compiler , 包含一个高效的Haskell编译器ghc,以及一个类似 python 交互环境的解释器 ghci 。GHC可以编译生成高效的可执行程序。

Haskell Platform

Haskell Platform 是一个打包的haskell 开发环境,包含GHC以及很多第三方开发库,以及cabal 包管理器等。

Cabal 又是什么?

简单说就是 Ubuntu 的  apt-get, Perl 的 cpan , Python 的 easy_install , Ruby 的 gem 。 这么说明白了吧.

要安装一个第三方库,只需要:  cabal install lib-name 就可以了。 几乎就这么简单。

怎么安装 Haskell 的第三方库?

有一个 HackageDB   类似与 Perl 的cpan 的东西,这个列表包含了 Haskell 可用的第三方库。安装用同一的方式:  cabal install libname 就可以了。 大部分的库可以很方便的安装,不过一些第三方库会依赖一些特定系统的库,因此不是总能顺利安装。

===================

安装过程

(本文基于 Ubuntu 9.10 , 对于其他基于 apt-get 的Linux也适用。)

1. 安装依赖库

sudo apt-get install libedit2 libedit-dev freeglut3-dev libglu1-mesa-dev libgmp3-dev

2. 下载 GHC

GHC下载页面 , 选择适合的版本下载(x86, x86_64) ,例如下载 x86版本 Linux:

wget http://haskell.org/ghc/dist/6.12.1/ghc-6.12.1-i386-unknown-linux-n.tar.bz2

3. 安装 ghc

$ tar jxvf ghc-6.12.1-i386-unknown-linux-n.tar.bz2

$ cd ghc-6.12.1

$ ./configure

$ sudo make install

安装完,测试下:


4. 安装 Haskell Platform

下载: wget http://hackage.haskell.org/platform/2010.1.0.0/haskell-platform-2010.1.0.0.tar.gz

解压缩, ./configure , make,   make install

make 的过程可能比较长,要编译一大堆的第三方库。

5. Cabal 的配置

安装完 Haskell Platform 后,会提示用户进行 cabal update , 就是更新下库的目录列表:

$ cabal update

要安装一个库,首先在 HackageDB 上找到需要的库,然后运行 cabal install 即可:

=====================

Hello World

说了这么久,终于到了我最喜欢的 Hello World 阶段了。

GHCi  这个交互环境

haskell 程序既可以解释执行也可以编译执行,这在开发过程中是很方便用来调试的。

> print "hello world"

"hello world"

看上去很简单,没啥出奇的东西。下面尝试些有意思的东西:

编译程序

下面来写一个完整的程序,并且编译成可执行文件, 首先编写 hello.hs 文件,内容如下,用 ghc 编译。


Haskell 的编辑环境

隆重推荐 Emacs  ,Emacs 中的 Haskell-mode 在编写程序中,帮助进行缩进、语法高亮等,配合 unicode 显示,可以得到非常漂亮的效果。

另开一篇详解emacs 环境吧。


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐