:: (c -> d) -> (a -> b -> c) -> a -> b -> d -package:opaleye -is:exact package:speculate