存档

文章标签 ‘haskell’

Haskell学习笔记(1)

2012年7月21日 4 条评论

之前看过一些对函数式编程(Function Programming,简称FP)的介绍,一直想通过学习一门FP的语言,来深入了解一下FP。Haskell,就是众多FP语言中的一门,它是一门纯粹的FP语言,是学习FP不错的选择。今天这篇文章主要是对Haskell的一个简单介绍,以及一些正式开始学习之前的准备工作。

  • 1. 什么是Haskell
  • Haskell, 是一门纯粹的函数式的程序设计语言,它是基于Lambda Calculus的。做为一门函数式的语言(Funcitonal Language),与传统的命令式的语言(Imperative Language)相比,它的主要优势在于,代码更为简洁,可靠性更好,语义非常直观,在很大程度上提高了程序员的产出率。
    在开始学习Haskell之前,我们先来看一个例子,相信通过这个例子,读者朋友会对Haskell有一个直观的印象,想学习FP的朋友,会爱上Haskell的:

    1
    2
    
    qsort [] = []
    qsort (p:xs) = qsort [x | x< -xs, x<p] ++ [p] ++ qsort [x | x<-xs, x>=p]

    上面是一个Haskell版本的quick sort,学习过C/C++/Java等命令式语言的朋友,应该知道通过命令式语言实现的quicksort, 大概需要10-20行的代码。相比而言,Haskell版本的quick sort,是多么的简洁、直观。下面简单解释一下上面的代码:第一行是初始化,输入一个空的list, 返回也是一个空的list; 第二行,qsort的输入一个list,把这个list分成两部分,一部分是单独的元素p, 一部分是除去p之外剩下的部分xs,xs也是一个list. 那么,对入p:xs这个list排序的结果就是:对xs中小于p的部分排序的结果,p和对xs中不小于p的部分排序的结果这三部分组成的list。Isn’t it amazing? 阅读全文…

分类: Haskell 标签: