8、函数式编程:以Haskell为例

函数式编程:以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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值