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"

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

编译程序

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

Haskell 的编辑环境

隆重推荐 Emacs  ,Emacs 中的 Haskell-mode 在编敲代码中,帮助进行缩进、语法高亮等,配合 unicode
显示,能够得到很美丽的效果。

另开一篇具体解释emacs 环境吧。

时间: 2024-11-10 16:02:30

Haskell 差点儿无痛苦上手指南的相关文章

树莓派(Raspberry Pi Model B+)无显示器和无线网卡上手指南

树莓派(Raspberry Pi Model B+)无显示器和无线网卡上手指南 最近买了一块树莓派板子(Raspberry Pi Model B+)平时作学习之用,只买了块裸板没有显示器和网卡(现在觉得完全没有必要去买显示器),在搭建环境的时候就遇到了一些问题,现在对在搭建树莓派环境遇到的问题做一个总结. 现在我知道的能够连接到树莓派的方法一共有四种,分别是串口终端操作.局域网.PC直连和手机USB网络共享,后面3种方法都是通过ssh的方式登陆树莓派(装好VNC-server后也可以用VNC查看

Android SDK上手指南 3:用户交互

在这篇教程中,我们将对之前所添加的Button元素进行设置以实现对用户点击的检测与响应.为了达成这一目标,我们需要在应用程序的主Activity类中略微涉及Java编程内容.如果大家在Java开发方面的经验不太丰富也没必要担心,只要按步骤进行即可完成学习.我们将在本系列的下一篇文章中深入探讨Java语法,从而保证大家了解初步Android开发任务中所必需的编程语言知识. 大家可以在Android当中以多种不同方式实现用户交互.我们将学习两种最为典型的处理方案,从而实现应用按钮对用户点击的感应--

Android SDK上手指南 2:用户界面设计

http://mobile.51cto.com/ahot-419184.htm 内容简介 我们将为应用程序项目添加布局方案,在这方面XML与Eclipse ADT接口将成为工作中的得力助手--不过在后面两节中还会用到一部分Java开发知识.XML与Java在Android平台的开发工作当中可谓无处不在,如果大家对二者还缺乏基本的了解,请尽快想办法补补课.对于刚刚入门的读者朋友来说,本文所介绍的要点将成为各位日后开发工作的重要基础. 1. XML基础知识 在我们开始讨论布局之前,先来梳理作为标记语

Rancher 快速上手指南操作(1)

Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubuntu 的输出 [#63#[email protected] ~]$sudo docker version [sudo] password for cloudsoar: Client: Version:      1.9.1 API version:  1.21 Go version:   go1.4.

Model Maker上手指南

Model Maker上手指南 目录 1.MM可爱的脸 2.MM中的工程Project 3.新建类图 4.添加类成员 5.实现类的方法 6.生成Delphi代码 7.逆向到模型 8.完全的逆向工程 作者:郭方明 完成日期:2005-12-06 version 1.0 联系信箱:[email protected] 注:转载文章,请注明作者信息. 引文: 本文通过一个简单的例子介绍使用MM(ModelMaker)设计类图和生成Delphi代码,以及代码逆向同步的过程:让你在最短的时间内上手MM. 编

UnityShader快速上手指南(三)

简介 这一篇还是一些基本的shader操作:裁剪.透明和法向量的应用 (纠结了很久写不写这些,因为代码很简单,主要是些概念上的东西) 先来看下大概的效果图:(从左到右依次是裁剪,透明,加了法向量的透明) 裁剪 代码 Shader "LT/Lesson3_Cull" { Properties { _Color ("Color", Color) = (1, 1, 1, 1) } SubShader { Pass { Cull Off CGPROGRAM #pragma

DPDK快速上手指南(18.02)

DPDK快速上手(linux) 本文档主要来自linux_gsg-18.02.pdf的翻译,翻译肯定有不妥之处,请批评指正,我会随后修改,不胜感激. 1. 介绍 本文档包含有关DPDK(Data Plane Development Kit的缩写)软件的安装和配置的说明,目的就是让用户快速用起来.本文档描述怎样在linux应用环境下编译和运行一个DPDK应用程序,而不过多深入细节. 1.1文档路线图 以下是针对所有DPDK文档建议的阅读顺序: 发布说明(Release Notes):提供具体的发布

Mac 触摸板增强神器BetterTouchTool 上手指南

BTT 功能解剖 1:应用选择区点击左下角的「加减号键」可以添加或删除列表中的应用,但它不适用于 Global 选项,前文中已提到,因为它代表的是整个操作系统的大环境,所以任何对它的设置就相当于增加一个新的系统「指定」操作方式. 出于这个原因,这部分的设置项也都是针对 Global 的,分别是: 拷贝 Global 相关的手势操作设置粘贴上述设置禁止将单指滚动操作应用于 Global禁止针对 Global 的窗口捕捉,该功能用于自动调整窗口位置,类似 Moom(下图蓝色虚线框效果)禁止任何针对

caffe简易上手指南(一)—— 运行cifar例子

简介 caffe是一个友好.易于上手的开源深度学习平台,主要用于图像的相关处理,可以支持CNN等多种深度学习网络. 基于caffe,开发者可以方便快速地开发简单的学习网络,用于分类.定位等任务,也可以用于科研,在其源码基础上进行修改,实现自己的算法. 本文的主要目的,是介绍caffe的基本使用方法,希望通过本文,能让普通的工程师可以使用caffe训练自己的简单模型. 本文主要包括以下内容:运行caffe的例子训练cifar训练集.使用别人定义好的网络训练自己的数据.使用训练好的模型fine tu