Так как GHC 7.8, Typeable
является полиподобным. Глядя на список встроенных Typeable
экземпляров в документации, я заметил что-то интересное:
Typeable ((* -> *) -> Constraint) Alternative
Typeable ((* -> *) -> Constraint) Applicative
Typeable (* -> Constraint) Monoid
По-видимому, это позволило посмотреть на представления типов (определенных) типов вида Constraint
:
Prelude Data.Monoid Data.Typeable> typeRep $ (Proxy :: Proxy (Monoid Int))
Monoid Int
Используются ли какие-либо функции для этой функции или были ли они просто доступны случайно?