関数のリストを受け取り、リストされた各関数に単一の引数を適用し、別の関数を介してリストを圧縮するポイントフリー関数を作成したいと考えています。この関数の無意味なバージョンには、次の型シグネチャがあります。
multiplex :: ([a] -> b) -> [(c -> a)] -> (c -> b)
そして使用例:
invariantsHold :: (Integral a) => a -> Bool
invariantsHold = multiplex (all id) [(>=0),(<=50),even]
以下のように書くことができました。
multiplex :: ([a] -> b) -> [(c -> a)] -> c -> b
multiplex f xs e = f $ map ((flip ($)) e) xs
この実装はポイントフリーではありません。この関数をポイントフリー表現に変換するにはどうすればよいですか?