近日在学习Haskell,对其Parallel list comprehension有点兴趣,比如她可以非常容易地解决这样的问题:
将192.168.0.1->254至192.168.3.1->254区间内的所有IP地址列出来
Prelude> [[a,b,c,d] | a <- [192], b <- [168], c <- [0..3], d <- [1..254]]
[[192,168,0,1],[192,168,0,2],[192,168,0,3],[192,168,0,4],[192,168,0,5],[192,168,0,6]
.....
.....
,[192,168,3,251],[192,168,3,252],[192,168,3,253],[192,168,3,254]]
Python从2.0版开始也引入了这一特征,与Haskell的版本相比,稍稍有失美感:
[(a,b,c,d) for a in [192] for b in [168] for c in range(0, 4) for d in range(1, 255)]
COOL!
将192.168.0.1->254至192.168.3.1->254区间内的所有IP地址列出来
Prelude> [[a,b,c,d] | a <- [192], b <- [168], c <- [0..3], d <- [1..254]]
[[192,168,0,1],[192,168,0,2],[192,168,0,3],[192,168,0,4],[192,168,0,5],[192,168,0,6]
.....
.....
,[192,168,3,251],[192,168,3,252],[192,168,3,253],[192,168,3,254]]
Python从2.0版开始也引入了这一特征,与Haskell的版本相比,稍稍有失美感:
[(a,b,c,d) for a in [192] for b in [168] for c in range(0, 4) for d in range(1, 255)]COOL!
本文通过一个实例对比展示了Haskell与Python中列表推导式的使用方式,具体任务为生成一个特定范围内的IPv4地址列表,突出了两种语言在语法上的特点与美感。
9095

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



