函数式编程:以Haskell为例
在函数式编程中,将数据置于首位是有效使用工具的关键。若在函数式语言中采用完全命令式的方法,往往难以取得理想效果,因为工具并非为此设计。
从Unix管道理解函数式思维
Unix shell中的管道是理解函数式思维的良好入门。例如,要找出登录名以 “foo” 开头的用户所拥有的最消耗内存的三个进程,虽无现成的Unix命令,但可通过组合小工具实现。可能会用到 ps 列出进程, grep 筛选匹配行, sort 按特定列排序,最后用 head 获取前几行。
再如,统计用户 Fred 或 Joe 运行的使用超过 100M 虚拟内存的进程数量,可能会用到 wc 计数,用 awk (或 perl 、 ruby )进行数值过滤。关键在于关注使用的数据以及如何通过一系列步骤对数据进行转换。
快速练习:“函数式Fizz Buzz”
下面通过一个简单练习,看看仅通过初步理解解决方案并查看对应代码,能对Haskell有多少理解。“函数式Fizz Buzz” 任务是每三步输出 “Fizz”,每五步输出 “Buzz”,有时周期会重合。
threes = cycle ["", "", "Fizz"]
fives = cycle ["", "", "", "", "Buzz"]
cycle xs = xs ++ cy
超级会员免费看
订阅专栏 解锁全文
1041

被折叠的 条评论
为什么被折叠?



