第四个haskell程序:将字符串中的空格去掉

为了方便,后面的程序不再写出完整的可执行程序,而是用ghci交互执行。

(1) 写一个hello4.hs文件,只包含下面一行

removeBlanks str = [c | c <- str, c /= ' ']

(2) 在控制台中执行ghci命令,注意先转到hello4.hs文件所在的目录,会出现Prelude>提示符

(3) 加载hello4.hs中的函数定义,因为不能在ghci直接定义函数,只能从文件中加载(多谢朋友提醒,在ghci中可以直接定义函数,前面加上关键字let即可),执行命令

:load hello4.hs

(4) 执行

removeBlanks "H e l l o H a s k e l l"

结果为:

HelloHaskell

 

要点:

(1) [c | c <- str, c /= ' '] 在haskell的术语中叫作List comprehension,python语言也借用了这个漂亮语法,有人翻译成“列表推导”,有人翻译成“列表内涵”,个人还是喜欢前者。

(2) 竖杠的左侧是一个表达式,右侧是生成器generator, 逗号后面可以跟上一个过滤条件(返回值为Boolean类型)

(3) 生成器可以有多个,右边的生成器改变得比左边的快,例如:

[ (x, y) | x <- [1..3], y <- "ab"] 的结果是:

[(1,'a'), (1,'b'), (2,'a'), (2,'b'), (3,'a'), (3,'b')]

posted @ 2008-01-29 11:04  申龙斌的程序人生  阅读(1323)  评论(1编辑  收藏  举报