我想创建一个无点函数,它采用函数列表,将单个参数应用于每个列出的函数,然后通过另一个函数压缩列表。此函数的无点版本将具有以下类型签名:
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
这个实现不是无点的,我怎样才能把这个函数转换成无点表示?