Haskellに次のコードを書くためのより良い、より簡潔な方法がありますか?私はif..else
を使用しようとしましたが、それは以下より読みにくくなってきています。私はxs
のリスト(これは巨大です!)を8回通過することを避けたいだけです。要素を8つのグループに分けるだけです。 groupBy
からData.List
までは、1つのテスト条件関数、(a -> a -> Bool) -> [a] -> [[a]]
しか使用しません。複数のテスト関数を持つgroupBy
x1 = filter (check condition1) xs
x2 = filter (check condition2) xs
x3 = filter (check condition3) xs
x4 = filter (check condition4) xs
x5 = filter (check condition5) xs
x6 = filter (check condition6) xs
x7 = filter (check condition7) xs
x8 = filter (check condition8) xs
results = [x1,x2,x3,x4,x5,x6,x7,x8]
非常にエレガントですが、私はLandeiの答えがより効率的だと思います。 – is7s
私はそれほど確信していません。まず、Landei'sは何かをする前にリスト全体を逆転させます。 – ehird
他の議論の後で、私はより良い実装を思いついた。私は私の答えを更新しました。 – ehird