zoukankan      html  css  js  c++  java
  • 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 环境吧。


  • 相关阅读:
    CF785CAnton and Permutation(分块 动态逆序对)
    Codeforces617E XOR and Favorite Number(分块 异或)
    POJ2155 Matrix(二维树状数组||区间修改单点查询)
    阿里云重磅发布数据库专家服务
    Dataphin公共云重磅发布,提供一站式智能数据构建与管理能
    阿里大数据产品Dataphin上线公共云,将助力更多企业构建数据中台
    快速完成智能数据构建,Dataphin公共云版本全面解读
    微服务开源生态报告 No.1
    分享 KubeCon 2019 (上海)关于 Serverless 及 Knative 相关演讲会议
    MaxCompute 费用暴涨之存储压缩率降低导致SQL输入量变大
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4485124.html
Copyright © 2011-2022 走看看