Proxy package:singletons

Proxy is a type that holds no data, but has a phantom parameter of arbitrary type (or even kind). Its use is to provide type information, even though there is no value available of that type (or it may be too costly to create one). Historically, Proxy :: Proxy a is a safer alternative to the undefined :: a idiom.
>>> Proxy :: Proxy (Void, Int -> Int)
Proxy
Proxy can even hold types of higher kinds,
>>> Proxy :: Proxy Either
Proxy
>>> Proxy :: Proxy Functor
Proxy
>>> Proxy :: Proxy complicatedStructure
Proxy
Allows creation of a singleton when a proxy is at hand.
Allows creation of a singleton when a proxy# is at hand.
Allows creation of a singleton for a unary type constructor when a proxy is at hand.
Allows creation of a singleton for a unary type constructor when a proxy# is at hand.
Allows creation of a singleton for a binary type constructor when a proxy is at hand.
Allows creation of a singleton for a binary type constructor when a proxy# is at hand.