コード例は千の言葉に値するので、それから始めます。
testList = [1,2,2,3,4,5]
testSet = map sumMapper $ tails testList
where sumMapper [] = []
sumMapper (a:b) = sumMap a b
sumMap a b = map (+ a) b
このコードはリストを取り、すべての要素を合計してそれらすべての合計を取得します (これの効率にも興味があります)。testSet の出力は次のとおりです。
[[3,3,4,5,6],[4,5,6,7],[5,6,7],[7,8],[9],[],[]]
これらのリストの和集合を見つけたい(セットにするため)が、次のように感じます:
whatIWant = foldl1 union testSet
パフォーマンスが低下します (実際のリストは数千の要素になります)。
これは正しい解決策ですか、それとも明らかな何かが欠けていますか?