allwiki首页  
天下维客 你可以修改的网络知识库
首页最近更改优秀条目专题展示电脑科技词典软件学习网络知识电脑安全明星时尚天下百科
 

Haskell

天下维客,你可以修改的网络知识库

Jump to: navigation, search

Haskell,是一门纯正的函数式程序设计语言。特式是利用很简单的叙述就可以完成 Linked List、矩阵等数据结构。

目录

示例

Haskell的函数结构

函数语言中的"Hello world"阶乘函数。用 Haskell 如下表达:

fac:: Integer -> Integer
fac 0 = 1
fac n | n > 0 = n * fac (n-1)

它将阶乘描述成有一个基本终止情形的递归函数。这跟数学定义中对阶乘的描述很相似。事实上,Haskell中很多的代码的语法与功能都和数学一致。

上面的递归函数的第一行是可选的,它描述了这个函数的types。它可以读作函数fac (fac) 有类型 (::) 从整型到整型 (Integer -> Integer)。这就是说,它以一个整型为参数,并且返回另一个整型。

第二行依赖的模式匹配,是Haskell程序中一个重要的部分。注意函数的参数是用空格分隔而不是在括号中。当函数的参数是 0 时,它会返回整型 1。对于其他的情况则尝试第三行。这是一个递归,它会一直执行只到满足基本的情形。负参数会导致无限递归,一个guard保证第三行不会执行负参数。

"Prelude"是一个类似 C 中标准库的小函数集合。使用 Prelude,并用无指定参数的写法,它可以改成:

fac = product . enumFromTo 1

上面的定义接近于数学中的定义:f = g o h (参见 复合函数),这并不是一个对变量赋值的语句。

Haskell的高阶函数

Haskell中可以定义高阶函数(Higher-order Function),既将函数作为一个参数来使用,也可以将函数作为结果输出,例如

f:: (Int -> Int) -> (Int -> Int)
f g = \x -> g x + 5

这里f就是一个高阶函数,它取一个从Int到Int的函数g作为参数,输出一个从Int到Int的函数。高阶函数的使用在一些情况下将极大的简化代码。

Haskell的编译器

外部连结



这是一篇还未完成的小作品。欢迎您积极帮助天下维客编辑扩充其内容


Personal tools
工具
金银币拍卖 金币拍卖预展  金银币网店 熊猫金银币 生肖金银币