Haskell小白初探——Haskell 安装(ubuntu12.04)

来源:互联网 发布:如何发布php网站 编辑:程序博客网 时间:2024/05/25 23:56
Haskell语言简介:
   Haskell是一种标准化的,通用的纯函数编程语言,有非限定性语义和强静态类型。作为一门函数编程语言,主要控制结构是函数。
   Haskell支持惰性求值、模式匹配、列表解析、类型类和类型多态。
   Haskell的主要实现——GHC——是个解释器,也是个原生代码编译器。它可以在大多数平台运行。

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

 GHC:

GHC主要有三个部分组成。

  • ghc是生成快速本底代码的优化编译器。
  • ghci是一个交互解析器和调试器。
  • runghc是一个以脚本形式(并不要首先编译)运行Haskell代码的程序。


Cabal:

    cabal 简单说就是 Ubuntu 的  apt-get, Perl 的 cpan , Python 的 easy_install , Ruby 的 gem 。要安装一个第三方库,只需要:  cabal install lib-name 就可以了。

        我们使用Haskell Platform 进行开发。

安装Haskell Platform

  ubuntu下安装十分简单:

sudo apt-get update
     sudo apt-get install haskell-platform

就ok了
  终端输入
   ghc --version  查看GHC版本:

Haskell小白初探——Haskell 安装(ubuntu12.04) - 海悯 - 兑隐

  cabal --version 查看Cabal版本:


  cabal --version 查看Cabal版本:

Haskell小白初探——Haskell 安装(ubuntu12.04) - 海悯 - 兑隐
 
ok 成功安装
(注:有其他安装方法,参考 http://blog.csdn.net/albert_lee/article/details/5469933。由于是10年的教程,ubuntu是9.10版本,笔者没有尝试过)

初次接触haskell:
  1  使用ghci
    在终端输入ghci,打开解释器:
Haskell小白初探——Haskell 安装(ubuntu12.04) - 海悯 - 兑隐

此时输入 :set prompt "ghci> " 可变为下图状态。

尝试一些简单的算术逻辑运算

Haskell小白初探——Haskell 安装(ubuntu12.04) - 海悯 - 兑隐
 
Haskell小白初探——Haskell 安装(ubuntu12.04) - 海悯 - 兑隐
 
2 使用ghci编译
  选择你喜欢的文本编辑器输入以下Haskell代码,存储为 “qsort.hs” 的文件:
quicksort :: Ord a => [a] -> [a]
quicksort []     = []

quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
    where
        lesser  = filter (< p) xs
        greater = filter (>= p) xs
  (1) 在解释器下输入:
:l  [file_path]

Haskell小白初探——Haskell 安装(ubuntu12.04) - 海悯 - 兑隐
  编译成功,如果没有更改前缀,此时状态应为“ *Main>
  (2) 此时调用quicksort函数
Haskell小白初探——Haskell 安装(ubuntu12.04) - 海悯 - 兑隐
   输出结果。
(3) 退出解释器
     输入:quit
 ( :?可以获得相应帮助)
 
3 使用ghc编译并运行你的程序。
     最简单的“hello world”程序:
    输入:
         main = putStrLn "hello world"

保存为hello.hs
打开终端,进入hello.hs 的文件目录
   输入:
        ghc hello.hs -o hello
    执行:
       ./hello
    很简单,和编译C/C++一样。


接下来开始更加系统的学习吧。

——参考资料:

Haskell学习笔记(1)  http://www.wuzesheng.com/?p=2265
    Haskell几乎无痛苦上手指南  http://blog.csdn.net/albert_lee/article/details/5469933

0 0