module DDC.Core.Module.Export
( ExportSource (..)
, takeTypeOfExportSource
, mapTypeOfExportSource)
where
import DDC.Type.Exp
import Control.DeepSeq
data ExportSource n
= ExportSourceLocal
{ exportSourceLocalName :: n
, exportSourceLocalType :: Type n }
| ExportSourceLocalNoType
{ exportSourceLocalName :: n }
deriving Show
instance NFData n => NFData (ExportSource n) where
rnf es
= case es of
ExportSourceLocal n t -> rnf n `seq` rnf t
ExportSourceLocalNoType n -> rnf n
takeTypeOfExportSource :: ExportSource n -> Maybe (Type n)
takeTypeOfExportSource es
= case es of
ExportSourceLocal _ t -> Just t
ExportSourceLocalNoType{} -> Nothing
mapTypeOfExportSource :: (Type n -> Type n) -> ExportSource n -> ExportSource n
mapTypeOfExportSource f esrc
= case esrc of
ExportSourceLocal n t -> ExportSourceLocal n (f t)
ExportSourceLocalNoType n -> ExportSourceLocalNoType n