:: (a -> a -> b) -> (c -> a) -> c -> c -> b package:regex-tdfa