| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Embedded.Imperative.CMD
Description
- data Ref a
- data RefCMD fs a where
- NewRef :: pred a => String -> RefCMD (Param3 prog exp pred) (Ref a)
- InitRef :: pred a => String -> exp a -> RefCMD (Param3 prog exp pred) (Ref a)
- GetRef :: pred a => Ref a -> RefCMD (Param3 prog exp pred) (Val a)
- SetRef :: pred a => Ref a -> exp a -> RefCMD (Param3 prog exp pred) ()
- UnsafeFreezeRef :: pred a => Ref a -> RefCMD (Param3 prog exp pred) (Val a)
- data Arr i a
- data IArr i a
- data ArrCMD fs a where
- NewArr :: (pred a, Integral i, Ix i) => String -> exp i -> ArrCMD (Param3 prog exp pred) (Arr i a)
- ConstArr :: (pred a, Integral i, Ix i) => String -> [a] -> ArrCMD (Param3 prog exp pred) (Arr i a)
- GetArr :: (pred a, Integral i, Ix i) => Arr i a -> exp i -> ArrCMD (Param3 prog exp pred) (Val a)
- SetArr :: (pred a, Integral i, Ix i) => Arr i a -> exp i -> exp a -> ArrCMD (Param3 prog exp pred) ()
- CopyArr :: (pred a, Integral i, Ix i) => (Arr i a, exp i) -> (Arr i a, exp i) -> exp i -> ArrCMD (Param3 prog exp pred) ()
- UnsafeFreezeArr :: (pred a, Integral i, Ix i) => Arr i a -> ArrCMD (Param3 prog exp pred) (IArr i a)
- UnsafeThawArr :: (pred a, Integral i, Ix i) => IArr i a -> ArrCMD (Param3 prog exp pred) (Arr i a)
- data Border i
- borderVal :: Border i -> i
- borderIncl :: Border i -> Bool
- type IxRange i = (i, Int, Border i)
- data ControlCMD fs a where
- If :: exp Bool -> prog () -> prog () -> ControlCMD (Param3 prog exp pred) ()
- While :: prog (exp Bool) -> prog () -> ControlCMD (Param3 prog exp pred) ()
- For :: (pred i, Integral i) => IxRange (exp i) -> (Val i -> prog ()) -> ControlCMD (Param3 prog exp pred) ()
- Break :: ControlCMD (Param3 prog exp pred) ()
- Assert :: exp Bool -> String -> ControlCMD (Param3 prog exp pred) ()
- class ToIdent a => IsPointer a where
- data PtrCMD fs a where
- data Handle
- stdin :: Handle
- stdout :: Handle
- data PrintfArg exp where
- mapPrintfArg :: (forall a. exp1 a -> exp2 a) -> PrintfArg exp1 -> PrintfArg exp2
- mapPrintfArgM :: Monad m => (forall a. exp1 a -> m (exp2 a)) -> PrintfArg exp1 -> m (PrintfArg exp2)
- class (Typeable a, Read a, PrintfArg a) => Formattable a where
- data FileCMD fs a where
- FOpen :: FilePath -> IOMode -> FileCMD (Param3 prog exp pred) Handle
- FClose :: Handle -> FileCMD (Param3 prog exp pred) ()
- FEof :: Handle -> FileCMD (Param3 prog exp pred) (Val Bool)
- FPrintf :: Handle -> String -> [PrintfArg exp] -> FileCMD (Param3 prog exp pred) ()
- FGet :: (pred a, Formattable a) => Handle -> FileCMD (Param3 prog exp pred) (Val a)
- newtype Ptr a = PtrComp {}
- data Object = Object {}
- class Arg arg pred where
- data FunArg exp pred where
- mapFunArg :: (forall a. exp1 a -> exp2 a) -> FunArg exp1 pred -> FunArg exp2 pred
- mapFunArgM :: Monad m => (forall a. exp1 a -> m (exp2 a)) -> FunArg exp1 pred -> m (FunArg exp2 pred)
- class ToIdent obj => Assignable obj
- data C_CMD fs a where
- NewCArr :: (pred a, Integral i, Ix i) => String -> Maybe i -> exp i -> C_CMD (Param3 prog exp pred) (Arr i a)
- ConstCArr :: (pred a, Integral i, Ix i) => String -> Maybe i -> [a] -> C_CMD (Param3 prog exp pred) (Arr i a)
- NewPtr :: pred a => String -> C_CMD (Param3 prog exp pred) (Ptr a)
- PtrToArr :: Ptr a -> C_CMD (Param3 prog exp pred) (Arr i a)
- NewObject :: String -> String -> Bool -> C_CMD (Param3 prog exp pred) Object
- AddInclude :: String -> C_CMD (Param3 prog exp pred) ()
- AddDefinition :: Definition -> C_CMD (Param3 prog exp pred) ()
- AddExternFun :: pred res => String -> proxy res -> [FunArg exp pred] -> C_CMD (Param3 prog exp pred) ()
- AddExternProc :: String -> [FunArg exp pred] -> C_CMD (Param3 prog exp pred) ()
- CallFun :: pred a => String -> [FunArg exp pred] -> C_CMD (Param3 prog exp pred) (Val a)
- CallProc :: Assignable obj => Maybe obj -> String -> [FunArg exp pred] -> C_CMD (Param3 prog exp pred) ()
- InModule :: String -> prog () -> C_CMD (Param3 prog exp pred) ()
References
Mutable reference
data RefCMD fs a where Source #
Commands for mutable references
Constructors
| NewRef :: pred a => String -> RefCMD (Param3 prog exp pred) (Ref a) | |
| InitRef :: pred a => String -> exp a -> RefCMD (Param3 prog exp pred) (Ref a) | |
| GetRef :: pred a => Ref a -> RefCMD (Param3 prog exp pred) (Val a) | |
| SetRef :: pred a => Ref a -> exp a -> RefCMD (Param3 prog exp pred) () | |
| UnsafeFreezeRef :: pred a => Ref a -> RefCMD (Param3 prog exp pred) (Val a) |
Instances
| HFunctor * k1 (* -> *, (* -> Constraint, *)) (RefCMD (k1 -> *)) Source # | |
| HBifunctor * * (* -> Constraint, *) (RefCMD (* -> *)) Source # | |
| (:<:) * (* -> *, (* -> *, (* -> Constraint, *))) (RefCMD (* -> *)) instr => Reexpressible * (* -> Constraint, *) (RefCMD (* -> *)) instr env Source # | |
| InterpBi * (* -> Constraint, *) (RefCMD (* -> *)) IO (Param1 (* -> Constraint) pred) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) (RefCMD (* -> *)) Source # | |
Arrays
Mutable array
Immutable array
data ArrCMD fs a where Source #
Commands for mutable arrays
Constructors
| NewArr :: (pred a, Integral i, Ix i) => String -> exp i -> ArrCMD (Param3 prog exp pred) (Arr i a) | |
| ConstArr :: (pred a, Integral i, Ix i) => String -> [a] -> ArrCMD (Param3 prog exp pred) (Arr i a) | |
| GetArr :: (pred a, Integral i, Ix i) => Arr i a -> exp i -> ArrCMD (Param3 prog exp pred) (Val a) | |
| SetArr :: (pred a, Integral i, Ix i) => Arr i a -> exp i -> exp a -> ArrCMD (Param3 prog exp pred) () | |
| CopyArr :: (pred a, Integral i, Ix i) => (Arr i a, exp i) -> (Arr i a, exp i) -> exp i -> ArrCMD (Param3 prog exp pred) () | |
| UnsafeFreezeArr :: (pred a, Integral i, Ix i) => Arr i a -> ArrCMD (Param3 prog exp pred) (IArr i a) | |
| UnsafeThawArr :: (pred a, Integral i, Ix i) => IArr i a -> ArrCMD (Param3 prog exp pred) (Arr i a) |
Instances
| HFunctor * k1 (* -> *, (* -> Constraint, *)) (ArrCMD (k1 -> *)) Source # | |
| HBifunctor * * (* -> Constraint, *) (ArrCMD (* -> *)) Source # | |
| (:<:) * (* -> *, (* -> *, (* -> Constraint, *))) (ArrCMD (* -> *)) instr => Reexpressible * (* -> Constraint, *) (ArrCMD (* -> *)) instr env Source # | |
| InterpBi * (* -> Constraint, *) (ArrCMD (* -> *)) IO (Param1 (* -> Constraint) pred) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) (ArrCMD (* -> *)) Source # | |
Control flow
borderIncl :: Border i -> Bool Source #
type IxRange i = (i, Int, Border i) Source #
Index range
(lo,step,hi)
lo gives the start index; step gives the step length; hi gives the stop
index which may be inclusive or exclusive.
data ControlCMD fs a where Source #
Constructors
| If :: exp Bool -> prog () -> prog () -> ControlCMD (Param3 prog exp pred) () | |
| While :: prog (exp Bool) -> prog () -> ControlCMD (Param3 prog exp pred) () | |
| For :: (pred i, Integral i) => IxRange (exp i) -> (Val i -> prog ()) -> ControlCMD (Param3 prog exp pred) () | |
| Break :: ControlCMD (Param3 prog exp pred) () | |
| Assert :: exp Bool -> String -> ControlCMD (Param3 prog exp pred) () |
Instances
| HFunctor * * (* -> *, (* -> Constraint, *)) ControlCMD Source # | |
| HBifunctor * * (* -> Constraint, *) ControlCMD Source # | |
| (:<:) * (* -> *, (* -> *, (* -> Constraint, *))) ControlCMD instr => Reexpressible * (* -> Constraint, *) ControlCMD instr env Source # | |
| InterpBi * (* -> Constraint, *) ControlCMD IO (Param1 (* -> Constraint) pred) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) ControlCMD Source # | |
Generic pointer manipulation
class ToIdent a => IsPointer a where Source #
Types that are represented as a pointers in C
Minimal complete definition
Methods
runSwapPtr :: a -> a -> IO () Source #
data PtrCMD fs a where Source #
Instances
| (:<:) * (* -> *, (k -> *, (k1, *))) (PtrCMD (* -> *) (k -> *) k1) instr => Reexpressible k (k1, *) (PtrCMD (* -> *) (k -> *) k1) instr env Source # | |
| HFunctor * k1 (k2, (k, *)) (PtrCMD (k1 -> *) k2 k) Source # | |
| HBifunctor * k1 (k, *) (PtrCMD (* -> *) (k1 -> *) k) Source # | |
| InterpBi * (k, *) (PtrCMD (* -> *) (* -> *) k) IO (Param1 k pred) Source # | |
| DryInterp (k1, (k, *)) (PtrCMD (* -> *) k1 k) Source # | |
File handling
File handle
Constructors
| HandleComp VarId | |
| HandleRun Handle |
mapPrintfArg :: (forall a. exp1 a -> exp2 a) -> PrintfArg exp1 -> PrintfArg exp2 Source #
mapPrintfArgM :: Monad m => (forall a. exp1 a -> m (exp2 a)) -> PrintfArg exp1 -> m (PrintfArg exp2) Source #
class (Typeable a, Read a, PrintfArg a) => Formattable a where Source #
Values that can be printed/scanned using printf/scanf
Minimal complete definition
Methods
formatSpecPrint :: Proxy a -> String Source #
Format specifier for printf
formatSpecScan :: Proxy a -> String Source #
Format specifier for scanf
Instances
data FileCMD fs a where Source #
Constructors
| FOpen :: FilePath -> IOMode -> FileCMD (Param3 prog exp pred) Handle | |
| FClose :: Handle -> FileCMD (Param3 prog exp pred) () | |
| FEof :: Handle -> FileCMD (Param3 prog exp pred) (Val Bool) | |
| FPrintf :: Handle -> String -> [PrintfArg exp] -> FileCMD (Param3 prog exp pred) () | |
| FGet :: (pred a, Formattable a) => Handle -> FileCMD (Param3 prog exp pred) (Val a) |
Instances
| HFunctor * k1 (* -> *, (* -> Constraint, *)) (FileCMD (k1 -> *)) Source # | |
| HBifunctor * * (* -> Constraint, *) (FileCMD (* -> *)) Source # | |
| (:<:) * (* -> *, (* -> *, (* -> Constraint, *))) (FileCMD (* -> *)) instr => Reexpressible * (* -> Constraint, *) (FileCMD (* -> *)) instr env Source # | |
| InterpBi * (* -> Constraint, *) (FileCMD (* -> *)) IO (Param1 (* -> Constraint) pred) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) (FileCMD (* -> *)) Source # | |
C-specific commands
Pointer
Abstract object
class Arg arg pred where Source #
Instances
| Arg k (ConstArg k) pred Source # | |
| Arg k (StrArg k) pred Source # | |
| Arg k (ObjArg k) pred Source # | |
| CompTypeClass ct => Arg (* -> Constraint) IArrArg ct Source # | |
| CompTypeClass ct => Arg (* -> Constraint) ArrArg ct Source # | |
| CompTypeClass ct => Arg (* -> Constraint) RefArg ct Source # | |
| CompTypeClass ct => Arg (* -> Constraint) PtrArg ct Source # | |
| (CompExp exp, CompTypeClass ct) => Arg (* -> Constraint) (FunArg * exp) ct Source # | |
data FunArg exp pred where Source #
Constructors
| ValArg :: pred a => exp a -> FunArg exp pred | |
| AddrArg :: FunArg exp pred -> FunArg exp pred | |
| DerefArg :: FunArg exp pred -> FunArg exp pred | |
| OffsetArg :: FunArg exp pred -> exp i -> FunArg exp pred | |
| FunArg :: Arg arg pred => arg pred -> FunArg exp pred |
Instances
| (CompExp exp, CompTypeClass ct) => Arg (* -> Constraint) (FunArg * exp) ct Source # | |
mapFunArgM :: Monad m => (forall a. exp1 a -> m (exp2 a)) -> FunArg exp1 pred -> m (FunArg exp2 pred) Source #
class ToIdent obj => Assignable obj Source #
Instances
| Assignable Object Source # | |
| Assignable (Ptr a) Source # | |
| Assignable (Ref a) Source # | |
| Assignable (IArr i a) Source # | |
| Assignable (Arr i a) Source # | |
data C_CMD fs a where Source #
Constructors
| NewCArr :: (pred a, Integral i, Ix i) => String -> Maybe i -> exp i -> C_CMD (Param3 prog exp pred) (Arr i a) | |
| ConstCArr :: (pred a, Integral i, Ix i) => String -> Maybe i -> [a] -> C_CMD (Param3 prog exp pred) (Arr i a) | |
| NewPtr :: pred a => String -> C_CMD (Param3 prog exp pred) (Ptr a) | |
| PtrToArr :: Ptr a -> C_CMD (Param3 prog exp pred) (Arr i a) | |
| NewObject :: String -> String -> Bool -> C_CMD (Param3 prog exp pred) Object | |
| AddInclude :: String -> C_CMD (Param3 prog exp pred) () | |
| AddDefinition :: Definition -> C_CMD (Param3 prog exp pred) () | |
| AddExternFun :: pred res => String -> proxy res -> [FunArg exp pred] -> C_CMD (Param3 prog exp pred) () | |
| AddExternProc :: String -> [FunArg exp pred] -> C_CMD (Param3 prog exp pred) () | |
| CallFun :: pred a => String -> [FunArg exp pred] -> C_CMD (Param3 prog exp pred) (Val a) | |
| CallProc :: Assignable obj => Maybe obj -> String -> [FunArg exp pred] -> C_CMD (Param3 prog exp pred) () | |
| InModule :: String -> prog () -> C_CMD (Param3 prog exp pred) () |
Instances
| HFunctor * * (* -> *, (* -> Constraint, *)) C_CMD Source # | |
| HBifunctor * * (* -> Constraint, *) C_CMD Source # | |
| (:<:) * (* -> *, (* -> *, (* -> Constraint, *))) C_CMD instr => Reexpressible * (* -> Constraint, *) C_CMD instr env Source # | |
| InterpBi * (* -> Constraint, *) C_CMD IO (Param1 (* -> Constraint) pred) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) C_CMD Source # | |