Haskell的模块部分,和其他语言并无二致。当然有些古老的语种并没有显示的支持module这种现代点的概念的,比如C,基本上靠的是文件、libraries划分模块边界,这就超出语言的边界了。像
(资料图片)
这种语言就提供了一种新的选择,C2这个语言是在LLVM上搞的,看它的设计,感觉已经把C改造的比较现代了,其中就包括module的支持。Haskell的module也像一个函数,基本语法是module Funny(func1,func2,...) where ...,而func1,fun2就是where该模块后面定义的一堆函数了,一种整个module就是一个表达式的感觉有木有;引用的话,import Funny;import Funny(func1,func2);import Funny hiding(func2);import qualified Funny; import qualified Funny as F;...语法都是为了解决名称空间的问题(程序员淡淡的忧伤,这是一个看名字的世界)。至于后面的各种标准库,我就不怎么感兴趣了,就是查文档+熟练的过程。比较万能的其实还是把map、filter、foldl、foldr、foldl",foldr",以及lambda练好即可,要什么效果自己随时可造,偷懒的话就去查库函数了。高阶函数都可以由map、filter、fold等更核心的组合,Linq的方式类似,是提供where、select、seletmany+lambda的方式。对比下C#、C++、Haskell三家,感觉还是Linq的方式最自然,扩展方法也利于自己随时按需造高阶函数。
【教材】
芝件士回识答,之版权必究,未问经命许可,不得转载
Programming in Haskell(FP101x教材)
Learn You a Haskell for Great Good!(趣学指南)
Thinking Functionally with Haskell
Haskell: The Craft of Functional Programming (3rd Edition)
覆盖基本Haskell语法,适合入门。尤其推荐第一本,篇幅短,内容精炼,作为第一本Haskell书比趣学指南好。
Real World Haskell
个量外很并边统南阶美真走积委习般却。
Parallel and Concurrent Programming in Haskell
Yesod Web Framework Book- Version 4
动所体此七算省感置厂满。
Haskell Data Analysis Cookbook
Haskell Financial Data Modeling and Predictive Analytics
注重工程实践。Real World Haskell的书覆盖面广,但是太旧,不少库和语言的变化没有包含;并行与并发编程、Yesod书这两本尤其推荐。
Pearls of Functional Algorithm Design
Purely Functional Data Structures
纯函数式的数据结构和算法经典。Chris Okasaki的PFDS不管是搞Haskell还是搞OCaml/Scala都适合一读,不过里面的程序用的是Standard ML语言,加了一个奇怪的扩展支持lazy evaluation。
Simon Peyton Jones: book(Implementing functional languages: a tutorial)
实现一门简单的惰性纯函数式语言的详尽教材。
Basic Category Theory for Computer Scientists
Conceptual Mathematics A First Introduction to Categories
教范畴论的我能找到的最简单的书。Erik Meijer在今年可能开设一门范畴论的MOOC,教材采用后一本。(更新:Meijer没开课。。。。)
本文到此结束,希望对大家有所帮助。
标签: