第四个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')]



----==== Email: slofslb (GTD) qq.com 请将(GTD)换成@ ====----
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
作者:申龙斌的程序人生

---- 魔方桥牌象棋、游戏人生...
---- BASIC、C++、JAVA、C#HaskellObjective-COpen Inventor、程序人生...
---- GTD伴我实现人生目标
---- 区块链生存训练
---- 用欧拉计划学Rust编程
---- 申龙斌的读书笔记(2011-2019)
----
原文地址:https://www.cnblogs.com/speeding/p/1057219.html