DataTypes.hs revision 902bfaac7e88afebb6684fe1f2414ae2efbc7edf
842ae4bd224140319ae7feec1872b93dfd491143fielding{- |
842ae4bd224140319ae7feec1872b93dfd491143fieldingModule : $Header$
842ae4bd224140319ae7feec1872b93dfd491143fieldingDescription : Internal data types of the CMDL interface
842ae4bd224140319ae7feec1872b93dfd491143fieldingCopyright : uni-bremen and DFKI
842ae4bd224140319ae7feec1872b93dfd491143fieldingLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
842ae4bd224140319ae7feec1872b93dfd491143fieldingMaintainer : r.pascanu@jacobs-university.de
2d2eda71267231c2526be701fe655db125852c1ffieldingStability : provisional
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcndPortability : portable
2d2eda71267231c2526be701fe655db125852c1ffielding
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcndPGIP.DataTypes describes the internal states(or datatypes) of the CMDL
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcndinterface.
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd-}
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd
2d2eda71267231c2526be701fe655db125852c1ffieldingmodule PGIP.DataTypes
2d2eda71267231c2526be701fe655db125852c1ffielding ( CMDL_State(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_History(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_UndoRedoElem(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_ListChange(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_CmdDescription(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_CmdHistoryDescription(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_CmdPriority(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_CmdFnClasses(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_CmdType(..)
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh , CMDL_CmdRequirements(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_DevGraphState(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_ProveState(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_ProofAbstractState(..)
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp , CMDL_ListAction(..)
5043abfdca708cb5acb2e43ec4d63b0a68e2012asf , CMDL_GoalAxiom(..)
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp , CMDL_Output(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_Channel(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_ChannelType(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_ChannelProperties(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_Socket(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_UseTranslation(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_ProverConsChecker(..)
2d2eda71267231c2526be701fe655db125852c1ffielding , CMDL_PrompterState(..)
2d2eda71267231c2526be701fe655db125852c1ffielding ) where
2d2eda71267231c2526be701fe655db125852c1ffielding
2d2eda71267231c2526be701fe655db125852c1ffieldingimport Static.DevGraph
2d2eda71267231c2526be701fe655db125852c1ffieldingimport Logic.Comorphism
2d2eda71267231c2526be701fe655db125852c1ffieldingimport Logic.Logic
7cd1840a91b1a17b40e879e1ab381b4123caa941rbbimport System.IO
7cd1840a91b1a17b40e879e1ab381b4123caa941rbbimport Network
7cd1840a91b1a17b40e879e1ab381b4123caa941rbbimport Syntax.AS_Library
7cd1840a91b1a17b40e879e1ab381b4123caa941rbbimport Proofs.AbstractState
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb
f47c690c6fa01fa4334306be872da72fb9a3cdadsctemmedata CMDL_ProverConsChecker =
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb Use_prover
3d96ee83babeec32482c9082c9426340cee8c44dwrowe | Use_consChecker
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb
7cd1840a91b1a17b40e879e1ab381b4123caa941rbbdata CMDL_UseTranslation =
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb Do_translate
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb | Dont_translate
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb-- * CMDL datatypes
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb-- | CMDLState contains all information the CMDL interface
f47c690c6fa01fa4334306be872da72fb9a3cdadsctemme-- might use at any time.
7cd1840a91b1a17b40e879e1ab381b4123caa941rbbdata CMDL_State = CMDL_State {
aecb17a45c6d3ee4729ed5f68dc4270f211ee7a8fielding -- | development graph mode information
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb devGraphState :: Maybe CMDL_DevGraphState,
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb -- | prove mode information
742318b93e89c311f66b55f426c4d9cf2c14628bjim proveState :: Maybe CMDL_ProveState,
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb -- | promter of the interface
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb prompter :: CMDL_PrompterState,
f47c690c6fa01fa4334306be872da72fb9a3cdadsctemme -- | output of the last command
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb output :: CMDL_Output,
3d96ee83babeec32482c9082c9426340cee8c44dwrowe -- | history
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb history :: CMDL_History,
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb -- | open comment
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb openComment :: Bool,
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb -- | opened connections
f47c690c6fa01fa4334306be872da72fb9a3cdadsctemme connections :: [CMDL_Channel]
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb }
3d96ee83babeec32482c9082c9426340cee8c44dwrowe
7cd1840a91b1a17b40e879e1ab381b4123caa941rbbdata CMDL_PrompterState = CMDL_PrompterState {
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb fileLoaded :: String,
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb selectedNodes :: String,
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb selectedTranslations :: String,
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb prompterHead :: String
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb }
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb-- History datatypes -------------------------------------------------------
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb
742318b93e89c311f66b55f426c4d9cf2c14628bjim-- | Description of the internal history of the CMDL interface
7cd1840a91b1a17b40e879e1ab381b4123caa941rbbdata CMDL_History = CMDL_History {
f47c690c6fa01fa4334306be872da72fb9a3cdadsctemme -- | history for undo command
742318b93e89c311f66b55f426c4d9cf2c14628bjim undoList :: [CMDL_CmdHistoryDescription],
3d96ee83babeec32482c9082c9426340cee8c44dwrowe -- | history for redo command
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb redoList :: [CMDL_CmdHistoryDescription],
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf -- | for undo function history
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf oldEnv :: Maybe LibEnv,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf -- | History elements
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf undoInstances :: [([CMDL_UndoRedoElem], [CMDL_UndoRedoElem])],
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf redoInstances :: [([CMDL_UndoRedoElem], [CMDL_UndoRedoElem])]
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf }
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- | History element for the proof state, describes the value that is being
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- change
533d85911f7e4914ee5f9d5c99a2421f4ab4208asfdata CMDL_UndoRedoElem =
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf UseThmChange Bool
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | Save2FileChange Bool
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ProverChange (Maybe G_prover)
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ConsCheckerChange (Maybe G_cons_checker)
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ScriptChange String
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp | LoadScriptChange Bool
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp | CComorphismChange (Maybe AnyComorphism)
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp | ListChange [CMDL_ListChange]
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp | ProveChange LibEnv [CMDL_ListChange]
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianpdata CMDL_ListChange =
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp AxiomsChange [String] Int
742318b93e89c311f66b55f426c4d9cf2c14628bjim | GoalsChange [String] Int
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp
f47c690c6fa01fa4334306be872da72fb9a3cdadsctemme
742318b93e89c311f66b55f426c4d9cf2c14628bjim-- Command description datatypes -------------------------------------------
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp-- | Description of a command ( in order to have a uniform access to any of
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianp-- the commands
5842e6b336b1cc0252b6cc2944dd81c7d3a19a1bbrianpdata CMDL_CmdDescription = CMDL_CmdDescription {
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- cmdType :: CMDL_CmdType,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- cmdNames :: [String],
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- cmdInput :: String,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cmdInfo :: CMDL_CmdHistoryDescription,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cmdDescription :: String,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cmdPriority :: CMDL_CmdPriority,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cmdFn :: CMDL_CmdFnClasses,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cmdReq :: CMDL_CmdRequirements
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf }
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf
533d85911f7e4914ee5f9d5c99a2421f4ab4208asfdata CMDL_CmdHistoryDescription = CMDL_CmdHistoryDescription {
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cmdType :: CMDL_CmdType,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cmdNames :: [String],
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cmdInput :: String
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf }
597d160db0361084da89b9786a2f1b213385cc24wrowe
597d160db0361084da89b9786a2f1b213385cc24wrowe-- | Some commands have different status, for example 'end-script'
597d160db0361084da89b9786a2f1b213385cc24wrowe-- needs to be processed even though the interface is in reading script
597d160db0361084da89b9786a2f1b213385cc24wrowe-- state. The same happens with '}%' even though the interface is in
597d160db0361084da89b9786a2f1b213385cc24wrowe-- multi line comment state. In order not to treat this few commands
597d160db0361084da89b9786a2f1b213385cc24wrowe-- separately from the other it is easy just to give to all commands
742318b93e89c311f66b55f426c4d9cf2c14628bjim-- different priorities
597d160db0361084da89b9786a2f1b213385cc24wrowedata CMDL_CmdPriority =
597d160db0361084da89b9786a2f1b213385cc24wrowe CmdNoPriority
742318b93e89c311f66b55f426c4d9cf2c14628bjim | CmdGreaterThanComments
742318b93e89c311f66b55f426c4d9cf2c14628bjim | CmdGreaterThanScriptAndComments
c779aea0c9b7c47c2e4fd258e3f54835a849625dpoirier
c779aea0c9b7c47c2e4fd258e3f54835a849625dpoirier-- | Any command belongs to one of the following classes of functions,
597d160db0361084da89b9786a2f1b213385cc24wrowe-- a) f :: s -> IO s
742318b93e89c311f66b55f426c4d9cf2c14628bjim-- b) f :: String -> s -> IO s
742318b93e89c311f66b55f426c4d9cf2c14628bjimdata CMDL_CmdFnClasses =
742318b93e89c311f66b55f426c4d9cf2c14628bjim CmdNoInput (CMDL_State -> IO CMDL_State)
597d160db0361084da89b9786a2f1b213385cc24wrowe | CmdWithInput (String -> CMDL_State -> IO CMDL_State)
64945a581b504264270920efbad4f6af0d5a1978sf
a054609255eb3b10ed30e5471b18ea0e7d5f735esf-- | Types of different commands available (DG command, Prove command,
597d160db0361084da89b9786a2f1b213385cc24wrowe-- Info command or System command)
533d85911f7e4914ee5f9d5c99a2421f4ab4208asfdata CMDL_CmdType =
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf DgCmd
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ProveCmd
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | InfoCmd
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | SelectCmd
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | SelectCmdAll
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | SystemCmd
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | EvalCmd
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | UndoRedoCmd
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- | Datatype describing the types of commands according
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- to what they expect as input
533d85911f7e4914ee5f9d5c99a2421f4ab4208asfdata CMDL_CmdRequirements =
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf ReqNodes
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ReqEdges
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ReqNodesAndEdges
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ReqProvers
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ReqConsCheck
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ReqComorphism
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ReqFile
a054609255eb3b10ed30e5471b18ea0e7d5f735esf | ReqGNodes
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ReqGEdges
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf | ReqGNodesAndGEdges
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb | ReqAxm
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb | ReqGoal
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb | ReqNumber
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb | ReqNothing
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb | ReqUnknown
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb
742318b93e89c311f66b55f426c4d9cf2c14628bjim
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb-- Development Graph state datatypes ---------------------------------------
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb-- | During the development graph mode, the CMDL interface
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb-- will use the information stored in CMDLDevGraphState which
742318b93e89c311f66b55f426c4d9cf2c14628bjim-- consist of the library loaded and a list of all nodes
3d96ee83babeec32482c9082c9426340cee8c44dwrowe-- and edges.
11e076839c8d5a82d55e710194d0daac51390dbdsfdata CMDL_DevGraphState = CMDL_DevGraphState {
11e076839c8d5a82d55e710194d0daac51390dbdsf ln :: LIB_NAME,
7cd1840a91b1a17b40e879e1ab381b4123caa941rbb libEnv :: LibEnv
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf }
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- Prove state datatypes ---------------------------------------------------
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- | During the prove mode, the CMDL interface will use the
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- informations stored in the Prove state, which consists of
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- the list of elements selected, the list of comorphism
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- applied to the list (where the first in the list is the
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- last applied comorphism, the selected prover and the
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf-- script.
533d85911f7e4914ee5f9d5c99a2421f4ab4208asfdata CMDL_ProveState =
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf CMDL_ProveState {
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf -- | selected nodes as elements (only the theory and the
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf -- node number from where the theory was taken)
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf elements :: [CMDL_ProofAbstractState] ,
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf -- | composed comorphism resulting from all the selected
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf -- comorphisms.
533d85911f7e4914ee5f9d5c99a2421f4ab4208asf cComorphism :: Maybe AnyComorphism,
a061049790af16ffc2f0ef2885d4b145ebe2bde2trawick -- | Selected prover
a061049790af16ffc2f0ef2885d4b145ebe2bde2trawick prover :: Maybe G_prover,
a061049790af16ffc2f0ef2885d4b145ebe2bde2trawick -- | Selected consistency checker
a061049790af16ffc2f0ef2885d4b145ebe2bde2trawick consChecker :: Maybe G_cons_checker,
b42380ce3c54fdf7c50167285b58655553fc8907trawick -- | Save for each goal the output from the prover in a file
a061049790af16ffc2f0ef2885d4b145ebe2bde2trawick save2file :: Bool,
a061049790af16ffc2f0ef2885d4b145ebe2bde2trawick -- | Use proven theorems in subsequent proofs
a061049790af16ffc2f0ef2885d4b145ebe2bde2trawick useTheorems :: Bool,
cb1e20df951447249fd1344ae04a790219a16be5pquerna -- | Script to be used when proving
cb1e20df951447249fd1344ae04a790219a16be5pquerna script :: String,
2d2eda71267231c2526be701fe655db125852c1ffielding -- | If script is currently being inserted
2d2eda71267231c2526be701fe655db125852c1ffielding loadScript :: Bool
2d2eda71267231c2526be701fe655db125852c1ffielding }
2d2eda71267231c2526be701fe655db125852c1ffielding
11e076839c8d5a82d55e710194d0daac51390dbdsf
9d129b55f5a43abf43865c6b0eb6dd19bc22aba8ianh-- AbstractState depends on lid and sentence, and in order
-- not to change to much CMDLProveState requires some
-- independent type
-- also CMDL interface requires to keep track of the node
-- number
data CMDL_ProofAbstractState = forall lid1 sublogics1
basic_spec1 sentence1 symb_items1 symb_map_items1
sign1 morphism1 symbol1 raw_symbol1 proof_tree1 .
Logic lid1 sublogics1 basic_spec1 sentence1
symb_items1 symb_map_items1 sign1 morphism1
symbol1 raw_symbol1 proof_tree1 =>
Element (ProofState lid1 sentence1) Int
-- | Datatype describing the list of possible action on a list
-- of selected items
data CMDL_ListAction =
ActionSet
| ActionSetAll
| ActionDel
| ActionDelAll
| ActionAdd
data CMDL_GoalAxiom =
ChangeGoals
| ChangeAxioms
-- Communication channel datatypes -----------------------------------------
data CMDL_Output = CMDL_Output {
-- | error String, any error occurance has to fill
-- this String with an error message
errorMsg :: String,
-- | any function that needs to print something on the
-- screen should use this outputMsg to store the output
outputMsg :: String,
fatalError :: Bool
}
-- | CMDLSocket takes care of opened sockets for comunication with other
-- application like the Broker in the case of PGIP
data CMDL_Channel = CMDL_Channel {
chName :: String,
chType :: CMDL_ChannelType,
chHandler :: Handle,
chSocket :: Maybe CMDL_Socket,
chProperties :: CMDL_ChannelProperties
}
-- | Channel type describes different type of channel
data CMDL_ChannelType =
-- socket type
ChSocket
-- file type
| ChFile
-- std in
| ChStdin
-- std out
| ChStdout
-- | Channel properties describes what a channel can do
data CMDL_ChannelProperties =
ChRead
| ChWrite
| ChReadWrite
-- | Describes a socket
data CMDL_Socket = CMDL_Socket {
socketHandler :: Socket,
socketHostName :: HostName,
socketPortNumber :: PortNumber
}