当他重装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"

看上去非常easy。没啥出奇的东西。以下尝试些有意思的东西:

编译程序

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

Haskell 的编辑环境

隆重推荐 Emacs  ,Emacs 中的 Haskell-mode 在编敲代码中。帮助进行缩进、语法高亮,等等。。协调 unicode
显示。它可以是非常影响美观。

另外打开一个详细的解释emacs 环境酒吧。

Haskell 几乎无疼痛入门指南的更多相关文章

  1. Haskell 差点儿无痛苦上手指南

    趁着自己重装Linux 虚拟机的机会,把安装 haskell 的过程记录一下,顺便帮那些还犹豫徘徊在haskell门外的读者入门. 基本概念: Haskell : 是一门通用函数式语言,差点儿能够进行 ...

  2. 《转载》编程入门指南 v1.4

    编程入门指南 v1.4 Badger · 8 个月前 作者:@萧井陌, @Badger 自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 CoCode ...

  3. 【HBase】HBase Getting Started(HBase 入门指南)

    入门指南 1. 简介 Quickstart 会让你启动和运行一个单节点单机HBase. 2. 快速启动 – 单点HBase 这部分描述单节点单机HBase的配置.一个单例拥有所有的HBase守护线程- ...

  4. Microsoft Orleans 之 入门指南

    Microsoft Orleans 在.net用简单方法构建高并发.分布式的大型应用程序框架. 原文:http://dotnet.github.io/orleans/ 在线文档:http://dotn ...

  5. Nexus入门指南(图文)

    Nexus入门指南(图文) 博客分类: Maven JavamavenGoogleApacheTomcat Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven ...

  6. 关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)

    关于 HSSF 和 XSSF 功能的开发者入门指南 笔者深夜无眠,特此对本文翻译一部分,未完成部分待后续更新 本文源文地址 意欲使用 HSSF 和 XSSF 功能快熟读写电子表格?那本文就是为你而写的 ...

  7. Java程序员的Golang入门指南(下)

    Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合 ...

  8. Python 30分钟入门指南

    Python 30分钟入门指南 为什么 OIer 要学 Python? Python 语言特性简洁明了,使用 Python 写测试数据生成器和对拍器,比编写 C++ 事半功倍. Python 学习成本 ...

  9. Redis入门指南之三(入门)

    本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...

随机推荐

  1. UVa 10286 - Trouble with a Pentagon

    题目:如图在正五边形中画一个正方形,一直正五边形边长,求正方形边长. 分析:计算几何,解析几何.求出边长的比例关系带入求解就可以. 设正五边形边长为1,在顶点建立直角坐标系,则左上角坐标为:B(-co ...

  2. 【OpenCV新手教程第14】OpenCVHough变换:霍夫变换线,霍夫变换圆汇编

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

  3. Android开发周报:Flyme OS开源、经典开源项目解析

    Android开发周报:Flyme OS开源.经典开源项目解析 新闻 <魅族Flyme OS源码上线Github> :近日魅族正式发布了MX5,并且在发布会上,魅族还宣布Flyme OS开 ...

  4. PHP开发学习门户改版效果图投票

    亲们,PHP开发学习门户上线两个月啦,站长想进行一次改版.希望大家在留下宝贵的一票.选出喜欢的样式吧 A样式: B样式: mod=misc&action=votepoll&fid=46 ...

  5. 关于jdbc注冊驱动的那点事

    看到非常多人写jdbc连接工具类的时候,都会写到Class.forName()去显示载入类,一写错点点就会抛出ClassNotFoundException,关于显示载入类,究竟会不会产生作用呢? 參考 ...

  6. Terracotta收购Ehcache (转)

    随着Terracotta对Ehcache的收购成行,业界两大知名的开源Java缓存产品走到了一起.以提供JVM级“POJO集群”而闻名于世的Terracotta可以将运行在单个JVM上的多线程应用移植 ...

  7. Map实现之HashMap(结构及原理)(转)

    java.util包中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构 ...

  8. Mysql怎样删除以“#sql-”开头的暂时表

    author:skate time:2014/09/28 Mysql怎样删除以"#sql-"开头的暂时表 现象:在重建索引后,发现Mysqlserver的磁盘空间快满了 在用例如以 ...

  9. IntelliJ IDEA中怎样使用JUnit4

     背景 近期參与了一个Anroid医疗项目,当中项目底层有非常多基础类及通讯类,并且非常多涉及复杂的字节操作还有多线程同步及状态机处理.这种项目做一下TDD还是必要的,尽量项眼下期把风险减少一些. ...

  10. 双向绑定 TwoWay MVVM

    1前台代码 <Grid> <StackPanel > <Grid x:Name="gridOne"> <Grid.Resources> ...