base-compat-0.12.1: A compatibility layer for base

Safe Haskell | Safe-Inferred
Language | Haskell2010

Data.Proxy.Compat

Synopsis

- module Data.Proxy
- asProxyTypeOf :: a -> proxy a -> a

# Documentation

module Data.Proxy

asProxyTypeOf :: a -> proxy a -> a #

`asProxyTypeOf` is a type-restricted version of `const`. It is usually used as an infix operator, and its typing forces its first argument (which is usually overloaded) to have the same type as the tag of the second.

    >>> import Data.Word
    >>> :type asProxyTypeOf 123 (Proxy :: Proxy Word8)
    asProxyTypeOf 123 (Proxy :: Proxy Word8) :: Word8

Note the lower-case `proxy` in the definition. This allows any type constructor with just one argument to be passed to the function, for example we could also write

    >>> import Data.Word
    >>> :type asProxyTypeOf 123 (Just (undefined :: Word8))
    asProxyTypeOf 123 (Just (undefined :: Word8)) :: Word8