《Haskell函数式编程入门》—— 第1章,第1.4节.hs和.lhs文件、注释与库函数

1.4 .hs和.lhs文件、注释与库函数
GHCi和Hugs可以解析扩展名为.hs和.lhs的文件。两者所写程序在语法上完全相同,它们的差别是.lhs(literate Haskell script)文件是为了能让Haskell的代码生成文档。有效程序代码可以用“大于号(>)”和空格开头。比如:

add :: Int -> Int -> Int
add x y = x + y
不以大于号和空格开头的内容将被视作注释处理,且注释与代码间必须有一行以上的间隔。还有一些.lhs代码文件中的代码以begin{code}以end{code}结尾—如果.lhs文件遵守一定的格式,就可以使用lhs2tex生成非常精美的文档以供人们阅读。如何使用读者可以参阅http://www.andresloeh.de/lhs2tex/

使用.lhs文件书写代码的优点很明显。函数式编程的代码往往蕴含了编写者很大的思考量,需要用大段的注释进行解释说明,而代码又不是特别长,这个时候用.lhs最好不过了—哪部分是代码、哪部分是注释一目了然,还能生成.pdf文件方便阅读与传播。

但是,当不需要多行注释还有生成文档的时候就可以用扩展名为.hs的文件。.hs文件里全局的函数要起头写,不可以有其他字符;单行的注释用两个减号(--)开头,多行注释用“{-”开头,以“-}”结尾。全书对编写的函数有非常多的阐述与解释,并不包括在源代码中,所以用.hs文件就可以了。有时需要在文件头处对GHC与GHCi声明一些编译器参数,此时需要在文件首处定义,并且以“{-#”开头,用“#-}”结尾。在后面的章节中,再具体学习使用编译器参数。

在启动GHCi的时候,Prelude中的一些预加载函数已经被导入了。Prelude里有很多常用的函数以及数据。安装hugs的读者可以到C:Program FilesWinHugspackages hugsbase Hugs下找到Prelude.hs库函数文件,有兴趣的读者可以打开prelude或其他文件浏览代码。使用GHCi的读者可以在开始菜单的程序中找到Haskell的网页文档,打开Library链接,找到Prelude,再点击source查看。读者可以通过查看这些源文件来感受Haskell程序的风格。

Haskell的函数库是非常强大的。在发展的多年过程中,有很多库可供用户直接使用,也有像Java一样的API可以查阅。WinGHCi的用户一样可以在开始菜单程序中网页文档中找到,也可以在http://www.haskell.org/ghc/docs/latest/html/libraries在线浏览。第4章将会对几个库函数使用做简要的介绍。

时间: 2024-10-29 06:38:58

《Haskell函数式编程入门》—— 第1章,第1.4节.hs和.lhs文件、注释与库函数的相关文章

《Haskell函数式编程入门》——导读

第1章Haskell简介 第1章第1节Haskell的由来第1章第2节Haskell编译器的安装以及编写环境第1章第3节GHCi的使用第1章第4节.hs和.lhs文件.注释与库函数第1章第5节第一个Haskell程序HelloWorld!第1章第6节小结第2章类型系统和函数第3章基于布尔值的函数第4章库函数及其应用第5章递归函数第6章列表内包第7章高阶函数与复合函数第8章定义数据类型第9章定义类型类第10章Monad初步第11章系统编程及输入/输出第12章记录器Monad.读取器Monad.状态

《Haskell函数式编程入门》—— 第1章,第1.6节本章小结

本章小结 学习本章后,相信读者对Haskell应该有了大致的了解.GHCi是一个常用的测试代码的工具,希望读者可以花更多的时间来熟悉.细心的读者可能会发现Haskell与C语言编译后可执行文件的大小有很大差异.其实,Haskell使用内存空间和硬盘空间的效率是有些低的,这也是早期函数式编程没有比C一类的语言更流行的原因之一.但是,如今计算机硬件已经发展到内存和硬盘不会像以前那样限制函数式编程语言能力了,在时间和空间的效率上也可以手动或自动调试优化.因此,相信在不久的未来,函数式编程会以它精炼.缜

《Haskell函数式编程入门》—— 第1章,第1.5节第一个Haskell程序HelloWorld!

1.5 第一个Haskell程序HelloWorld! HelloWorld程序虽然不能完全展示Haskell编程的风格与优势,但学习计算机编程都是从这里开始的.现在写一个HelloWorld程序,当作开始学习Haskell的第一步吧! 文本编辑器中输入: main = putStrLn "Hello,World!" 保存并命名为Helloworld.hs. 这里可以看到,Haskell和C.Java一样,都以一个名叫main的函数作为程序的开始运行的入口.保存代码文件,打开命令行窗口

《Haskell函数式编程入门》—— 第1章,第1.3节GHCi的使用

1.3 GHCi的使用 GHCi是一个对函数进行测试与调式的工具,可以导入Haskell源代码文件,然后调用其中的函数.查看函数的信息等.本节先学习如何使用GHCi中的命令来对文件和库进行导入等,再来了解如何在GHCi中调用函数. 启动GHCi后可以看到GHCi的版本,还有导入的库等,可以不用管它们,最后一行会有一个Prelude>提示符,其中Prelude指的是GHCi在运行时一个默认的初始环境.它是一个定义了很多类型与函数的库.启动GHCi后,用户可以不做任何设置而直接使用其中定义的内容.下

Haskell函数式编程之四-List操作

List在函数式语言中是一个重要的抽象,很多事情离了它就很难做到.函数式语言的鼻祖Lisp名称就来自List processing. Haskell本身也给List操作提供了一系列的操作符以及库函数. 对列表操作的运算符 :将一个元素放置到列表的前端. 1 2 3 4 5 6 7 8 Prelude> 1 : [] [1] Prelude> 2 : [3,4,5] [2,3,4,5] Prelude> 'a' : ['g','h','d'] "aghd" Prelud

Haskell函数式编程之三-纯函数式编程特点

函数式编程的定义是: In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids stateand mutable data. 即:函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了引入状态及可变数据. 它更强调函数的应用,而不像命令式编

Haskell函数式编程之一-语言初体验

如果你是使用面向对像语言进行编程的程序员,那么你应该去了解掌握一门动态语言.而动态语言的魔力之一就是函数式编程.而要学习了解函数式编程,那么haskell是一个不错的选择. Haskell是是一门纯函数式编程语言(purely functional programming language).在其世界中函数是第一等对象.并且在haskell中没有赋值,例如你指派a的值为5,然后你无法再给a分配其它的值.所以你不能像命令式语言那样命令电脑"要做什么",而是通过函数来描述出问题"

函数式编程入门教程

你可能听说过函数式编程(Functional programming),甚至已经使用了一段时间. 但是,你能说清楚,它到底是什么吗? 网上搜索一下,你会轻松找到好多答案. 与面向对象编程(Object-oriented programming)和过程式编程(Procedural programming)并列的编程范式. 最主要的特征是,函数是第一等公民. 强调将计算过程分解成可复用的函数,典型例子就是map方法和reduce方法组合而成 MapReduce 算法. 只有纯的.没有副作用的函数,才

Haskell函数式编程之二-递归

在Haskell的世界中,没有变量赋值,流程跳转,如果要实现一些简单的功能,比如求一个数组中的最大值,都需要借助递归实现. 递归函数的定义: A function may be partly defined in terms of itself. 即如果一个函数的定义中使用了其自身,这个函数就叫做递归函数. 普通递归(traditional recursion) 我们就写一个简单的对数组求和的函数. 1 2 3 sum' :: (Num a) => [a] -> a sum' (x:xs) =