{-# LANGUAGE GADTs, TemplateHaskell, RankNTypes #-}
module SysInfo.Drasil.SystemInformation (
SystemInformation(..),
HasSystemInformation(..),
Purpose, Background, Scope, Motivation,
) where
import Language.Drasil
import Theory.Drasil
import Database.Drasil (ChunkDB)
import Control.Lens (makeClassy)
type Purpose = [Sentence]
type Background = [Sentence]
type Scope = [Sentence]
type Motivation = [Sentence]
data SystemInformation where
SI :: (CommonIdea a, Idea a,
Idea b,
Quantity e, Eq e, MayHaveUnit e,
Quantity h, MayHaveUnit h,
Quantity i, MayHaveUnit i,
HasUID j, Constrained j) =>
{ ()
_sys :: a
, ()
_kind :: b
, SystemInformation -> People
_authors :: People
, SystemInformation -> Purpose
_purpose :: Purpose
, SystemInformation -> Purpose
_background :: Background
, SystemInformation -> Purpose
_scope :: Scope
, SystemInformation -> Purpose
_motivation :: Motivation
, ()
_quants :: [e]
, SystemInformation -> [InstanceModel]
_instModels :: [InstanceModel]
, SystemInformation -> [DataDefinition]
_datadefs :: [DataDefinition]
, SystemInformation -> [String]
_configFiles :: [String]
, ()
_inputs :: [h]
, ()
_outputs :: [i]
, ()
_constraints :: [j]
, SystemInformation -> [ConstQDef]
_constants :: [ConstQDef]
, SystemInformation -> ChunkDB
_sysinfodb :: ChunkDB
, SystemInformation -> ChunkDB
_usedinfodb :: ChunkDB
} -> SystemInformation
makeClassy ''SystemInformation