# arity-generic-liftA There's a family of functions in [Control.Applicative](https://hackage.haskell.org/package/base-4.11.0.0/docs/Control-Applicative.html) which follow the pattern `liftA2`, `liftA3`, etc. Using some tricks from Richard Eisenberg's thesis we can write them all at once. This package does exactly that, providing a function (`lift`) which is an arity-generic version of the `liftAn`. ```haskell >>> lift (\x y z -> x ++ y ++ z) (Just "a") (Just "b") (Just "c") Just "abc" ``` [Eisenberg, Richard A. “Dependent Types in Haskell: Theory and Practice.” University of Pennsylvania, 2016.](https://github.com/goldfirere/thesis/raw/master/built/thesis.pdf)