近日在学习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的版本相比,稍稍有失美感:
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!