Data.Listのパーティションで〜(レイジーパターンマッチング)を使用することのパフォーマンス上の利点は何ですか。レイジーパターンマッチングの考案された例は、タプルコンストラクター内の値が使用されない場合(f(x、y)= 1)に役立つことを示唆しています。パーティション(以下の選択)では、リストts、fsが常に使用されます(xに適用される述語pがTrueであるかどうか)。これは、十分な情報に基づいて使用する決定であると確信しています〜が、ポイントは何ですか?厳密なパターンマッチングをしてみませんか?
partition :: (a -> Bool) -> [a] -> ([a],[a])
{-# INLINE partition #-}
partition p xs = foldr (select p) ([],[]) xs
select :: (a -> Bool) -> a -> ([a], [a]) -> ([a], [a])
select p x ~(ts,fs) | p x = (x:ts,fs)
| otherwise = (ts, x:fs)
(注:私はすでにここを見ました!それは上記の質問に答えません)