| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Drasil.GProc
Description
re-export smart constructors for external code writing
Synopsis
- type Label = String
- type GSProgram a prg = GS (a prg)
- type File = FileData
- type Body = Doc
- type Block = Doc
- type FS = State FileState
- type MS = State MethodState
- type VS = State ValueState
- type SVariable a = VS (a Variable)
- type SValue a = VS (a Value)
- type Module = ModData
- type NamedArgs r = [(SVariable r, SValue r)]
- class (UnRepr r TypeData, SharedStatement r smt, FunctionSym r, InternalList r, VariableValue r, IndexTranslator r, TypeElim r, VariableElim r, MethodSym r vis smt md, ScopeSym r, BinderSym r) => SharedProg r vis smt md
- class (Array r, AssignStatement r smt, Argument r, BooleanExpression r, CommandLineArgs r, CommentStatement r smt, Comparison r, ControlStatement r smt, DeclStatement r smt, FuncAppStatement r smt, IOStatement r smt, List r smt, Literal r, MathConstant r, NumericExpression r, ParameterSym r, Reference r, Set r, StringStatement r smt, ValueExpression r, VariableValue r) => SharedStatement r smt
- class (SharedProg r vis smt md, ProgramSym r vis smt md prg) => ProcProg r vis smt md prg
- class FileSym r vis smt md => ProgramSym r vis smt md prg | r -> prg where
- class ModuleSym r vis smt md => FileSym r vis smt md where
- class BlockSym r smt => BodySym r smt where
- bodyStatements :: BodySym r smt => [MS (r smt)] -> MS (r Body)
- oneLiner :: BodySym r smt => MS (r smt) -> MS (r Body)
- class StatementSym r smt => BlockSym r smt where
- class TypeSym r where
- bool :: VS (r TypeData)
- int :: VS (r TypeData)
- float :: VS (r TypeData)
- double :: VS (r TypeData)
- char :: VS (r TypeData)
- string :: VS (r TypeData)
- infile :: VS (r TypeData)
- outfile :: VS (r TypeData)
- referenceType :: VS (r TypeData) -> VS (r TypeData)
- listType :: VS (r TypeData) -> VS (r TypeData)
- setType :: VS (r TypeData) -> VS (r TypeData)
- arrayType :: VS (r TypeData) -> VS (r TypeData)
- innerType :: VS (r TypeData) -> VS (r TypeData)
- funcType :: [VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
- void :: VS (r TypeData)
- class TypeSym r => BinderSym r where
- class ValueSym r => StatementSym r smt | r -> smt where
- class (VariableSym r, StatementSym r smt) => AssignStatement r smt where
- (&=) :: AssignStatement r smt => SVariable r -> SValue r -> MS (r smt)
- class (VariableSym r, StatementSym r smt, ScopeSym r) => DeclStatement r smt where
- varDec :: SVariable r -> r ScopeData -> MS (r smt)
- varDecDef :: SVariable r -> r ScopeData -> SValue r -> MS (r smt)
- listDec :: Integer -> SVariable r -> r ScopeData -> MS (r smt)
- listDecDef :: SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
- setDec :: SVariable r -> r ScopeData -> MS (r smt)
- setDecDef :: SVariable r -> r ScopeData -> SValue r -> MS (r smt)
- arrayDec :: Integer -> SValue r -> SVariable r -> r ScopeData -> MS (r smt)
- arrayDecDef :: SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
- constDecDef :: SVariable r -> r ScopeData -> SValue r -> MS (r smt)
- funcDecDef :: SVariable r -> r ScopeData -> [SVariable r] -> MS (r Body) -> MS (r smt)
- class (VariableSym r, StatementSym r smt) => IOStatement r smt where
- print :: SValue r -> MS (r smt)
- printLn :: SValue r -> MS (r smt)
- printStr :: String -> MS (r smt)
- printStrLn :: String -> MS (r smt)
- printFile :: SValue r -> SValue r -> MS (r smt)
- printFileLn :: SValue r -> SValue r -> MS (r smt)
- printFileStr :: SValue r -> String -> MS (r smt)
- printFileStrLn :: SValue r -> String -> MS (r smt)
- getInput :: SVariable r -> MS (r smt)
- discardInput :: MS (r smt)
- getFileInput :: SValue r -> SVariable r -> MS (r smt)
- discardFileInput :: SValue r -> MS (r smt)
- openFileR :: SVariable r -> SValue r -> MS (r smt)
- openFileW :: SVariable r -> SValue r -> MS (r smt)
- openFileA :: SVariable r -> SValue r -> MS (r smt)
- closeFile :: SValue r -> MS (r smt)
- getFileInputLine :: SValue r -> SVariable r -> MS (r smt)
- discardFileLine :: SValue r -> MS (r smt)
- getFileInputAll :: SValue r -> SVariable r -> MS (r smt)
- class (VariableSym r, StatementSym r smt) => StringStatement r smt where
- stringSplit :: Char -> SVariable r -> SValue r -> MS (r smt)
- stringListVals :: [SVariable r] -> SValue r -> MS (r smt)
- stringListLists :: [SVariable r] -> SValue r -> MS (r smt)
- class (VariableSym r, StatementSym r smt) => FuncAppStatement r smt where
- inOutCall :: InOutCall r smt
- extInOutCall :: Library -> InOutCall r smt
- class StatementSym r smt => CommentStatement r smt where
- class (BodySym r smt, VariableSym r) => ControlStatement r smt where
- break :: MS (r smt)
- continue :: MS (r smt)
- returnStmt :: SValue r -> MS (r smt)
- throw :: Label -> MS (r smt)
- ifCond :: [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt)
- switch :: SValue r -> [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt)
- ifExists :: SValue r -> MS (r Body) -> MS (r Body) -> MS (r smt)
- for :: MS (r smt) -> SValue r -> MS (r smt) -> MS (r Body) -> MS (r smt)
- forRange :: SVariable r -> SValue r -> SValue r -> SValue r -> MS (r Body) -> MS (r smt)
- forEach :: SVariable r -> SValue r -> MS (r Body) -> MS (r smt)
- while :: SValue r -> MS (r Body) -> MS (r smt)
- tryCatch :: MS (r Body) -> MS (r Body) -> MS (r smt)
- assert :: SValue r -> SValue r -> MS (r smt)
- ifNoElse :: ControlStatement r smt => [(SValue r, MS (r Body))] -> MS (r smt)
- switchAsIf :: (ControlStatement r smt, Comparison r) => SValue r -> [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt)
- class TypeSym r => VariableSym r where
- class ScopeSym r where
- data ScopeData
- class VariableSym r => VariableElim r where
- variableName :: r Variable -> String
- variableType :: r Variable -> r TypeData
- listOf :: VariableSym r => Label -> VS (r TypeData) -> SVariable r
- listVar :: VariableSym r => Label -> VS (r TypeData) -> SVariable r
- class TypeSym r => ValueSym r where
- class ValueSym r => Argument r where
- pointerArg :: SValue r -> SValue r
- class ValueSym r => Literal r where
- litTrue :: SValue r
- litFalse :: SValue r
- litChar :: Char -> SValue r
- litDouble :: Double -> SValue r
- litFloat :: Float -> SValue r
- litInt :: Integer -> SValue r
- litString :: String -> SValue r
- litArray :: VS (r TypeData) -> [SValue r] -> SValue r
- litList :: VS (r TypeData) -> [SValue r] -> SValue r
- litSet :: VS (r TypeData) -> [SValue r] -> SValue r
- class ValueSym r => MathConstant r where
- class (VariableSym r, ValueSym r) => VariableValue r where
- class ValueSym r => CommandLineArgs r where
- class ValueSym r => NumericExpression r where
- (#~) :: SValue r -> SValue r
- (#/^) :: SValue r -> SValue r
- (#|) :: SValue r -> SValue r
- (#+) :: SValue r -> SValue r -> SValue r
- (#-) :: SValue r -> SValue r -> SValue r
- (#*) :: SValue r -> SValue r -> SValue r
- (#/) :: SValue r -> SValue r -> SValue r
- (#%) :: SValue r -> SValue r -> SValue r
- (#^) :: SValue r -> SValue r -> SValue r
- log :: SValue r -> SValue r
- ln :: SValue r -> SValue r
- exp :: SValue r -> SValue r
- sin :: SValue r -> SValue r
- cos :: SValue r -> SValue r
- tan :: SValue r -> SValue r
- csc :: SValue r -> SValue r
- sec :: SValue r -> SValue r
- cot :: SValue r -> SValue r
- arcsin :: SValue r -> SValue r
- arccos :: SValue r -> SValue r
- arctan :: SValue r -> SValue r
- floor :: SValue r -> SValue r
- ceil :: SValue r -> SValue r
- class ValueSym r => BooleanExpression r where
- class ValueSym r => Comparison r where
- class (VariableSym r, ValueSym r) => ValueExpression r where
- inlineIf :: SValue r -> SValue r -> SValue r -> SValue r
- funcAppMixedArgs :: MixedCall r
- extFuncAppMixedArgs :: Library -> MixedCall r
- libFuncAppMixedArgs :: Library -> MixedCall r
- lambda :: [VSBinder r] -> SValue r -> SValue r
- notNull :: SValue r -> SValue r
- funcApp :: ValueExpression r => PosCall r
- funcAppNamedArgs :: ValueExpression r => Label -> VS (r TypeData) -> NamedArgs r -> SValue r
- extFuncApp :: ValueExpression r => Library -> PosCall r
- libFuncApp :: ValueExpression r => Library -> PosCall r
- exists :: ValueExpression r => SValue r -> SValue r
- class ValueSym r => FunctionSym r
- class (TypeSym r, ValueSym r) => Reference r where
- class IndexTranslator r => Array r where
- class (IndexTranslator r, StatementSym r smt) => List r smt where
- class ValueSym r => Set r where
- class (IndexTranslator r, Literal r) => NativeVector r where
- vecType :: VS (r TypeData) -> VS (r TypeData)
- litVec :: VS (r TypeData) -> [SValue r] -> SValue r
- vecScale :: SValue r -> SValue r -> SValue r
- vecAdd :: SValue r -> SValue r -> SValue r
- vecIndex :: SValue r -> SValue r -> SValue r
- vecDot :: SValue r -> SValue r -> SValue r
- vecMag :: SValue r -> SValue r
- vecUnit :: SValue r -> SValue r
- listSlice :: InternalList r => SVariable r -> SValue r -> Maybe (SValue r) -> Maybe (SValue r) -> Maybe (SValue r) -> MS (r Block)
- listIndexExists :: (List r smt, Comparison r) => SValue r -> SValue r -> SValue r
- at :: List r smt => SValue r -> SValue r -> SValue r
- class VisibilitySym r vis | r -> vis where
- class VariableSym r => ParameterSym r where
- class (BodySym r smt, ParameterSym r, VisibilitySym r vis) => MethodSym r vis smt md | r -> md where
- docMain :: MS (r Body) -> MS (r md)
- function :: Label -> r vis -> VS (r TypeData) -> [MS (r ParamData)] -> MS (r Body) -> MS (r md)
- mainFunction :: MS (r Body) -> MS (r md)
- docFunc :: String -> [String] -> Maybe String -> MS (r md) -> MS (r md)
- inOutFunc :: Label -> r vis -> InOutFunc r md
- docInOutFunc :: Label -> r vis -> DocInOutFunc r md
- class MethodSym r vis smt md => ModuleSym r vis smt md where
- convType :: TypeSym r => CodeType -> VS (r TypeData)
- data ProgData
- data FileData
- data ModData
- data TypeData
- data VisibilityTag
- data ParamData
- data CodeType
- data GOOLState = GS {}
- lensMStoVS :: Lens' MethodState ValueState
- headers :: Lens' GOOLState [FilePath]
- sources :: Lens' GOOLState [FilePath]
- mainMod :: Lens' GOOLState (Maybe FilePath)
- initialState :: GOOLState
- onStateValue :: (a -> b) -> State s a -> State s b
- onCodeList :: Monad m => ([a] -> b) -> [m a] -> m b
- unJLC :: JuliaCode a -> a
- jlName :: String
- jlVersion :: String
- unMLC :: MatlabCode a -> a
- mlName :: String
- mlVersion :: String
- newtype LoggingFor (r :: Type -> Type) a = LC {
- unLC :: r a
- class TypeSym r => TypeElim r where
- getCodeType :: r TypeData -> CodeType
- getTypeString :: UnRepr r TypeData => r TypeData -> String
Documentation
class (UnRepr r TypeData, SharedStatement r smt, FunctionSym r, InternalList r, VariableValue r, IndexTranslator r, TypeElim r, VariableElim r, MethodSym r vis smt md, ScopeSym r, BinderSym r) => SharedProg r vis smt md Source #
Instances
class (Array r, AssignStatement r smt, Argument r, BooleanExpression r, CommandLineArgs r, CommentStatement r smt, Comparison r, ControlStatement r smt, DeclStatement r smt, FuncAppStatement r smt, IOStatement r smt, List r smt, Literal r, MathConstant r, NumericExpression r, ParameterSym r, Reference r, Set r, StringStatement r smt, ValueExpression r, VariableValue r) => SharedStatement r smt Source #
Instances
class (SharedProg r vis smt md, ProgramSym r vis smt md prg) => ProcProg r vis smt md prg Source #
Instances
| ProcProg r vis smt md prg => ProcProg (LoggingFor r) vis smt md prg Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor | |
class FileSym r vis smt md => ProgramSym r vis smt md prg | r -> prg where Source #
Instances
| ProgramSym r vis smt md prg => ProgramSym (LoggingFor r) vis smt md prg Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods prog :: Label -> Label -> [FS (LoggingFor r File)] -> GSProgram (LoggingFor r) prg Source # | |
class ModuleSym r vis smt md => FileSym r vis smt md where Source #
Methods
fileDoc :: FS (r Module) -> FS (r File) Source #
docMod :: String -> String -> [String] -> String -> FS (r File) -> FS (r File) Source #
Instances
| FileSym r vis smt md => FileSym (LoggingFor r) vis smt md Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor | |
class BlockSym r smt => BodySym r smt where Source #
Instances
| BodySym r smt => BodySym (LoggingFor r) smt Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods body :: [MS (LoggingFor r Block)] -> MS (LoggingFor r Body) Source # addComments :: Label -> MS (LoggingFor r Body) -> MS (LoggingFor r Body) Source # | |
class StatementSym r smt => BlockSym r smt where Source #
Instances
| BlockSym r smt => BlockSym (LoggingFor r) smt Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods block :: [MS (LoggingFor r smt)] -> MS (LoggingFor r Block) Source # | |
class TypeSym r where Source #
Methods
bool :: VS (r TypeData) Source #
int :: VS (r TypeData) Source #
float :: VS (r TypeData) Source #
double :: VS (r TypeData) Source #
char :: VS (r TypeData) Source #
string :: VS (r TypeData) Source #
infile :: VS (r TypeData) Source #
outfile :: VS (r TypeData) Source #
referenceType :: VS (r TypeData) -> VS (r TypeData) Source #
listType :: VS (r TypeData) -> VS (r TypeData) Source #
setType :: VS (r TypeData) -> VS (r TypeData) Source #
arrayType :: VS (r TypeData) -> VS (r TypeData) Source #
innerType :: VS (r TypeData) -> VS (r TypeData) Source #
funcType :: [VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData) Source #
Instances
| TypeSym r => TypeSym (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods bool :: VS (LoggingFor r TypeData) Source # int :: VS (LoggingFor r TypeData) Source # float :: VS (LoggingFor r TypeData) Source # double :: VS (LoggingFor r TypeData) Source # char :: VS (LoggingFor r TypeData) Source # string :: VS (LoggingFor r TypeData) Source # infile :: VS (LoggingFor r TypeData) Source # outfile :: VS (LoggingFor r TypeData) Source # referenceType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData) Source # listType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData) Source # setType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData) Source # arrayType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData) Source # innerType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData) Source # funcType :: [VS (LoggingFor r TypeData)] -> VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData) Source # | |
class TypeSym r => BinderSym r where Source #
Instances
| BinderSym r => BinderSym (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods binder :: Label -> VS (LoggingFor r TypeData) -> VSBinder (LoggingFor r) Source # | |
class ValueSym r => StatementSym r smt | r -> smt where Source #
Instances
| StatementSym r smt => StatementSym (LoggingFor r) smt Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods valStmt :: SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # emptyStmt :: MS (LoggingFor r smt) Source # multi :: [MS (LoggingFor r smt)] -> MS (LoggingFor r smt) Source # | |
class (VariableSym r, StatementSym r smt) => AssignStatement r smt where Source #
Methods
(&-=) :: SVariable r -> SValue r -> MS (r smt) infixl 1 Source #
(&+=) :: SVariable r -> SValue r -> MS (r smt) infixl 1 Source #
(&++) :: SVariable r -> MS (r smt) infixl 8 Source #
Instances
| (AssignStatement r smt, IOStatement r smt, VariableValue r, VariableElim r, Literal r) => AssignStatement (LoggingFor r) smt Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods (&-=) :: SVariable (LoggingFor r) -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # (&+=) :: SVariable (LoggingFor r) -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # (&++) :: SVariable (LoggingFor r) -> MS (LoggingFor r smt) Source # (&--) :: SVariable (LoggingFor r) -> MS (LoggingFor r smt) Source # assign :: SVariable (LoggingFor r) -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # | |
class (VariableSym r, StatementSym r smt, ScopeSym r) => DeclStatement r smt where Source #
Methods
varDec :: SVariable r -> r ScopeData -> MS (r smt) Source #
Declare a variable without giving it a value.
Not for use with arrays; use arrayDec instead.
varDecDef :: SVariable r -> r ScopeData -> SValue r -> MS (r smt) Source #
Declare a variable and give it a value.
Not for use with arrays; use arrayDecDef instead.
listDec :: Integer -> SVariable r -> r ScopeData -> MS (r smt) Source #
listDecDef :: SVariable r -> r ScopeData -> [SValue r] -> MS (r smt) Source #
setDec :: SVariable r -> r ScopeData -> MS (r smt) Source #
setDecDef :: SVariable r -> r ScopeData -> SValue r -> MS (r smt) Source #
arrayDec :: Integer -> SValue r -> SVariable r -> r ScopeData -> MS (r smt) Source #
arrayDecDef :: SVariable r -> r ScopeData -> [SValue r] -> MS (r smt) Source #
constDecDef :: SVariable r -> r ScopeData -> SValue r -> MS (r smt) Source #
funcDecDef :: SVariable r -> r ScopeData -> [SVariable r] -> MS (r Body) -> MS (r smt) Source #
Instances
class (VariableSym r, StatementSym r smt) => IOStatement r smt where Source #
Methods
print :: SValue r -> MS (r smt) Source #
printLn :: SValue r -> MS (r smt) Source #
printStr :: String -> MS (r smt) Source #
printStrLn :: String -> MS (r smt) Source #
printFile :: SValue r -> SValue r -> MS (r smt) Source #
printFileLn :: SValue r -> SValue r -> MS (r smt) Source #
printFileStr :: SValue r -> String -> MS (r smt) Source #
printFileStrLn :: SValue r -> String -> MS (r smt) Source #
getInput :: SVariable r -> MS (r smt) Source #
discardInput :: MS (r smt) Source #
getFileInput :: SValue r -> SVariable r -> MS (r smt) Source #
discardFileInput :: SValue r -> MS (r smt) Source #
openFileR :: SVariable r -> SValue r -> MS (r smt) Source #
openFileW :: SVariable r -> SValue r -> MS (r smt) Source #
openFileA :: SVariable r -> SValue r -> MS (r smt) Source #
closeFile :: SValue r -> MS (r smt) Source #
getFileInputLine :: SValue r -> SVariable r -> MS (r smt) Source #
discardFileLine :: SValue r -> MS (r smt) Source #
getFileInputAll :: SValue r -> SVariable r -> MS (r smt) Source #
Instances
class (VariableSym r, StatementSym r smt) => StringStatement r smt where Source #
Methods
stringSplit :: Char -> SVariable r -> SValue r -> MS (r smt) Source #
stringListVals :: [SVariable r] -> SValue r -> MS (r smt) Source #
stringListLists :: [SVariable r] -> SValue r -> MS (r smt) Source #
Instances
| (StringStatement r smt, IOStatement r smt, VariableValue r, VariableElim r, Literal r) => StringStatement (LoggingFor r) smt Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods stringSplit :: Char -> SVariable (LoggingFor r) -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # stringListVals :: [SVariable (LoggingFor r)] -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # stringListLists :: [SVariable (LoggingFor r)] -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # | |
class (VariableSym r, StatementSym r smt) => FuncAppStatement r smt where Source #
Instances
| FuncAppStatement r smt => FuncAppStatement (LoggingFor r) smt Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods inOutCall :: InOutCall (LoggingFor r) smt Source # extInOutCall :: Library -> InOutCall (LoggingFor r) smt Source # | |
class StatementSym r smt => CommentStatement r smt where Source #
Instances
| CommentStatement r smt => CommentStatement (LoggingFor r) smt Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor | |
class (BodySym r smt, VariableSym r) => ControlStatement r smt where Source #
Methods
continue :: MS (r smt) Source #
returnStmt :: SValue r -> MS (r smt) Source #
throw :: Label -> MS (r smt) Source #
ifCond :: [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt) Source #
String of if-else statements. Arguments: List of predicates and bodies (if this then that), Body for else branch
switch :: SValue r -> [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt) Source #
ifExists :: SValue r -> MS (r Body) -> MS (r Body) -> MS (r smt) Source #
for :: MS (r smt) -> SValue r -> MS (r smt) -> MS (r Body) -> MS (r smt) Source #
forRange :: SVariable r -> SValue r -> SValue r -> SValue r -> MS (r Body) -> MS (r smt) Source #
forEach :: SVariable r -> SValue r -> MS (r Body) -> MS (r smt) Source #
while :: SValue r -> MS (r Body) -> MS (r smt) Source #
tryCatch :: MS (r Body) -> MS (r Body) -> MS (r smt) Source #
Instances
switchAsIf :: (ControlStatement r smt, Comparison r) => SValue r -> [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt) Source #
class TypeSym r => VariableSym r where Source #
Methods
var :: Label -> VS (r TypeData) -> SVariable r Source #
An instance- or function-level variable, separate from its instance (i.e. v, not `o.v`)
constant :: Label -> VS (r TypeData) -> SVariable r Source #
An instance- or function-level constant, separate from its instance (i.e. v, not `o.v`)
extVar :: Library -> Label -> VS (r TypeData) -> SVariable r Source #
An instance- or module-level variable from an external library.
Given library Lib, variable name v, and variable type t,
it performs the necessary imports and creates v
Instances
| VariableSym r => VariableSym (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods var :: Label -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r) Source # constant :: Label -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r) Source # extVar :: Library -> Label -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r) Source # | |
class ScopeSym r where Source #
Instances
| ScopeSym r => ScopeSym (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods global :: LoggingFor r ScopeData Source # mainFn :: LoggingFor r ScopeData Source # local :: LoggingFor r ScopeData Source # | |
class VariableSym r => VariableElim r where Source #
Methods
variableName :: r Variable -> String Source #
variableType :: r Variable -> r TypeData Source #
Instances
| VariableElim r => VariableElim (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods variableName :: LoggingFor r Variable -> String Source # variableType :: LoggingFor r Variable -> LoggingFor r TypeData Source # | |
class TypeSym r => ValueSym r where Source #
Instances
| ValueSym r => ValueSym (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods valueType :: LoggingFor r Value -> LoggingFor r TypeData Source # | |
class ValueSym r => Argument r where Source #
Methods
pointerArg :: SValue r -> SValue r Source #
Instances
| Argument r => Argument (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods pointerArg :: SValue (LoggingFor r) -> SValue (LoggingFor r) Source # | |
class ValueSym r => Literal r where Source #
Methods
litChar :: Char -> SValue r Source #
litDouble :: Double -> SValue r Source #
litFloat :: Float -> SValue r Source #
litInt :: Integer -> SValue r Source #
litString :: String -> SValue r Source #
litArray :: VS (r TypeData) -> [SValue r] -> SValue r Source #
litList :: VS (r TypeData) -> [SValue r] -> SValue r Source #
litSet :: VS (r TypeData) -> [SValue r] -> SValue r Source #
Instances
| Literal r => Literal (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods litTrue :: SValue (LoggingFor r) Source # litFalse :: SValue (LoggingFor r) Source # litChar :: Char -> SValue (LoggingFor r) Source # litDouble :: Double -> SValue (LoggingFor r) Source # litFloat :: Float -> SValue (LoggingFor r) Source # litInt :: Integer -> SValue (LoggingFor r) Source # litString :: String -> SValue (LoggingFor r) Source # litArray :: VS (LoggingFor r TypeData) -> [SValue (LoggingFor r)] -> SValue (LoggingFor r) Source # litList :: VS (LoggingFor r TypeData) -> [SValue (LoggingFor r)] -> SValue (LoggingFor r) Source # litSet :: VS (LoggingFor r TypeData) -> [SValue (LoggingFor r)] -> SValue (LoggingFor r) Source # | |
class ValueSym r => MathConstant r where Source #
Instances
| MathConstant r => MathConstant (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods pi :: SValue (LoggingFor r) Source # | |
class (VariableSym r, ValueSym r) => VariableValue r where Source #
Instances
| VariableValue r => VariableValue (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods valueOf :: SVariable (LoggingFor r) -> SValue (LoggingFor r) Source # | |
class ValueSym r => CommandLineArgs r where Source #
Instances
| CommandLineArgs r => CommandLineArgs (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor | |
class ValueSym r => NumericExpression r where Source #
Methods
(#~) :: SValue r -> SValue r infixl 8 Source #
(#/^) :: SValue r -> SValue r infixl 7 Source #
(#|) :: SValue r -> SValue r infixl 7 Source #
(#+) :: SValue r -> SValue r -> SValue r infixl 5 Source #
(#-) :: SValue r -> SValue r -> SValue r infixl 5 Source #
(#*) :: SValue r -> SValue r -> SValue r infixl 6 Source #
(#/) :: SValue r -> SValue r -> SValue r infixl 6 Source #
(#%) :: SValue r -> SValue r -> SValue r infixl 6 Source #
(#^) :: SValue r -> SValue r -> SValue r infixl 7 Source #
log :: SValue r -> SValue r Source #
ln :: SValue r -> SValue r Source #
exp :: SValue r -> SValue r Source #
sin :: SValue r -> SValue r Source #
cos :: SValue r -> SValue r Source #
tan :: SValue r -> SValue r Source #
csc :: SValue r -> SValue r Source #
sec :: SValue r -> SValue r Source #
cot :: SValue r -> SValue r Source #
arcsin :: SValue r -> SValue r Source #
arccos :: SValue r -> SValue r Source #
arctan :: SValue r -> SValue r Source #
Instances
class ValueSym r => BooleanExpression r where Source #
Methods
(?!) :: SValue r -> SValue r infixr 6 Source #
Instances
| BooleanExpression r => BooleanExpression (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods (?!) :: SValue (LoggingFor r) -> SValue (LoggingFor r) Source # (?&&) :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # (?||) :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # | |
class ValueSym r => Comparison r where Source #
Methods
(?<) :: SValue r -> SValue r -> SValue r infixl 4 Source #
(?<=) :: SValue r -> SValue r -> SValue r infixl 4 Source #
(?>) :: SValue r -> SValue r -> SValue r infixl 4 Source #
(?>=) :: SValue r -> SValue r -> SValue r infixl 4 Source #
Instances
| Comparison r => Comparison (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods (?<) :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # (?<=) :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # (?>) :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # (?>=) :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # (?==) :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # (?!=) :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # | |
class (VariableSym r, ValueSym r) => ValueExpression r where Source #
Methods
inlineIf :: SValue r -> SValue r -> SValue r -> SValue r Source #
funcAppMixedArgs :: MixedCall r Source #
extFuncAppMixedArgs :: Library -> MixedCall r Source #
libFuncAppMixedArgs :: Library -> MixedCall r Source #
Instances
| ValueExpression r => ValueExpression (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods inlineIf :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # funcAppMixedArgs :: MixedCall (LoggingFor r) Source # extFuncAppMixedArgs :: Library -> MixedCall (LoggingFor r) Source # libFuncAppMixedArgs :: Library -> MixedCall (LoggingFor r) Source # lambda :: [VSBinder (LoggingFor r)] -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # notNull :: SValue (LoggingFor r) -> SValue (LoggingFor r) Source # | |
funcApp :: ValueExpression r => PosCall r Source #
funcAppNamedArgs :: ValueExpression r => Label -> VS (r TypeData) -> NamedArgs r -> SValue r Source #
extFuncApp :: ValueExpression r => Library -> PosCall r Source #
libFuncApp :: ValueExpression r => Library -> PosCall r Source #
class ValueSym r => FunctionSym r Source #
Instances
| FunctionSym r => FunctionSym (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor | |
class (TypeSym r, ValueSym r) => Reference r where Source #
Methods
makeRef :: SValue r -> SValue r Source #
Given a value, convert it to a reference to that value
maybeDeref :: SValue r -> SValue r Source #
Given a value that may be a reference type, apply any necessary dereference operation.
Instances
| Reference r => Reference (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods makeRef :: SValue (LoggingFor r) -> SValue (LoggingFor r) Source # maybeDeref :: SValue (LoggingFor r) -> SValue (LoggingFor r) Source # | |
class IndexTranslator r => Array r where Source #
Methods
arrayElem :: SValue r -> SValue r -> SVariable r Source #
Given array a and index i, creates `a[i]`
arrayLength :: SValue r -> SValue r Source #
Given an array, return its length
arrayCopy :: SValue r -> SValue r Source #
Given a source array, create a (shallow) copy of it
Instances
| Array r => Array (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods arrayElem :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SVariable (LoggingFor r) Source # arrayLength :: SValue (LoggingFor r) -> SValue (LoggingFor r) Source # arrayCopy :: SValue (LoggingFor r) -> SValue (LoggingFor r) Source # | |
class (IndexTranslator r, StatementSym r smt) => List r smt where Source #
Methods
listSize :: SValue r -> SValue r Source #
listAdd :: SValue r -> SValue r -> SValue r -> MS (r smt) Source #
Inserts a value into a list. Arguments are: List, Index, Value
listAppend :: SValue r -> SValue r -> MS (r smt) Source #
Appens a value to a list. Arguments are: List, Value
listAccess :: SValue r -> SValue r -> SValue r Source #
Gets the value of an index of a list. Arguments are: List, Index
listSet :: SValue r -> SValue r -> SValue r -> MS (r smt) Source #
Sets the value of an index of a list. Arguments are: List, Index, Value
indexOf :: SValue r -> SValue r -> SValue r Source #
Finds the index of the first occurrence of a value in a list. Arguments are: List, Value
Instances
| List r smt => List (LoggingFor r) smt Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods listSize :: SValue (LoggingFor r) -> SValue (LoggingFor r) Source # listAdd :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # listAppend :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # listAccess :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # listSet :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) -> MS (LoggingFor r smt) Source # indexOf :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # | |
class ValueSym r => Set r where Source #
Methods
contains :: SValue r -> SValue r -> SValue r Source #
Checks membership Arguments are: Set, Value
setAdd :: SValue r -> SValue r -> SValue r Source #
Inserts a value into a set Arguments are: Set, Value
setRemove :: SValue r -> SValue r -> SValue r Source #
Removes a value from a set Arguments are: Set, Value
setUnion :: SValue r -> SValue r -> SValue r Source #
Removes a value from a set Arguments are: Set, Set
Instances
| Set r => Set (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods contains :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # setAdd :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # setRemove :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # setUnion :: SValue (LoggingFor r) -> SValue (LoggingFor r) -> SValue (LoggingFor r) Source # | |
class (IndexTranslator r, Literal r) => NativeVector r where Source #
Vector operations for languages with native vector support (e.g. MATLAB,
Julia). Expression-based: every operation takes and returns SValues, so
operations compose like math (e.g. vecAdd (vecScale s a) b).
Vectors have their own vecType and litVec so callers don't depend on
how vectors are represented; these default to listType and litList.
Methods
vecType :: VS (r TypeData) -> VS (r TypeData) Source #
The type of a vector with the given element type.
Defaults to listType; a language may override it to use a distinct
vector representation.
litVec :: VS (r TypeData) -> [SValue r] -> SValue r Source #
A vector literal with the given element type and elements.
Defaults to litList.
vecScale :: SValue r -> SValue r -> SValue r Source #
Scales a vector by a scalar. Arguments are: Scalar, Vector
vecAdd :: SValue r -> SValue r -> SValue r Source #
Adds two vectors elementwise. Arguments are: Vector, Vector
vecIndex :: SValue r -> SValue r -> SValue r Source #
Gets the element of a vector at an index. Arguments are: Vector, Index
vecDot :: SValue r -> SValue r -> SValue r Source #
Dot product of two vectors (returns a scalar). Arguments are: Vector, Vector
vecMag :: SValue r -> SValue r Source #
Euclidean norm (magnitude) of a vector (returns a scalar). Argument is: Vector
vecUnit :: SValue r -> SValue r Source #
Unit vector in the direction of a vector (returns a vector). Argument is: Vector
Instances
| NativeVector lang => NativeVector (LoggingFor lang) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods vecType :: VS (LoggingFor lang TypeData) -> VS (LoggingFor lang TypeData) Source # litVec :: VS (LoggingFor lang TypeData) -> [SValue (LoggingFor lang)] -> SValue (LoggingFor lang) Source # vecScale :: SValue (LoggingFor lang) -> SValue (LoggingFor lang) -> SValue (LoggingFor lang) Source # vecAdd :: SValue (LoggingFor lang) -> SValue (LoggingFor lang) -> SValue (LoggingFor lang) Source # vecIndex :: SValue (LoggingFor lang) -> SValue (LoggingFor lang) -> SValue (LoggingFor lang) Source # vecDot :: SValue (LoggingFor lang) -> SValue (LoggingFor lang) -> SValue (LoggingFor lang) Source # vecMag :: SValue (LoggingFor lang) -> SValue (LoggingFor lang) Source # vecUnit :: SValue (LoggingFor lang) -> SValue (LoggingFor lang) Source # | |
listSlice :: InternalList r => SVariable r -> SValue r -> Maybe (SValue r) -> Maybe (SValue r) -> Maybe (SValue r) -> MS (r Block) Source #
Creates a slice of a list and assigns it to a variable. Arguments are: Variable to assign List to read from (optional) Start index inclusive. (if Nothing, then list start if step > 0, list end if step < 0) (optional) End index exclusive. (if Nothing, then list end if step > 0, list start if step > 0) (optional) Step (if Nothing, then defaults to 1)
listIndexExists :: (List r smt, Comparison r) => SValue r -> SValue r -> SValue r Source #
class VisibilitySym r vis | r -> vis where Source #
Instances
| VisibilitySym r vis => VisibilitySym (LoggingFor r) vis Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor | |
class VariableSym r => ParameterSym r where Source #
Instances
| ParameterSym r => ParameterSym (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods param :: SVariable (LoggingFor r) -> MS (LoggingFor r ParamData) Source # pointerParam :: SVariable (LoggingFor r) -> MS (LoggingFor r ParamData) Source # | |
class (BodySym r smt, ParameterSym r, VisibilitySym r vis) => MethodSym r vis smt md | r -> md where Source #
Methods
docMain :: MS (r Body) -> MS (r md) Source #
function :: Label -> r vis -> VS (r TypeData) -> [MS (r ParamData)] -> MS (r Body) -> MS (r md) Source #
mainFunction :: MS (r Body) -> MS (r md) Source #
docFunc :: String -> [String] -> Maybe String -> MS (r md) -> MS (r md) Source #
inOutFunc :: Label -> r vis -> InOutFunc r md Source #
docInOutFunc :: Label -> r vis -> DocInOutFunc r md Source #
Instances
| MethodSym r vis smt md => MethodSym (LoggingFor r) vis smt md Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods docMain :: MS (LoggingFor r Body) -> MS (LoggingFor r md) Source # function :: Label -> LoggingFor r vis -> VS (LoggingFor r TypeData) -> [MS (LoggingFor r ParamData)] -> MS (LoggingFor r Body) -> MS (LoggingFor r md) Source # mainFunction :: MS (LoggingFor r Body) -> MS (LoggingFor r md) Source # docFunc :: String -> [String] -> Maybe String -> MS (LoggingFor r md) -> MS (LoggingFor r md) Source # inOutFunc :: Label -> LoggingFor r vis -> InOutFunc (LoggingFor r) md Source # docInOutFunc :: Label -> LoggingFor r vis -> DocInOutFunc (LoggingFor r) md Source # | |
class MethodSym r vis smt md => ModuleSym r vis smt md where Source #
Instances
| ModuleSym r vis smt md => ModuleSym (LoggingFor r) vis smt md Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods buildModule :: Label -> [Label] -> [MS (LoggingFor r md)] -> FS (LoggingFor r Module) Source # | |
data VisibilityTag Source #
Instances
| Eq VisibilityTag Source # | |
Defined in Drasil.Shared.AST Methods (==) :: VisibilityTag -> VisibilityTag -> Bool # (/=) :: VisibilityTag -> VisibilityTag -> Bool # | |
Constructors
| Boolean | |
| Integer | |
| Float | |
| Double | |
| Char | |
| String | |
| InFile | |
| OutFile | |
| Reference CodeType | |
| List CodeType | |
| Set CodeType | |
| Array CodeType | |
| Object ClassName | |
| Func [CodeType] CodeType | |
| Void |
lensMStoVS :: Lens' MethodState ValueState Source #
onStateValue :: (a -> b) -> State s a -> State s b Source #
onCodeList :: Monad m => ([a] -> b) -> [m a] -> m b Source #
newtype LoggingFor (r :: Type -> Type) a Source #
Instances
class TypeSym r => TypeElim r where Source #
Methods
getCodeType :: r TypeData -> CodeType Source #
Instances
| TypeElim r => TypeElim (LoggingFor r) Source # | |
Defined in Drasil.Shared.LanguageRenderer.LoggingFor Methods getCodeType :: LoggingFor r TypeData -> CodeType Source # | |