{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Language.Symantic.Type.Maybe where import Data.Proxy import Language.Symantic.Type.Common -- * Type 'Type_Maybe' -- | The 'Maybe' type. type Type_Maybe = Type_Type1 Maybe instance -- String_from_Type String_from_Type root => String_from_Type (Type_Maybe root) where string_from_type (Type_Type1 _f a) = "Maybe" ++ " (" ++ string_from_type a ++ ")" -- | Inject a 'Type_Maybe' within a root type. type_maybe :: Lift_Type_Root Type_Maybe root => root h_a -> root (Maybe h_a) type_maybe = lift_type_root . Type_Type1 (Proxy::Proxy Maybe)