Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Embedded.Imperative.CMD
Description
Synopsis
- 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
- runSwapPtr :: a -> a -> IO ()
- 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
- formatSpecPrint :: Proxy a -> String
- formatSpecScan :: Proxy a -> String
- 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
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
Control flow
Instances
Functor Border Source # | |
Foldable Border Source # | |
Defined in Language.Embedded.Imperative.CMD Methods fold :: Monoid m => Border m -> m # foldMap :: Monoid m => (a -> m) -> Border a -> m # foldMap' :: Monoid m => (a -> m) -> Border a -> m # foldr :: (a -> b -> b) -> b -> Border a -> b # foldr' :: (a -> b -> b) -> b -> Border a -> b # foldl :: (b -> a -> b) -> b -> Border a -> b # foldl' :: (b -> a -> b) -> b -> Border a -> b # foldr1 :: (a -> a -> a) -> Border a -> a # foldl1 :: (a -> a -> a) -> Border a -> a # elem :: Eq a => a -> Border a -> Bool # maximum :: Ord a => Border a -> a # minimum :: Ord a => Border a -> a # | |
Traversable Border Source # | |
Eq i => Eq (Border i) Source # | |
Num i => Num (Border i) Source # |
|
Defined in Language.Embedded.Imperative.CMD | |
Show i => Show (Border i) Source # | |
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
Generic pointer manipulation
class ToIdent a => IsPointer a where Source #
Types that are represented as a pointers in C
Methods
runSwapPtr :: a -> a -> IO () Source #
data PtrCMD fs a where Source #
Instances
HFunctor (PtrCMD :: (k -> Type, (k1, (k2, Type))) -> Type -> Type) Source # | |
Defined in Language.Embedded.Imperative.CMD | |
HBifunctor (PtrCMD :: (Type -> Type, (k -> Type, (k2, Type))) -> Type -> Type) Source # | |
(PtrCMD :: (Type -> Type, (k -> Type, (k2, Type))) -> Type -> Type) :<: instr => Reexpressible (PtrCMD :: (Type -> Type, (k -> Type, (k2, Type))) -> Type -> Type) (instr :: (Type -> Type, (k -> Type, (k2, Type))) -> Type -> Type) env Source # | |
Defined in Language.Embedded.Imperative.CMD | |
InterpBi (PtrCMD :: (Type -> Type, (Type -> Type, (k2, Type))) -> Type -> Type) IO (Param1 pred :: (k2, Type)) Source # | |
Interp (PtrCMD :: (Type -> Type, (k1, (k2, Type))) -> Type -> Type) CGen (Param2 exp ct :: (k1, (k2, Type))) Source # | |
DryInterp (PtrCMD :: (Type -> Type, (k1, (k2, Type))) -> Type -> Type) Source # | |
Defined in Language.Embedded.Imperative.CMD Methods dryInterp :: forall m (fs :: k) a. MonadSupply m => PtrCMD '(m, fs) a -> m a 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
Formattable Double Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Float Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Int Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Int8 Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Int16 Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Int32 Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Int64 Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Word Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Word8 Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Word16 Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Word32 Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Formattable Word64 Source # | |
Defined in Language.Embedded.Imperative.CMD |
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
C-specific commands
Pointer
Abstract object
class Arg arg pred where Source #
Instances
Arg (ObjArg :: k -> Type) (pred :: k) Source # | |
Arg (StrArg :: k -> Type) (pred :: k) Source # | |
Arg (ConstArg :: k -> Type) (pred :: k) Source # | |
CompTypeClass ct => Arg PtrArg (ct :: Type -> Constraint) Source # | |
CompTypeClass ct => Arg IArrArg (ct :: Type -> Constraint) Source # | |
CompTypeClass ct => Arg ArrArg (ct :: Type -> Constraint) Source # | |
CompTypeClass ct => Arg RefArg (ct :: Type -> Constraint) Source # | |
(CompExp exp, CompTypeClass ct) => Arg (FunArg exp :: (Type -> Constraint) -> Type) (ct :: Type -> Constraint) 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 # | |
Defined in Language.Embedded.Imperative.CMD | |
Assignable (Ptr a) Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Assignable (Ref a) Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Assignable (IArr i a) Source # | |
Defined in Language.Embedded.Imperative.CMD | |
Assignable (Arr i a) Source # | |
Defined in Language.Embedded.Imperative.CMD |
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
C_CMD :<: instr => Reexpressible C_CMD (instr :: (Type -> Type, (Type -> Type, (Type -> Constraint, Type))) -> Type -> Type) env Source # | |
Defined in Language.Embedded.Imperative.CMD | |
InterpBi C_CMD IO (Param1 pred :: (Type -> Constraint, Type)) Source # | |
(CompExp exp, CompTypeClass ct) => Interp C_CMD CGen (Param2 exp ct :: (Type -> Type, (Type -> Constraint, Type))) Source # | |
HFunctor C_CMD Source # | |
Defined in Language.Embedded.Imperative.CMD | |
HBifunctor C_CMD Source # | |
DryInterp C_CMD Source # | |
Defined in Language.Embedded.Imperative.CMD Methods dryInterp :: forall m (fs :: k) a. MonadSupply m => C_CMD '(m, fs) a -> m a Source # |