在这里总结一下我遇到的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个元素,如果你不取,那些元素就是不存在的,这就是惰性。
分享到:
相关推荐
6. **API设计**:haskell-multihash的API设计遵循Haskell的惯用法,易于理解和使用,同时也支持类型级别的操作,如通过类型类进行泛型编程。 7. **兼容性**:由于Multihash是一个跨语言的标准,因此haskell-...
HSIRC库的API设计遵循了Haskell的惯用法,比如使用类型类和Monads来处理异步操作和状态。 在`hsirc-master`压缩包中,通常会包含以下文件和目录: - `src/`: 包含HSIRC库的主要源代码文件,如`Message.hs`(解析和...
Amazonka的API设计遵循了Haskell的惯用法,使得Haskell开发者能无缝地融入AWS生态系统。例如,它使用Haskell的类型系统来表示AWS的资源和操作,这有助于在编译时捕获错误,并提供类型安全的API调用。此外,Amazonka...
5. **高级接口**:htaglib的API设计遵循Haskell的惯用法,提供了一致且易于使用的接口。例如,元数据的读写操作可能通过`Tag`类型进行,而文件操作则可能通过`AudioFile`类型完成。 6. **错误处理**:Haskell的纯...
它的API设计遵循Haskell的惯用法,使得熟悉Haskell的用户能够快速上手。此外,由于Haskell的惰性求值特性,easytensor还能有效地处理大型数据集,只有在需要计算时才进行实际的运算,从而节省内存资源。 总结来说,...