The reverse-arguments package

[ Tags: bsd3, data, library ] [ Propose Tags ]

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

[Skip to Readme]

Properties

Versions 0.1.0.0
Dependencies base (>=4.8 && <5) [details]
License BSD3
Copyright (c) 2016 Anselm Jonas Scholl
Author Anselm Jonas Scholl
Maintainer anselm.scholl@tu-harburg.de
Category Data
Source repository head: git clone https://github.com/ajscholl/reverse-arguments.git
Uploaded Fri Mar 25 14:37:26 UTC 2016 by JonasScholl
Distributions NixOS:0.1.0.0
Downloads 118 total (7 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for reverse-arguments-0.1.0.0

[back to package description]

Reversing function arguments

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