This module provides the reverseArgs
function which flips
the arguments of a function of arbitrary arity. The return
value of the flipped function can not be fully polymorphic
as this could imply it is a function.
Example:
myFlip :: (a -> b -> c -> d -> [e]) -> d -> c -> b -> a -> [e]
myFlip = reverseArgs
However, if you supply a proof (of the form IsFun a ~ 'False
)
that a is not a function, you can also return a polymorphic type.
Example:
myFlip :: IsFun e ~ 'False => (a -> b -> c -> d -> e) -> d -> c -> b -> a -> e
myFlip = reverseArgs