假設我們需要列表x
的那些元素,其中列表y
的對應元素嚴格爲正。以下任何工作的三項解決方案:列表的布爾選擇
let x = [1..4]
let y = [1, -1, 2, -2]
[ snd both | both <- zip (map (> 0) y) x, fst both ]
或
map snd $ filter fst $ zip (map (>0) y) x
或
sel :: [Bool] -> [a] -> [a]
sel [] _ = []
sel (True : xs) (y : ys) = y : sel xs ys
sel (False : xs) (y : ys) = sel xs ys
sel (map (> 0) y) x
然而,是什麼促使這是在R語言這個可以緊湊這樣寫的:
x[y > 0]
並給出了多少,我想知道是否有一個更短/更好的方式在Haskell做到這一點?
非常好的答案。 – user1189687 2012-02-06 14:15:43