Proxy
code: (hs)
ghci> import Data.Proxy
ghci> :t Proxy
Proxy :: Proxy t
ghci> :t Proxy :: Proxy Int
Proxy :: Proxy Int :: Proxy Int
DataKinds と組み合わせることで、任意の文字列や自然数を Proxy に乗せることができる。 code: (hs)
ghci> :set -XDataKinds
ghci> :t Proxy :: Proxy 0
Proxy :: Proxy 0 :: Proxy 0
ghci> :t Proxy :: Proxy "abc"
Proxy :: Proxy "abc" :: Proxy "abc"
TypeApplicationsによって必要性は薄れたが、型の情報を明示的に渡せるので型レベルプログラミングの必需品として名高い。モナドでもあるので、稀ではあるが「何もしないモナド」が必要なときにも使える。