第四个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#、Haskell、Objective-C、Open Inventor、程序人生...
---- GTD伴我实现人生目标
---- 区块链生存训练
---- 用欧拉计划学Rust编程
---- 申龙斌的读书笔记(2011-2019)
----