Haskell惯用法

在这里总结一下我遇到的Haskell惯用法:

[a,b,c] !! 1


列表后跟两个感叹号和一个index,表示取出该列表中位于该index的元素。

GHCi中的一些宏命令:

:cd 更改当前目录

:load 或者 :l 加载module(hs文件)

:reload 或者 :r 重新加载最近一次加载的module文件

:type 或者 :t 显示后面表达式的类型

:help 列出常用的GHCi命令

Haskell中有Range这个类型,比如

let a = [1..10]

a这就是一个[1,2,3,4,5,6,7,8,9,10]的list,这个list等于[1..10]这个range

定义一个无限长度的list是这样写:

let a = [1..]

后面没有上线所以这个list就无限长

再介绍一个函数:

take 10 a

取出a这个list中的前10个元素

Haskell的一个语言特性是 惰性求值

怎么体现Haskell的惰性呢?

我们刚才不是定义了一个无限长的List么?let a = [1..]

由于a没有定义上限,所以计算它的长度是永远也计算不完的,取a的元素也是取不尽的,

这样我们用take方法取a的前1000个元素,当你取的时候计算机就给你计算出这个range的前1000个元素,当你要取到1001个元素的时候,它再给你计算出第1001个元素,如果你不取,那些元素就是不存在的,这就是惰性。

你可能感兴趣的:(C++,c,C#,haskell)