{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
module Drasil.Shared.LanguageRenderer.LoggingFor (LoggingFor(..)) where
import Drasil.Shared.InterfaceCommon
import qualified Drasil.GProc.InterfaceProc as P
import qualified Drasil.GOOL.InterfaceGOOL as G
import Drasil.Shared.State
import Prelude hiding (print, break, pi, log, floor, sin, cos, tan, exp)
import Control.Lens (zoom)
import Data.Kind (Type)
import Control.Monad.State
import Data.Bifunctor (bimap)
import Drasil.Shared.CodeType (CodeType)
newtype LoggingFor (r :: Type -> Type) a = LC {forall (r :: * -> *) a. LoggingFor r a -> r a
unLC :: r a}
deriving newtype ((forall a b. (a -> b) -> LoggingFor r a -> LoggingFor r b)
-> (forall a b. a -> LoggingFor r b -> LoggingFor r a)
-> Functor (LoggingFor r)
forall a b. a -> LoggingFor r b -> LoggingFor r a
forall a b. (a -> b) -> LoggingFor r a -> LoggingFor r b
forall (r :: * -> *) a b.
Functor r =>
a -> LoggingFor r b -> LoggingFor r a
forall (r :: * -> *) a b.
Functor r =>
(a -> b) -> LoggingFor r a -> LoggingFor r b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall (r :: * -> *) a b.
Functor r =>
(a -> b) -> LoggingFor r a -> LoggingFor r b
fmap :: forall a b. (a -> b) -> LoggingFor r a -> LoggingFor r b
$c<$ :: forall (r :: * -> *) a b.
Functor r =>
a -> LoggingFor r b -> LoggingFor r a
<$ :: forall a b. a -> LoggingFor r b -> LoggingFor r a
Functor, Functor (LoggingFor r)
Functor (LoggingFor r) =>
(forall a. a -> LoggingFor r a)
-> (forall a b.
LoggingFor r (a -> b) -> LoggingFor r a -> LoggingFor r b)
-> (forall a b c.
(a -> b -> c)
-> LoggingFor r a -> LoggingFor r b -> LoggingFor r c)
-> (forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r b)
-> (forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r a)
-> Applicative (LoggingFor r)
forall a. a -> LoggingFor r a
forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r a
forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r b
forall a b.
LoggingFor r (a -> b) -> LoggingFor r a -> LoggingFor r b
forall a b c.
(a -> b -> c) -> LoggingFor r a -> LoggingFor r b -> LoggingFor r c
forall (f :: * -> *).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
forall (r :: * -> *). Applicative r => Functor (LoggingFor r)
forall (r :: * -> *) a. Applicative r => a -> LoggingFor r a
forall (r :: * -> *) a b.
Applicative r =>
LoggingFor r a -> LoggingFor r b -> LoggingFor r a
forall (r :: * -> *) a b.
Applicative r =>
LoggingFor r a -> LoggingFor r b -> LoggingFor r b
forall (r :: * -> *) a b.
Applicative r =>
LoggingFor r (a -> b) -> LoggingFor r a -> LoggingFor r b
forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> LoggingFor r a -> LoggingFor r b -> LoggingFor r c
$cpure :: forall (r :: * -> *) a. Applicative r => a -> LoggingFor r a
pure :: forall a. a -> LoggingFor r a
$c<*> :: forall (r :: * -> *) a b.
Applicative r =>
LoggingFor r (a -> b) -> LoggingFor r a -> LoggingFor r b
<*> :: forall a b.
LoggingFor r (a -> b) -> LoggingFor r a -> LoggingFor r b
$cliftA2 :: forall (r :: * -> *) a b c.
Applicative r =>
(a -> b -> c) -> LoggingFor r a -> LoggingFor r b -> LoggingFor r c
liftA2 :: forall a b c.
(a -> b -> c) -> LoggingFor r a -> LoggingFor r b -> LoggingFor r c
$c*> :: forall (r :: * -> *) a b.
Applicative r =>
LoggingFor r a -> LoggingFor r b -> LoggingFor r b
*> :: forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r b
$c<* :: forall (r :: * -> *) a b.
Applicative r =>
LoggingFor r a -> LoggingFor r b -> LoggingFor r a
<* :: forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r a
Applicative, Applicative (LoggingFor r)
Applicative (LoggingFor r) =>
(forall a b.
LoggingFor r a -> (a -> LoggingFor r b) -> LoggingFor r b)
-> (forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r b)
-> (forall a. a -> LoggingFor r a)
-> Monad (LoggingFor r)
forall a. a -> LoggingFor r a
forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r b
forall a b.
LoggingFor r a -> (a -> LoggingFor r b) -> LoggingFor r b
forall (r :: * -> *). Monad r => Applicative (LoggingFor r)
forall (r :: * -> *) a. Monad r => a -> LoggingFor r a
forall (r :: * -> *) a b.
Monad r =>
LoggingFor r a -> LoggingFor r b -> LoggingFor r b
forall (r :: * -> *) a b.
Monad r =>
LoggingFor r a -> (a -> LoggingFor r b) -> LoggingFor r b
forall (m :: * -> *).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall (r :: * -> *) a b.
Monad r =>
LoggingFor r a -> (a -> LoggingFor r b) -> LoggingFor r b
>>= :: forall a b.
LoggingFor r a -> (a -> LoggingFor r b) -> LoggingFor r b
$c>> :: forall (r :: * -> *) a b.
Monad r =>
LoggingFor r a -> LoggingFor r b -> LoggingFor r b
>> :: forall a b. LoggingFor r a -> LoggingFor r b -> LoggingFor r b
$creturn :: forall (r :: * -> *) a. Monad r => a -> LoggingFor r a
return :: forall a. a -> LoggingFor r a
Monad)
class LiftLogging u l | l -> u where
liftLogging :: u -> l
lowerLogging :: l -> u
instance (LiftLogging u1 l1, LiftLogging u2 l2) => LiftLogging (u1 -> u2) (l1 -> l2) where
liftLogging :: (u1 -> u2) -> l1 -> l2
liftLogging u1 -> u2
k = u2 -> l2
forall u l. LiftLogging u l => u -> l
liftLogging (u2 -> l2) -> (l1 -> u2) -> l1 -> l2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. u1 -> u2
k (u1 -> u2) -> (l1 -> u1) -> l1 -> u2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. l1 -> u1
forall u l. LiftLogging u l => l -> u
lowerLogging
lowerLogging :: (l1 -> l2) -> u1 -> u2
lowerLogging l1 -> l2
k = l2 -> u2
forall u l. LiftLogging u l => l -> u
lowerLogging (l2 -> u2) -> (u1 -> l2) -> u1 -> u2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. l1 -> l2
k (l1 -> l2) -> (u1 -> l1) -> u1 -> l2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. u1 -> l1
forall u l. LiftLogging u l => u -> l
liftLogging
instance LiftLogging (r a) (LoggingFor r a) where
lowerLogging :: LoggingFor r a -> r a
lowerLogging = LoggingFor r a -> r a
forall (r :: * -> *) a. LoggingFor r a -> r a
unLC
liftLogging :: r a -> LoggingFor r a
liftLogging = r a -> LoggingFor r a
forall (r :: * -> *) a. r a -> LoggingFor r a
LC
instance (LiftLogging u l) => LiftLogging (State s u) (State s l) where
liftLogging :: State s u -> State s l
liftLogging = (u -> l) -> State s u -> State s l
forall a b. (a -> b) -> StateT s Identity a -> StateT s Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap u -> l
forall u l. LiftLogging u l => u -> l
liftLogging
lowerLogging :: State s l -> State s u
lowerLogging = (l -> u) -> State s l -> State s u
forall a b. (a -> b) -> StateT s Identity a -> StateT s Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap l -> u
forall u l. LiftLogging u l => l -> u
lowerLogging
instance (LiftLogging u l) => LiftLogging (Maybe u) (Maybe l) where
liftLogging :: Maybe u -> Maybe l
liftLogging = (u -> l) -> Maybe u -> Maybe l
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap u -> l
forall u l. LiftLogging u l => u -> l
liftLogging
lowerLogging :: Maybe l -> Maybe u
lowerLogging = (l -> u) -> Maybe l -> Maybe u
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap l -> u
forall u l. LiftLogging u l => l -> u
lowerLogging
instance {-# OVERLAPPABLE #-} (LiftLogging u l) => LiftLogging [u] [l] where
liftLogging :: [u] -> [l]
liftLogging = (u -> l) -> [u] -> [l]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap u -> l
forall u l. LiftLogging u l => u -> l
liftLogging
lowerLogging :: [l] -> [u]
lowerLogging = (l -> u) -> [l] -> [u]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap l -> u
forall u l. LiftLogging u l => l -> u
lowerLogging
instance LiftLogging String String where
liftLogging :: String -> String
liftLogging = String -> String
forall a. a -> a
id
lowerLogging :: String -> String
lowerLogging = String -> String
forall a. a -> a
id
instance LiftLogging Integer Integer where
liftLogging :: Integer -> Integer
liftLogging = Integer -> Integer
forall a. a -> a
id
lowerLogging :: Integer -> Integer
lowerLogging = Integer -> Integer
forall a. a -> a
id
instance LiftLogging Char Char where
liftLogging :: Char -> Char
liftLogging = Char -> Char
forall a. a -> a
id
lowerLogging :: Char -> Char
lowerLogging = Char -> Char
forall a. a -> a
id
instance LiftLogging Double Double where
liftLogging :: Double -> Double
liftLogging = Double -> Double
forall a. a -> a
id
lowerLogging :: Double -> Double
lowerLogging = Double -> Double
forall a. a -> a
id
instance LiftLogging Float Float where
liftLogging :: Float -> Float
liftLogging = Float -> Float
forall a. a -> a
id
lowerLogging :: Float -> Float
lowerLogging = Float -> Float
forall a. a -> a
id
instance LiftLogging CodeType CodeType where
liftLogging :: CodeType -> CodeType
liftLogging = CodeType -> CodeType
forall a. a -> a
id
lowerLogging :: CodeType -> CodeType
lowerLogging = CodeType -> CodeType
forall a. a -> a
id
instance (LiftLogging u1 l1, LiftLogging u2 l2) => LiftLogging (u1, u2) (l1, l2) where
liftLogging :: (u1, u2) -> (l1, l2)
liftLogging = (u1 -> l1) -> (u2 -> l2) -> (u1, u2) -> (l1, l2)
forall a b c d. (a -> b) -> (c -> d) -> (a, c) -> (b, d)
forall (p :: * -> * -> *) a b c d.
Bifunctor p =>
(a -> b) -> (c -> d) -> p a c -> p b d
bimap u1 -> l1
forall u l. LiftLogging u l => u -> l
liftLogging u2 -> l2
forall u l. LiftLogging u l => u -> l
liftLogging
lowerLogging :: (l1, l2) -> (u1, u2)
lowerLogging = (l1 -> u1) -> (l2 -> u2) -> (l1, l2) -> (u1, u2)
forall a b c d. (a -> b) -> (c -> d) -> (a, c) -> (b, d)
forall (p :: * -> * -> *) a b c d.
Bifunctor p =>
(a -> b) -> (c -> d) -> p a c -> p b d
bimap l1 -> u1
forall u l. LiftLogging u l => l -> u
lowerLogging l2 -> u2
forall u l. LiftLogging u l => l -> u
lowerLogging
varLogFile :: (VariableSym r) => SVariable r
varLogFile :: forall (r :: * -> *). VariableSym r => SVariable r
varLogFile = String -> VS (r TypeData) -> SVariable r
forall (r :: * -> *).
VariableSym r =>
String -> VS (r TypeData) -> SVariable r
var String
"outfile" VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
outfile
valLogFile :: (VariableValue r) => SValue r
valLogFile :: forall (r :: * -> *). VariableValue r => SValue r
valLogFile = SVariable r -> SValue r
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf SVariable r
forall (r :: * -> *). VariableSym r => SVariable r
varLogFile
logName :: (Literal r) => SValue r
logName :: forall (r :: * -> *). Literal r => SValue r
logName = String -> SValue r
forall (r :: * -> *). Literal r => String -> SValue r
litString String
"log.txt"
logVarUpdate
:: (IOStatement r smt, VariableValue r, VariableElim r, Literal r)
=> SVariable (LoggingFor r)
-> [MS (r smt)]
logVarUpdate :: forall (r :: * -> *) smt.
(IOStatement r smt, VariableValue r, VariableElim r, Literal r) =>
SVariable (LoggingFor r) -> [MS (r smt)]
logVarUpdate SVariable (LoggingFor r)
x =
[ SVariable r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileA SVariable r
forall (r :: * -> *). VariableSym r => SVariable r
varLogFile SValue r
forall (r :: * -> *). Literal r => SValue r
logName
, do
String
x' <- r Variable -> String
forall (r :: * -> *). VariableElim r => r Variable -> String
variableName (r Variable -> String)
-> (LoggingFor r Variable -> r Variable)
-> LoggingFor r Variable
-> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LoggingFor r Variable -> r Variable
forall u l. LiftLogging u l => l -> u
lowerLogging (LoggingFor r Variable -> String)
-> StateT MethodState Identity (LoggingFor r Variable)
-> StateT MethodState Identity String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> LensLike'
(Zoomed (StateT ValueState Identity) (LoggingFor r Variable))
MethodState
ValueState
-> SVariable (LoggingFor r)
-> StateT MethodState Identity (LoggingFor r Variable)
forall c.
LensLike'
(Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT ValueState Identity) (LoggingFor r Variable))
MethodState
ValueState
(ValueState
-> Focusing Identity (LoggingFor r Variable) ValueState)
-> MethodState
-> Focusing Identity (LoggingFor r Variable) MethodState
Lens' MethodState ValueState
lensMStoVS SVariable (LoggingFor r)
x
SValue r -> String -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> String -> MS (r smt)
printFileStr SValue r
forall (r :: * -> *). VariableValue r => SValue r
valLogFile (String -> MS (r smt)) -> String -> MS (r smt)
forall a b. (a -> b) -> a -> b
$ String
"var '" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
x' String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"' assigned "
, SValue r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SValue r -> MS (r smt)
printFile SValue r
forall (r :: * -> *). VariableValue r => SValue r
valLogFile (SValue r -> MS (r smt)) -> SValue r -> MS (r smt)
forall a b. (a -> b) -> a -> b
$ SVariable r -> SValue r
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
x)
, do
String
modName <- LensLike'
(Zoomed (StateT FileState Identity) String) MethodState FileState
-> StateT FileState Identity String
-> StateT MethodState Identity String
forall c.
LensLike'
(Zoomed (StateT FileState Identity) c) MethodState FileState
-> StateT FileState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
(Zoomed (StateT FileState Identity) String) MethodState FileState
(FileState -> Focusing Identity String FileState)
-> MethodState -> Focusing Identity String MethodState
Lens' MethodState FileState
lensMStoFS StateT FileState Identity String
getModuleName
SValue r -> String -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> String -> MS (r smt)
printFileStrLn SValue r
forall (r :: * -> *). VariableValue r => SValue r
valLogFile (String -> MS (r smt)) -> String -> MS (r smt)
forall a b. (a -> b) -> a -> b
$ String
" in module " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
modName
, SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
closeFile SValue r
forall (r :: * -> *). VariableValue r => SValue r
valLogFile
]
instance (AssignStatement r smt, IOStatement r smt, VariableValue r, VariableElim r, Literal r)
=> AssignStatement (LoggingFor r) smt where
&-= :: SVariable (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
(&-=) = (SVariable r -> SValue r -> MS (r smt))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
(&-=)
&+= :: SVariable (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
(&+=) = (SVariable r -> SValue r -> MS (r smt))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
(&+=)
&++ :: SVariable (LoggingFor r) -> MS (LoggingFor r smt)
(&++) = (SVariable r -> MS (r smt))
-> SVariable (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> MS (r smt)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> MS (r smt)
(&++)
&-- :: SVariable (LoggingFor r) -> MS (LoggingFor r smt)
(&--) = (SVariable r -> MS (r smt))
-> SVariable (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> MS (r smt)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> MS (r smt)
(&--)
assign :: SVariable (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
assign SVariable (LoggingFor r)
x SValue (LoggingFor r)
e = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$ [MS (r smt)] -> MS (r smt)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi ([MS (r smt)] -> MS (r smt)) -> [MS (r smt)] -> MS (r smt)
forall a b. (a -> b) -> a -> b
$
SVariable r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
AssignStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
assign (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
x) (SValue (LoggingFor r) -> SValue r
forall u l. LiftLogging u l => l -> u
lowerLogging SValue (LoggingFor r)
e)
MS (r smt) -> [MS (r smt)] -> [MS (r smt)]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor r) -> [MS (r smt)]
forall (r :: * -> *) smt.
(IOStatement r smt, VariableValue r, VariableElim r, Literal r) =>
SVariable (LoggingFor r) -> [MS (r smt)]
logVarUpdate SVariable (LoggingFor r)
x
instance (List r smt) => List (LoggingFor r) smt where
listSize :: SValue (LoggingFor r) -> SValue (LoggingFor r)
listSize = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *) smt. List r smt => SValue r -> SValue r
listSize
listAdd :: SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
listAdd = (SValue r -> SValue r -> SValue r -> MS (r smt))
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r -> MS (r smt)
listAdd
listAppend :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
listAppend = (SValue r -> SValue r -> MS (r smt))
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> MS (r smt)
listAppend
listAccess :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
listAccess = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r
listAccess
listSet :: SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
listSet = (SValue r -> SValue r -> SValue r -> MS (r smt))
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r -> MS (r smt)
listSet
indexOf :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
indexOf = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *) smt.
List r smt =>
SValue r -> SValue r -> SValue r
indexOf
instance (DeclStatement r smt, IOStatement r smt, VariableValue r, VariableElim r, Literal r)
=> DeclStatement (LoggingFor r) smt where
varDec :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData -> MS (LoggingFor r smt)
varDec = (SVariable r -> r ScopeData -> MS (r smt))
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> r ScopeData -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
varDec
varDecDef :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
varDecDef SVariable (LoggingFor r)
vr LoggingFor r ScopeData
scp SValue (LoggingFor r)
vl = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$ [MS (r smt)] -> MS (r smt)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi ([MS (r smt)] -> MS (r smt)) -> [MS (r smt)] -> MS (r smt)
forall a b. (a -> b) -> a -> b
$
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
varDecDef (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
vr) (LoggingFor r ScopeData -> r ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor r ScopeData
scp) (SValue (LoggingFor r) -> SValue r
forall u l. LiftLogging u l => l -> u
lowerLogging SValue (LoggingFor r)
vl)
MS (r smt) -> [MS (r smt)] -> [MS (r smt)]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor r) -> [MS (r smt)]
forall (r :: * -> *) smt.
(IOStatement r smt, VariableValue r, VariableElim r, Literal r) =>
SVariable (LoggingFor r) -> [MS (r smt)]
logVarUpdate SVariable (LoggingFor r)
vr
listDec :: Integer
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> MS (LoggingFor r smt)
listDec = (Integer -> SVariable r -> r ScopeData -> MS (r smt))
-> Integer
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging Integer -> SVariable r -> r ScopeData -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
Integer -> SVariable r -> r ScopeData -> MS (r smt)
listDec
listDecDef :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> [SValue (LoggingFor r)]
-> MS (LoggingFor r smt)
listDecDef SVariable (LoggingFor r)
vr LoggingFor r ScopeData
scp [SValue (LoggingFor r)]
vls = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
listDecDef (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
vr) (LoggingFor r ScopeData -> r ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor r ScopeData
scp) ([SValue (LoggingFor r)] -> [SValue r]
forall u l. LiftLogging u l => l -> u
lowerLogging [SValue (LoggingFor r)]
vls)
setDec :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData -> MS (LoggingFor r smt)
setDec = (SVariable r -> r ScopeData -> MS (r smt))
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> r ScopeData -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> MS (r smt)
setDec
setDecDef :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
setDecDef SVariable (LoggingFor r)
vr LoggingFor r ScopeData
scp SValue (LoggingFor r)
vl = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
setDecDef (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
vr) (LoggingFor r ScopeData -> r ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor r ScopeData
scp) (SValue (LoggingFor r) -> SValue r
forall u l. LiftLogging u l => l -> u
lowerLogging SValue (LoggingFor r)
vl)
arrayDec :: Integer
-> SValue (LoggingFor r)
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> MS (LoggingFor r smt)
arrayDec = (Integer -> SValue r -> SVariable r -> r ScopeData -> MS (r smt))
-> Integer
-> SValue (LoggingFor r)
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging Integer -> SValue r -> SVariable r -> r ScopeData -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
Integer -> SValue r -> SVariable r -> r ScopeData -> MS (r smt)
arrayDec
arrayDecDef :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> [SValue (LoggingFor r)]
-> MS (LoggingFor r smt)
arrayDecDef SVariable (LoggingFor r)
vr LoggingFor r ScopeData
scp [SValue (LoggingFor r)]
vls = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
arrayDecDef (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
vr) (LoggingFor r ScopeData -> r ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor r ScopeData
scp) ([SValue (LoggingFor r)] -> [SValue r]
forall u l. LiftLogging u l => l -> u
lowerLogging [SValue (LoggingFor r)]
vls)
constDecDef :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
constDecDef SVariable (LoggingFor r)
cnst LoggingFor r ScopeData
scp SValue (LoggingFor r)
vl = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$ [MS (r smt)] -> MS (r smt)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi ([MS (r smt)] -> MS (r smt)) -> [MS (r smt)] -> MS (r smt)
forall a b. (a -> b) -> a -> b
$
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
constDecDef (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
cnst) (LoggingFor r ScopeData -> r ScopeData
forall u l. LiftLogging u l => l -> u
lowerLogging LoggingFor r ScopeData
scp) (SValue (LoggingFor r) -> SValue r
forall u l. LiftLogging u l => l -> u
lowerLogging SValue (LoggingFor r)
vl)
MS (r smt) -> [MS (r smt)] -> [MS (r smt)]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor r) -> [MS (r smt)]
forall (r :: * -> *) smt.
(IOStatement r smt, VariableValue r, VariableElim r, Literal r) =>
SVariable (LoggingFor r) -> [MS (r smt)]
logVarUpdate SVariable (LoggingFor r)
cnst
funcDecDef :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> [SVariable (LoggingFor r)]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
funcDecDef = (SVariable r
-> r ScopeData -> [SVariable r] -> MS (r Body) -> MS (r smt))
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> [SVariable (LoggingFor r)]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r
-> r ScopeData -> [SVariable r] -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
DeclStatement r smt =>
SVariable r
-> r ScopeData -> [SVariable r] -> MS (r Body) -> MS (r smt)
funcDecDef
instance (IOStatement r smt, VariableValue r, VariableElim r, Literal r)
=> IOStatement (LoggingFor r) smt where
print :: SValue (LoggingFor r) -> MS (LoggingFor r smt)
print = (SValue r -> MS (r smt))
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
print
printLn :: SValue (LoggingFor r) -> MS (LoggingFor r smt)
printLn = (SValue r -> MS (r smt))
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
printLn
printStr :: String -> MS (LoggingFor r smt)
printStr = (String -> MS (r smt)) -> String -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (r smt)
forall (r :: * -> *) smt. IOStatement r smt => String -> MS (r smt)
printStr
printStrLn :: String -> MS (LoggingFor r smt)
printStrLn = (String -> MS (r smt)) -> String -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (r smt)
forall (r :: * -> *) smt. IOStatement r smt => String -> MS (r smt)
printStrLn
printFile :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
printFile = (SValue r -> SValue r -> MS (r smt))
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SValue r -> MS (r smt)
printFile
printFileLn :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
printFileLn = (SValue r -> SValue r -> MS (r smt))
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SValue r -> MS (r smt)
printFileLn
printFileStr :: SValue (LoggingFor r) -> String -> MS (LoggingFor r smt)
printFileStr = (SValue r -> String -> MS (r smt))
-> SValue (LoggingFor r) -> String -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> String -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> String -> MS (r smt)
printFileStr
printFileStrLn :: SValue (LoggingFor r) -> String -> MS (LoggingFor r smt)
printFileStrLn = (SValue r -> String -> MS (r smt))
-> SValue (LoggingFor r) -> String -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> String -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> String -> MS (r smt)
printFileStrLn
getInput :: SVariable (LoggingFor r) -> MS (LoggingFor r smt)
getInput SVariable (LoggingFor r)
vr = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$ [MS (r smt)] -> MS (r smt)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi ([MS (r smt)] -> MS (r smt)) -> [MS (r smt)] -> MS (r smt)
forall a b. (a -> b) -> a -> b
$
SVariable r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> MS (r smt)
getInput (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
vr) MS (r smt) -> [MS (r smt)] -> [MS (r smt)]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor r) -> [MS (r smt)]
forall (r :: * -> *) smt.
(IOStatement r smt, VariableValue r, VariableElim r, Literal r) =>
SVariable (LoggingFor r) -> [MS (r smt)]
logVarUpdate SVariable (LoggingFor r)
vr
discardInput :: MS (LoggingFor r smt)
discardInput = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging MS (r smt)
forall (r :: * -> *) smt. IOStatement r smt => MS (r smt)
discardInput
getFileInput :: SValue (LoggingFor r)
-> SVariable (LoggingFor r) -> MS (LoggingFor r smt)
getFileInput SValue (LoggingFor r)
file SVariable (LoggingFor r)
vr = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$ [MS (r smt)] -> MS (r smt)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi ([MS (r smt)] -> MS (r smt)) -> [MS (r smt)] -> MS (r smt)
forall a b. (a -> b) -> a -> b
$
SValue r -> SVariable r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInput (SValue (LoggingFor r) -> SValue r
forall u l. LiftLogging u l => l -> u
lowerLogging SValue (LoggingFor r)
file) (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
vr)
MS (r smt) -> [MS (r smt)] -> [MS (r smt)]
forall a. a -> [a] -> [a]
: SVariable (LoggingFor r) -> [MS (r smt)]
forall (r :: * -> *) smt.
(IOStatement r smt, VariableValue r, VariableElim r, Literal r) =>
SVariable (LoggingFor r) -> [MS (r smt)]
logVarUpdate SVariable (LoggingFor r)
vr
discardFileInput :: SValue (LoggingFor r) -> MS (LoggingFor r smt)
discardFileInput = (SValue r -> MS (r smt))
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
discardFileInput
openFileR :: SVariable (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
openFileR = (SVariable r -> SValue r -> MS (r smt))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileR
openFileW :: SVariable (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
openFileW = (SVariable r -> SValue r -> MS (r smt))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileW
openFileA :: SVariable (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
openFileA = (SVariable r -> SValue r -> MS (r smt))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SVariable r -> SValue r -> MS (r smt)
openFileA
closeFile :: SValue (LoggingFor r) -> MS (LoggingFor r smt)
closeFile = (SValue r -> MS (r smt))
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
closeFile
getFileInputLine :: SValue (LoggingFor r)
-> SVariable (LoggingFor r) -> MS (LoggingFor r smt)
getFileInputLine = (SValue r -> SVariable r -> MS (r smt))
-> SValue (LoggingFor r)
-> SVariable (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SVariable r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInputLine
discardFileLine :: SValue (LoggingFor r) -> MS (LoggingFor r smt)
discardFileLine = (SValue r -> MS (r smt))
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> MS (r smt)
discardFileLine
getFileInputAll :: SValue (LoggingFor r)
-> SVariable (LoggingFor r) -> MS (LoggingFor r smt)
getFileInputAll = (SValue r -> SVariable r -> MS (r smt))
-> SValue (LoggingFor r)
-> SVariable (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SVariable r -> MS (r smt)
forall (r :: * -> *) smt.
IOStatement r smt =>
SValue r -> SVariable r -> MS (r smt)
getFileInputAll
instance (StringStatement r smt, IOStatement r smt, VariableValue r, VariableElim r, Literal r)
=> StringStatement (LoggingFor r) smt where
stringSplit :: Char
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
stringSplit Char
chr SVariable (LoggingFor r)
vr SValue (LoggingFor r)
str = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$
Char -> SVariable r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
StringStatement r smt =>
Char -> SVariable r -> SValue r -> MS (r smt)
stringSplit (Char -> Char
forall u l. LiftLogging u l => l -> u
lowerLogging Char
chr) (SVariable (LoggingFor r) -> SVariable r
forall u l. LiftLogging u l => l -> u
lowerLogging SVariable (LoggingFor r)
vr) (SValue (LoggingFor r) -> SValue r
forall u l. LiftLogging u l => l -> u
lowerLogging SValue (LoggingFor r)
str)
stringListVals :: [SVariable (LoggingFor r)]
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
stringListVals [SVariable (LoggingFor r)]
vrs SValue (LoggingFor r)
strs = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$
[SVariable r] -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
StringStatement r smt =>
[SVariable r] -> SValue r -> MS (r smt)
stringListVals ([SVariable (LoggingFor r)] -> [SVariable r]
forall u l. LiftLogging u l => l -> u
lowerLogging [SVariable (LoggingFor r)]
vrs) (SValue (LoggingFor r) -> SValue r
forall u l. LiftLogging u l => l -> u
lowerLogging SValue (LoggingFor r)
strs)
stringListLists :: [SVariable (LoggingFor r)]
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
stringListLists [SVariable (LoggingFor r)]
vrs SValue (LoggingFor r)
strs = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging (MS (r smt) -> MS (LoggingFor r smt))
-> MS (r smt) -> MS (LoggingFor r smt)
forall a b. (a -> b) -> a -> b
$ [MS (r smt)] -> MS (r smt)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi ([MS (r smt)] -> MS (r smt)) -> [MS (r smt)] -> MS (r smt)
forall a b. (a -> b) -> a -> b
$
[SVariable r] -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
StringStatement r smt =>
[SVariable r] -> SValue r -> MS (r smt)
stringListLists ([SVariable (LoggingFor r)] -> [SVariable r]
forall u l. LiftLogging u l => l -> u
lowerLogging [SVariable (LoggingFor r)]
vrs) (SValue (LoggingFor r) -> SValue r
forall u l. LiftLogging u l => l -> u
lowerLogging SValue (LoggingFor r)
strs)
MS (r smt) -> [MS (r smt)] -> [MS (r smt)]
forall a. a -> [a] -> [a]
: (SVariable (LoggingFor r) -> [MS (r smt)])
-> [SVariable (LoggingFor r)] -> [MS (r smt)]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap SVariable (LoggingFor r) -> [MS (r smt)]
forall (r :: * -> *) smt.
(IOStatement r smt, VariableValue r, VariableElim r, Literal r) =>
SVariable (LoggingFor r) -> [MS (r smt)]
logVarUpdate [SVariable (LoggingFor r)]
vrs
instance (SharedProg r vis smt md) => SharedProg (LoggingFor r) vis smt md
instance (SharedStatement r smt, VariableElim r) => SharedStatement (LoggingFor r) smt
instance (G.OOStatement r smt, VariableElim r) => G.OOStatement (LoggingFor r) smt
instance (VariableSym r) => VariableSym (LoggingFor r) where
var :: String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
var = (String -> VS (r TypeData) -> SVariable r)
-> String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VS (r TypeData) -> SVariable r
forall (r :: * -> *).
VariableSym r =>
String -> VS (r TypeData) -> SVariable r
var
constant :: String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
constant = (String -> VS (r TypeData) -> SVariable r)
-> String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VS (r TypeData) -> SVariable r
forall (r :: * -> *).
VariableSym r =>
String -> VS (r TypeData) -> SVariable r
constant
extVar :: String
-> String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
extVar = (String -> String -> VS (r TypeData) -> SVariable r)
-> String
-> String
-> VS (LoggingFor r TypeData)
-> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> String -> VS (r TypeData) -> SVariable r
forall (r :: * -> *).
VariableSym r =>
String -> String -> VS (r TypeData) -> SVariable r
extVar
instance (TypeSym r) => TypeSym (LoggingFor r) where
bool :: VS (LoggingFor r TypeData)
bool = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
bool
int :: VS (LoggingFor r TypeData)
int = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
int
float :: VS (LoggingFor r TypeData)
float = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
float
double :: VS (LoggingFor r TypeData)
double = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
double
char :: VS (LoggingFor r TypeData)
char = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
char
string :: VS (LoggingFor r TypeData)
string = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
string
infile :: VS (LoggingFor r TypeData)
infile = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
infile
outfile :: VS (LoggingFor r TypeData)
outfile = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
outfile
referenceType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
referenceType = (VS (r TypeData) -> VS (r TypeData))
-> VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> VS (r TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
referenceType
listType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
listType = (VS (r TypeData) -> VS (r TypeData))
-> VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> VS (r TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
listType
setType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
setType = (VS (r TypeData) -> VS (r TypeData))
-> VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> VS (r TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
setType
arrayType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
arrayType = (VS (r TypeData) -> VS (r TypeData))
-> VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> VS (r TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
arrayType
innerType :: VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
innerType = (VS (r TypeData) -> VS (r TypeData))
-> VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> VS (r TypeData)
forall (r :: * -> *).
TypeSym r =>
VS (r TypeData) -> VS (r TypeData)
innerType
funcType :: [VS (LoggingFor r TypeData)]
-> VS (LoggingFor r TypeData) -> VS (LoggingFor r TypeData)
funcType = ([VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData))
-> [VS (LoggingFor r TypeData)]
-> VS (LoggingFor r TypeData)
-> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging [VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
forall (r :: * -> *).
TypeSym r =>
[VS (r TypeData)] -> VS (r TypeData) -> VS (r TypeData)
funcType
void :: VS (LoggingFor r TypeData)
void = VS (r TypeData) -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData)
forall (r :: * -> *). TypeSym r => VS (r TypeData)
void
instance (TypeElim r) => TypeElim (LoggingFor r) where
getCodeType :: LoggingFor r TypeData -> CodeType
getCodeType = (r TypeData -> CodeType) -> LoggingFor r TypeData -> CodeType
forall u l. LiftLogging u l => u -> l
liftLogging r TypeData -> CodeType
forall (r :: * -> *). TypeElim r => r TypeData -> CodeType
getCodeType
instance (ValueSym r) => ValueSym (LoggingFor r) where
valueType :: LoggingFor r Value -> LoggingFor r TypeData
valueType = (r Value -> r TypeData)
-> LoggingFor r Value -> LoggingFor r TypeData
forall u l. LiftLogging u l => u -> l
liftLogging r Value -> r TypeData
forall (r :: * -> *). ValueSym r => r Value -> r TypeData
valueType
instance StatementSym r smt => StatementSym (LoggingFor r) smt where
valStmt :: SValue (LoggingFor r) -> MS (LoggingFor r smt)
valStmt = (SValue r -> MS (r smt))
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r smt)
forall (r :: * -> *) smt.
StatementSym r smt =>
SValue r -> MS (r smt)
valStmt
emptyStmt :: MS (LoggingFor r smt)
emptyStmt = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging MS (r smt)
forall (r :: * -> *) smt. StatementSym r smt => MS (r smt)
emptyStmt
multi :: [MS (LoggingFor r smt)] -> MS (LoggingFor r smt)
multi = ([MS (r smt)] -> MS (r smt))
-> [MS (LoggingFor r smt)] -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging [MS (r smt)] -> MS (r smt)
forall (r :: * -> *) smt.
StatementSym r smt =>
[MS (r smt)] -> MS (r smt)
multi
instance (Argument r) => Argument (LoggingFor r) where
pointerArg :: SValue (LoggingFor r) -> SValue (LoggingFor r)
pointerArg = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). Argument r => SValue r -> SValue r
pointerArg
instance (Reference r) => Reference (LoggingFor r) where
makeRef :: SValue (LoggingFor r) -> SValue (LoggingFor r)
makeRef = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). Reference r => SValue r -> SValue r
makeRef
maybeDeref :: SValue (LoggingFor r) -> SValue (LoggingFor r)
maybeDeref = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). Reference r => SValue r -> SValue r
maybeDeref
instance (Array r) => Array (LoggingFor r) where
arrayElem :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SVariable (LoggingFor r)
arrayElem = (SValue r -> SValue r -> SVariable r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SVariable r
forall (r :: * -> *).
Array r =>
SValue r -> SValue r -> SVariable r
arrayElem
arrayLength :: SValue (LoggingFor r) -> SValue (LoggingFor r)
arrayLength = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). Array r => SValue r -> SValue r
arrayLength
arrayCopy :: SValue (LoggingFor r) -> SValue (LoggingFor r)
arrayCopy = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). Array r => SValue r -> SValue r
arrayCopy
instance (BinderSym r) => BinderSym (LoggingFor r) where
binder :: String -> VS (LoggingFor r TypeData) -> VSBinder (LoggingFor r)
binder = (String -> VS (r TypeData) -> VSBinder r)
-> String -> VS (LoggingFor r TypeData) -> VSBinder (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VS (r TypeData) -> VSBinder r
forall (r :: * -> *).
BinderSym r =>
String -> VS (r TypeData) -> VSBinder r
binder
instance (BooleanExpression r) => BooleanExpression (LoggingFor r) where
?! :: SValue (LoggingFor r) -> SValue (LoggingFor r)
(?!) = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). BooleanExpression r => SValue r -> SValue r
(?!)
?&& :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(?&&) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
BooleanExpression r =>
SValue r -> SValue r -> SValue r
(?&&)
?|| :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(?||) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
BooleanExpression r =>
SValue r -> SValue r -> SValue r
(?||)
instance (CommandLineArgs r) => CommandLineArgs (LoggingFor r) where
arg :: Integer -> SValue (LoggingFor r)
arg = (Integer -> SValue r) -> Integer -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging Integer -> SValue r
forall (r :: * -> *). CommandLineArgs r => Integer -> SValue r
arg
argsList :: SValue (LoggingFor r)
argsList = SValue r -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r
forall (r :: * -> *). CommandLineArgs r => SValue r
argsList
argExists :: Integer -> SValue (LoggingFor r)
argExists = (Integer -> SValue r) -> Integer -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging Integer -> SValue r
forall (r :: * -> *). CommandLineArgs r => Integer -> SValue r
argExists
instance (CommentStatement r smt) => CommentStatement (LoggingFor r) smt where
comment :: String -> MS (LoggingFor r smt)
comment = (String -> MS (r smt)) -> String -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (r smt)
forall (r :: * -> *) smt.
CommentStatement r smt =>
String -> MS (r smt)
comment
instance (Comparison r) => Comparison (LoggingFor r) where
?< :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(?<) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?<)
?<= :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(?<=) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?<=)
?> :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(?>) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?>)
?>= :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(?>=) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?>=)
?== :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(?==) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?==)
?!= :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(?!=) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
Comparison r =>
SValue r -> SValue r -> SValue r
(?!=)
instance (BlockSym r smt) => BlockSym (LoggingFor r) smt where
block :: [MS (LoggingFor r smt)] -> MS (LoggingFor r Body)
block = ([MS (r smt)] -> MS (r Body))
-> [MS (LoggingFor r smt)] -> MS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging [MS (r smt)] -> MS (r Body)
forall (r :: * -> *) smt.
BlockSym r smt =>
[MS (r smt)] -> MS (r Body)
block
instance (BodySym r smt) => BodySym (LoggingFor r) smt where
body :: [MS (LoggingFor r Body)] -> MS (LoggingFor r Body)
body = ([MS (r Body)] -> MS (r Body))
-> [MS (LoggingFor r Body)] -> MS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging [MS (r Body)] -> MS (r Body)
forall (r :: * -> *) smt.
BodySym r smt =>
[MS (r Body)] -> MS (r Body)
body
addComments :: String -> MS (LoggingFor r Body) -> MS (LoggingFor r Body)
addComments = (String -> MS (r Body) -> MS (r Body))
-> String -> MS (LoggingFor r Body) -> MS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (r Body) -> MS (r Body)
forall (r :: * -> *) smt.
BodySym r smt =>
String -> MS (r Body) -> MS (r Body)
addComments
instance (ControlStatement r smt) => ControlStatement (LoggingFor r) smt where
break :: MS (LoggingFor r smt)
break = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging MS (r smt)
forall (r :: * -> *) smt. ControlStatement r smt => MS (r smt)
break
continue :: MS (LoggingFor r smt)
continue = MS (r smt) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging MS (r smt)
forall (r :: * -> *) smt. ControlStatement r smt => MS (r smt)
continue
returnStmt :: SValue (LoggingFor r) -> MS (LoggingFor r smt)
returnStmt = (SValue r -> MS (r smt))
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r smt)
returnStmt
throw :: String -> MS (LoggingFor r smt)
throw = (String -> MS (r smt)) -> String -> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
String -> MS (r smt)
throw
ifCond :: [(SValue (LoggingFor r), MS (LoggingFor r Body))]
-> MS (LoggingFor r Body) -> MS (LoggingFor r smt)
ifCond = ([(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt))
-> [(SValue (LoggingFor r), MS (LoggingFor r Body))]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
[(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt)
ifCond
switch :: SValue (LoggingFor r)
-> [(SValue (LoggingFor r), MS (LoggingFor r Body))]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
switch = (SValue r
-> [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt))
-> SValue (LoggingFor r)
-> [(SValue (LoggingFor r), MS (LoggingFor r Body))]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> [(SValue r, MS (r Body))] -> MS (r Body) -> MS (r smt)
switch
ifExists :: SValue (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
ifExists = (SValue r -> MS (r Body) -> MS (r Body) -> MS (r smt))
-> SValue (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r Body) -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r Body) -> MS (r Body) -> MS (r smt)
ifExists
for :: MS (LoggingFor r smt)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
for = (MS (r smt) -> SValue r -> MS (r smt) -> MS (r Body) -> MS (r smt))
-> MS (LoggingFor r smt)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging MS (r smt) -> SValue r -> MS (r smt) -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
MS (r smt) -> SValue r -> MS (r smt) -> MS (r Body) -> MS (r smt)
for
forRange :: SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forRange = (SVariable r
-> SValue r -> SValue r -> SValue r -> MS (r Body) -> MS (r smt))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r
-> SValue r -> SValue r -> SValue r -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SVariable r
-> SValue r -> SValue r -> SValue r -> MS (r Body) -> MS (r smt)
forRange
forEach :: SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forEach = (SVariable r -> SValue r -> MS (r Body) -> MS (r smt))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> SValue r -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SVariable r -> SValue r -> MS (r Body) -> MS (r smt)
forEach
while :: SValue (LoggingFor r)
-> MS (LoggingFor r Body) -> MS (LoggingFor r smt)
while = (SValue r -> MS (r Body) -> MS (r smt))
-> SValue (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> MS (r Body) -> MS (r smt)
while
tryCatch :: MS (LoggingFor r Body)
-> MS (LoggingFor r Body) -> MS (LoggingFor r smt)
tryCatch = (MS (r Body) -> MS (r Body) -> MS (r smt))
-> MS (LoggingFor r Body)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging MS (r Body) -> MS (r Body) -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
MS (r Body) -> MS (r Body) -> MS (r smt)
tryCatch
assert :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> MS (LoggingFor r smt)
assert = (SValue r -> SValue r -> MS (r smt))
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
ControlStatement r smt =>
SValue r -> SValue r -> MS (r smt)
assert
instance (ScopeSym r) => ScopeSym (LoggingFor r) where
global :: LoggingFor r ScopeData
global = r ScopeData -> LoggingFor r ScopeData
forall u l. LiftLogging u l => u -> l
liftLogging r ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
global
mainFn :: LoggingFor r ScopeData
mainFn = r ScopeData -> LoggingFor r ScopeData
forall u l. LiftLogging u l => u -> l
liftLogging r ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
mainFn
local :: LoggingFor r ScopeData
local = r ScopeData -> LoggingFor r ScopeData
forall u l. LiftLogging u l => u -> l
liftLogging r ScopeData
forall (r :: * -> *). ScopeSym r => r ScopeData
local
instance (FuncAppStatement r smt) => FuncAppStatement (LoggingFor r) smt where
inOutCall :: InOutCall (LoggingFor r) smt
inOutCall = InOutCall r smt -> InOutCall (LoggingFor r) smt
forall u l. LiftLogging u l => u -> l
liftLogging InOutCall r smt
forall (r :: * -> *) smt. FuncAppStatement r smt => InOutCall r smt
inOutCall
extInOutCall :: String -> InOutCall (LoggingFor r) smt
extInOutCall = (String -> InOutCall r smt)
-> String -> InOutCall (LoggingFor r) smt
forall u l. LiftLogging u l => u -> l
liftLogging String -> InOutCall r smt
forall (r :: * -> *) smt.
FuncAppStatement r smt =>
String -> InOutCall r smt
extInOutCall
instance (FunctionSym r) => FunctionSym (LoggingFor r) where
instance (InternalList r) => InternalList (LoggingFor r) where
listSlice' :: Maybe (SValue (LoggingFor r))
-> Maybe (SValue (LoggingFor r))
-> Maybe (SValue (LoggingFor r))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r Body)
listSlice' = (Maybe (SValue r)
-> Maybe (SValue r)
-> Maybe (SValue r)
-> SVariable r
-> SValue r
-> MS (r Body))
-> Maybe (SValue (LoggingFor r))
-> Maybe (SValue (LoggingFor r))
-> Maybe (SValue (LoggingFor r))
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> MS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging Maybe (SValue r)
-> Maybe (SValue r)
-> Maybe (SValue r)
-> SVariable r
-> SValue r
-> MS (r Body)
forall (r :: * -> *).
InternalList r =>
Maybe (SValue r)
-> Maybe (SValue r)
-> Maybe (SValue r)
-> SVariable r
-> SValue r
-> MS (r Body)
listSlice'
instance (Literal r) => Literal (LoggingFor r) where
litTrue :: SValue (LoggingFor r)
litTrue = SValue r -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r
forall (r :: * -> *). Literal r => SValue r
litTrue
litFalse :: SValue (LoggingFor r)
litFalse = SValue r -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r
forall (r :: * -> *). Literal r => SValue r
litFalse
litChar :: Char -> SValue (LoggingFor r)
litChar = (Char -> SValue r) -> Char -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging Char -> SValue r
forall (r :: * -> *). Literal r => Char -> SValue r
litChar
litDouble :: Double -> SValue (LoggingFor r)
litDouble = (Double -> SValue r) -> Double -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging Double -> SValue r
forall (r :: * -> *). Literal r => Double -> SValue r
litDouble
litFloat :: Float -> SValue (LoggingFor r)
litFloat = (Float -> SValue r) -> Float -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging Float -> SValue r
forall (r :: * -> *). Literal r => Float -> SValue r
litFloat
litInt :: Integer -> SValue (LoggingFor r)
litInt = (Integer -> SValue r) -> Integer -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging Integer -> SValue r
forall (r :: * -> *). Literal r => Integer -> SValue r
litInt
litString :: String -> SValue (LoggingFor r)
litString = (String -> SValue r) -> String -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> SValue r
forall (r :: * -> *). Literal r => String -> SValue r
litString
litArray :: VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)] -> SValue (LoggingFor r)
litArray = (VS (r TypeData) -> [SValue r] -> SValue r)
-> VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)]
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> [SValue r] -> SValue r
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litArray
litList :: VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)] -> SValue (LoggingFor r)
litList = (VS (r TypeData) -> [SValue r] -> SValue r)
-> VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)]
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> [SValue r] -> SValue r
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litList
litSet :: VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)] -> SValue (LoggingFor r)
litSet = (VS (r TypeData) -> [SValue r] -> SValue r)
-> VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)]
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> [SValue r] -> SValue r
forall (r :: * -> *).
Literal r =>
VS (r TypeData) -> [SValue r] -> SValue r
litSet
instance (MathConstant r) => MathConstant (LoggingFor r) where
pi :: SValue (LoggingFor r)
pi = SValue r -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r
forall (r :: * -> *). MathConstant r => SValue r
pi
instance (ParameterSym r) => ParameterSym (LoggingFor r) where
param :: SVariable (LoggingFor r) -> MS (LoggingFor r ParamData)
param = (SVariable r -> MS (r ParamData))
-> SVariable (LoggingFor r) -> MS (LoggingFor r ParamData)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> MS (r ParamData)
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
param
pointerParam :: SVariable (LoggingFor r) -> MS (LoggingFor r ParamData)
pointerParam = (SVariable r -> MS (r ParamData))
-> SVariable (LoggingFor r) -> MS (LoggingFor r ParamData)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> MS (r ParamData)
forall (r :: * -> *).
ParameterSym r =>
SVariable r -> MS (r ParamData)
pointerParam
instance (VisibilitySym r vis) => VisibilitySym (LoggingFor r) vis where
private :: LoggingFor r vis
private = r vis -> LoggingFor r vis
forall u l. LiftLogging u l => u -> l
liftLogging r vis
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
private
public :: LoggingFor r vis
public = r vis -> LoggingFor r vis
forall u l. LiftLogging u l => u -> l
liftLogging r vis
forall (r :: * -> *) vis. VisibilitySym r vis => r vis
public
instance (MethodSym r vis smt md) => MethodSym (LoggingFor r) vis smt md where
docMain :: MS (LoggingFor r Body) -> MS (LoggingFor r md)
docMain = (MS (r Body) -> MS (r md))
-> MS (LoggingFor r Body) -> MS (LoggingFor r md)
forall u l. LiftLogging u l => u -> l
liftLogging MS (r Body) -> MS (r md)
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
MS (r Body) -> MS (r md)
docMain
function :: String
-> LoggingFor r vis
-> VS (LoggingFor r TypeData)
-> [MS (LoggingFor r ParamData)]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r md)
function = (String
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Body)
-> MS (r md))
-> String
-> LoggingFor r vis
-> VS (LoggingFor r TypeData)
-> [MS (LoggingFor r ParamData)]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r md)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Body)
-> MS (r md)
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
String
-> r vis
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Body)
-> MS (r md)
function
mainFunction :: MS (LoggingFor r Body) -> MS (LoggingFor r md)
mainFunction = (MS (r Body) -> MS (r md))
-> MS (LoggingFor r Body) -> MS (LoggingFor r md)
forall u l. LiftLogging u l => u -> l
liftLogging MS (r Body) -> MS (r md)
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
MS (r Body) -> MS (r md)
mainFunction
docFunc :: String
-> [String]
-> Maybe String
-> MS (LoggingFor r md)
-> MS (LoggingFor r md)
docFunc = (String -> [String] -> Maybe String -> MS (r md) -> MS (r md))
-> String
-> [String]
-> Maybe String
-> MS (LoggingFor r md)
-> MS (LoggingFor r md)
forall u l. LiftLogging u l => u -> l
liftLogging String -> [String] -> Maybe String -> MS (r md) -> MS (r md)
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
String -> [String] -> Maybe String -> MS (r md) -> MS (r md)
docFunc
inOutFunc :: String -> LoggingFor r vis -> InOutFunc (LoggingFor r) md
inOutFunc = (String -> r vis -> InOutFunc r md)
-> String -> LoggingFor r vis -> InOutFunc (LoggingFor r) md
forall u l. LiftLogging u l => u -> l
liftLogging String -> r vis -> InOutFunc r md
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
String -> r vis -> InOutFunc r md
inOutFunc
docInOutFunc :: String -> LoggingFor r vis -> DocInOutFunc (LoggingFor r) md
docInOutFunc = (String -> r vis -> DocInOutFunc r md)
-> String -> LoggingFor r vis -> DocInOutFunc (LoggingFor r) md
forall u l. LiftLogging u l => u -> l
liftLogging String -> r vis -> DocInOutFunc r md
forall (r :: * -> *) vis smt md.
MethodSym r vis smt md =>
String -> r vis -> DocInOutFunc r md
docInOutFunc
instance (NumericExpression r) => NumericExpression (LoggingFor r) where
#~ :: SValue (LoggingFor r) -> SValue (LoggingFor r)
(#~) = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#~)
#/^ :: SValue (LoggingFor r) -> SValue (LoggingFor r)
(#/^) = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#/^)
#| :: SValue (LoggingFor r) -> SValue (LoggingFor r)
(#|) = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
(#|)
#+ :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(#+) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#+)
#- :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(#-) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#-)
#* :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(#*) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#*)
#/ :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(#/) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#/)
#% :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(#%) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#%)
#^ :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
(#^) = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *).
NumericExpression r =>
SValue r -> SValue r -> SValue r
(#^)
log :: SValue (LoggingFor r) -> SValue (LoggingFor r)
log = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
log
ln :: SValue (LoggingFor r) -> SValue (LoggingFor r)
ln = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
ln
exp :: SValue (LoggingFor r) -> SValue (LoggingFor r)
exp = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
exp
sin :: SValue (LoggingFor r) -> SValue (LoggingFor r)
sin = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
sin
cos :: SValue (LoggingFor r) -> SValue (LoggingFor r)
cos = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
cos
tan :: SValue (LoggingFor r) -> SValue (LoggingFor r)
tan = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
tan
csc :: SValue (LoggingFor r) -> SValue (LoggingFor r)
csc = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
csc
sec :: SValue (LoggingFor r) -> SValue (LoggingFor r)
sec = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
sec
cot :: SValue (LoggingFor r) -> SValue (LoggingFor r)
cot = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
cot
arcsin :: SValue (LoggingFor r) -> SValue (LoggingFor r)
arcsin = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arcsin
arccos :: SValue (LoggingFor r) -> SValue (LoggingFor r)
arccos = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arccos
arctan :: SValue (LoggingFor r) -> SValue (LoggingFor r)
arctan = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
arctan
floor :: SValue (LoggingFor r) -> SValue (LoggingFor r)
floor = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
floor
ceil :: SValue (LoggingFor r) -> SValue (LoggingFor r)
ceil = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). NumericExpression r => SValue r -> SValue r
ceil
instance (Set r) => Set (LoggingFor r) where
contains :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
contains = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
contains
setAdd :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
setAdd = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setAdd
setRemove :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
setRemove = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setRemove
setUnion :: SValue (LoggingFor r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
setUnion = (SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r
forall (r :: * -> *). Set r => SValue r -> SValue r -> SValue r
setUnion
instance (UnRepr r contents) => UnRepr (LoggingFor r) contents where
unRepr :: LoggingFor r contents -> contents
unRepr = r contents -> contents
forall (repr :: * -> *) contents.
UnRepr repr contents =>
repr contents -> contents
unRepr (r contents -> contents)
-> (LoggingFor r contents -> r contents)
-> LoggingFor r contents
-> contents
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LoggingFor r contents -> r contents
forall (r :: * -> *) a. LoggingFor r a -> r a
unLC
instance (ValueExpression r) => ValueExpression (LoggingFor r) where
inlineIf :: SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
inlineIf = (SValue r -> SValue r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r -> SValue r -> SValue r
forall (r :: * -> *).
ValueExpression r =>
SValue r -> SValue r -> SValue r -> SValue r
inlineIf
funcAppMixedArgs :: MixedCall (LoggingFor r)
funcAppMixedArgs = MixedCall r -> MixedCall (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging MixedCall r
forall (r :: * -> *). ValueExpression r => MixedCall r
funcAppMixedArgs
extFuncAppMixedArgs :: String -> MixedCall (LoggingFor r)
extFuncAppMixedArgs = (String -> MixedCall r) -> String -> MixedCall (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MixedCall r
forall (r :: * -> *). ValueExpression r => String -> MixedCall r
extFuncAppMixedArgs
libFuncAppMixedArgs :: String -> MixedCall (LoggingFor r)
libFuncAppMixedArgs = (String -> MixedCall r) -> String -> MixedCall (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MixedCall r
forall (r :: * -> *). ValueExpression r => String -> MixedCall r
libFuncAppMixedArgs
lambda :: [VSBinder (LoggingFor r)]
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
lambda = ([VSBinder r] -> SValue r -> SValue r)
-> [VSBinder (LoggingFor r)]
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging [VSBinder r] -> SValue r -> SValue r
forall (r :: * -> *).
ValueExpression r =>
[VSBinder r] -> SValue r -> SValue r
lambda
notNull :: SValue (LoggingFor r) -> SValue (LoggingFor r)
notNull = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). ValueExpression r => SValue r -> SValue r
notNull
instance (VariableElim r) => VariableElim (LoggingFor r) where
variableName :: LoggingFor r Variable -> String
variableName = (r Variable -> String) -> LoggingFor r Variable -> String
forall u l. LiftLogging u l => u -> l
liftLogging r Variable -> String
forall (r :: * -> *). VariableElim r => r Variable -> String
variableName
variableType :: LoggingFor r Variable -> LoggingFor r TypeData
variableType = (r Variable -> r TypeData)
-> LoggingFor r Variable -> LoggingFor r TypeData
forall u l. LiftLogging u l => u -> l
liftLogging r Variable -> r TypeData
forall (r :: * -> *). VariableElim r => r Variable -> r TypeData
variableType
instance (VariableValue r) => VariableValue (LoggingFor r) where
valueOf :: SVariable (LoggingFor r) -> SValue (LoggingFor r)
valueOf = (SVariable r -> SValue r)
-> SVariable (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> SValue r
forall (r :: * -> *). VariableValue r => SVariable r -> SValue r
valueOf
instance (IndexTranslator r) => IndexTranslator (LoggingFor r) where
intToIndex :: SValue (LoggingFor r) -> SValue (LoggingFor r)
intToIndex = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). IndexTranslator r => SValue r -> SValue r
intToIndex
indexToInt :: SValue (LoggingFor r) -> SValue (LoggingFor r)
indexToInt = (SValue r -> SValue r)
-> SValue (LoggingFor r) -> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SValue r
forall (r :: * -> *). IndexTranslator r => SValue r -> SValue r
indexToInt
instance (NativeVector lang) => NativeVector (LoggingFor lang) where
vecScale :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
vecScale = (SValue lang -> SValue lang -> SValue lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging SValue lang -> SValue lang -> SValue lang
forall (r :: * -> *).
NativeVector r =>
SValue r -> SValue r -> SValue r
vecScale
vecAdd :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
vecAdd = (SValue lang -> SValue lang -> SValue lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging SValue lang -> SValue lang -> SValue lang
forall (r :: * -> *).
NativeVector r =>
SValue r -> SValue r -> SValue r
vecAdd
vecIndex :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
vecIndex = (SValue lang -> SValue lang -> SValue lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging SValue lang -> SValue lang -> SValue lang
forall (r :: * -> *).
NativeVector r =>
SValue r -> SValue r -> SValue r
vecIndex
vecDot :: SValue (LoggingFor lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
vecDot = (SValue lang -> SValue lang -> SValue lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
-> SValue (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging SValue lang -> SValue lang -> SValue lang
forall (r :: * -> *).
NativeVector r =>
SValue r -> SValue r -> SValue r
vecDot
vecMag :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
vecMag = (SValue lang -> SValue lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging SValue lang -> SValue lang
forall (r :: * -> *). NativeVector r => SValue r -> SValue r
vecMag
vecUnit :: SValue (LoggingFor lang) -> SValue (LoggingFor lang)
vecUnit = (SValue lang -> SValue lang)
-> SValue (LoggingFor lang) -> SValue (LoggingFor lang)
forall u l. LiftLogging u l => u -> l
liftLogging SValue lang -> SValue lang
forall (r :: * -> *). NativeVector r => SValue r -> SValue r
vecUnit
instance (P.ProcProg r vis smt md prg) => P.ProcProg (LoggingFor r) vis smt md prg
instance (P.ModuleSym r vis smt md) => P.ModuleSym (LoggingFor r) vis smt md where
buildModule :: String
-> [String] -> [MS (LoggingFor r md)] -> FS (LoggingFor r Module)
buildModule = (String -> [String] -> [MS (r md)] -> FS (r Module))
-> String
-> [String]
-> [MS (LoggingFor r md)]
-> FS (LoggingFor r Module)
forall u l. LiftLogging u l => u -> l
liftLogging String -> [String] -> [MS (r md)] -> FS (r Module)
forall (r :: * -> *) vis smt md.
ModuleSym r vis smt md =>
String -> [String] -> [MS (r md)] -> FS (r Module)
P.buildModule
instance (P.FileSym r vis smt md) => P.FileSym (LoggingFor r) vis smt md where
fileDoc :: FS (LoggingFor r Module) -> FS (LoggingFor r File)
fileDoc = (FS (r Module) -> FS (r File))
-> FS (LoggingFor r Module) -> FS (LoggingFor r File)
forall u l. LiftLogging u l => u -> l
liftLogging FS (r Module) -> FS (r File)
forall (r :: * -> *) vis smt md.
FileSym r vis smt md =>
FS (r Module) -> FS (r File)
P.fileDoc
docMod :: String
-> String
-> [String]
-> String
-> FS (LoggingFor r File)
-> FS (LoggingFor r File)
docMod = (String
-> String -> [String] -> String -> FS (r File) -> FS (r File))
-> String
-> String
-> [String]
-> String
-> FS (LoggingFor r File)
-> FS (LoggingFor r File)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String -> [String] -> String -> FS (r File) -> FS (r File)
forall (r :: * -> *) vis smt md.
FileSym r vis smt md =>
String
-> String -> [String] -> String -> FS (r File) -> FS (r File)
P.docMod
instance (P.ProgramSym r vis smt md prg) => P.ProgramSym (LoggingFor r) vis smt md prg where
prog :: String
-> String
-> [FS (LoggingFor r File)]
-> GSProgram (LoggingFor r) prg
prog = (String -> String -> [FS (r File)] -> GSProgram r prg)
-> String
-> String
-> [FS (LoggingFor r File)]
-> GSProgram (LoggingFor r) prg
forall u l. LiftLogging u l => u -> l
liftLogging String -> String -> [FS (r File)] -> GSProgram r prg
forall (r :: * -> *) vis smt md prg.
ProgramSym r vis smt md prg =>
String -> String -> [FS (r File)] -> GSProgram r prg
P.prog
instance (G.OOProg r vis smt md svr att prg) => G.OOProg (LoggingFor r) vis smt md svr att prg
instance (G.GetSet r) => G.GetSet (LoggingFor r) where
get :: SValue (LoggingFor r)
-> SVariable (LoggingFor r) -> SValue (LoggingFor r)
get = (SValue r -> SVariable r -> SValue r)
-> SValue (LoggingFor r)
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SVariable r -> SValue r
forall (r :: * -> *).
GetSet r =>
SValue r -> SVariable r -> SValue r
G.get
set :: SValue (LoggingFor r)
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
set = (SValue r -> SVariable r -> SValue r -> SValue r)
-> SValue (LoggingFor r)
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SVariable r -> SValue r -> SValue r
forall (r :: * -> *).
GetSet r =>
SValue r -> SVariable r -> SValue r -> SValue r
G.set
instance (G.InternalValueExp r) => G.InternalValueExp (LoggingFor r) where
objMethodCallMixedArgs' :: String
-> VS (LoggingFor r TypeData)
-> SValue (LoggingFor r)
-> [SValue (LoggingFor r)]
-> NamedArgs (LoggingFor r)
-> SValue (LoggingFor r)
objMethodCallMixedArgs' = (String
-> VS (r TypeData)
-> SValue r
-> [SValue r]
-> NamedArgs r
-> SValue r)
-> String
-> VS (LoggingFor r TypeData)
-> SValue (LoggingFor r)
-> [SValue (LoggingFor r)]
-> NamedArgs (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VS (r TypeData)
-> SValue r
-> [SValue r]
-> NamedArgs r
-> SValue r
forall (r :: * -> *).
InternalValueExp r =>
String
-> VS (r TypeData)
-> SValue r
-> [SValue r]
-> NamedArgs r
-> SValue r
G.objMethodCallMixedArgs'
classMethodCallMixedArgs' :: String
-> VS (LoggingFor r TypeData)
-> VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)]
-> NamedArgs (LoggingFor r)
-> SValue (LoggingFor r)
classMethodCallMixedArgs' = (String
-> VS (r TypeData)
-> VS (r TypeData)
-> [SValue r]
-> NamedArgs r
-> SValue r)
-> String
-> VS (LoggingFor r TypeData)
-> VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)]
-> NamedArgs (LoggingFor r)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> VS (r TypeData)
-> VS (r TypeData)
-> [SValue r]
-> NamedArgs r
-> SValue r
forall (r :: * -> *).
InternalValueExp r =>
String
-> VS (r TypeData)
-> VS (r TypeData)
-> [SValue r]
-> NamedArgs r
-> SValue r
G.classMethodCallMixedArgs'
instance (G.OOTypeSym r) => G.OOTypeSym (LoggingFor r) where
obj :: String -> VS (LoggingFor r TypeData)
obj = (String -> VS (r TypeData)) -> String -> VS (LoggingFor r TypeData)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VS (r TypeData)
forall (r :: * -> *). OOTypeSym r => String -> VS (r TypeData)
G.obj
instance (G.OOVariableSym r) => G.OOVariableSym (LoggingFor r) where
classVar :: String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
classVar = (String -> VS (r TypeData) -> SVariable r)
-> String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VS (r TypeData) -> SVariable r
forall (r :: * -> *).
OOVariableSym r =>
String -> VS (r TypeData) -> SVariable r
G.classVar
classConst :: String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
classConst = (String -> VS (r TypeData) -> SVariable r)
-> String -> VS (LoggingFor r TypeData) -> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VS (r TypeData) -> SVariable r
forall (r :: * -> *).
OOVariableSym r =>
String -> VS (r TypeData) -> SVariable r
G.classConst
classVarAccess :: VS (LoggingFor r TypeData)
-> SVariable (LoggingFor r) -> SVariable (LoggingFor r)
classVarAccess = (VS (r TypeData) -> SVariable r -> SVariable r)
-> VS (LoggingFor r TypeData)
-> SVariable (LoggingFor r)
-> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> SVariable r -> SVariable r
forall (r :: * -> *).
OOVariableSym r =>
VS (r TypeData) -> SVariable r -> SVariable r
G.classVarAccess
extClassVarAccess :: VS (LoggingFor r TypeData)
-> SVariable (LoggingFor r) -> SVariable (LoggingFor r)
extClassVarAccess = (VS (r TypeData) -> SVariable r -> SVariable r)
-> VS (LoggingFor r TypeData)
-> SVariable (LoggingFor r)
-> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r TypeData) -> SVariable r -> SVariable r
forall (r :: * -> *).
OOVariableSym r =>
VS (r TypeData) -> SVariable r -> SVariable r
G.extClassVarAccess
instanceVarAccess :: SValue (LoggingFor r)
-> SVariable (LoggingFor r) -> SVariable (LoggingFor r)
instanceVarAccess = (SValue r -> SVariable r -> SVariable r)
-> SValue (LoggingFor r)
-> SVariable (LoggingFor r)
-> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> SVariable r -> SVariable r
forall (r :: * -> *).
OOVariableSym r =>
SValue r -> SVariable r -> SVariable r
G.instanceVarAccess
instance (DeclStatement (LoggingFor r) smt, G.OODeclStatement r smt) =>
G.OODeclStatement (LoggingFor r) smt where
objDecDef :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
objDecDef = (SVariable r -> r ScopeData -> SValue r -> MS (r smt))
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> SValue (LoggingFor r)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> r ScopeData -> SValue r -> MS (r smt)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
SVariable r -> r ScopeData -> SValue r -> MS (r smt)
G.objDecDef
objDecNew :: SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> [SValue (LoggingFor r)]
-> MS (LoggingFor r smt)
objDecNew = (SVariable r -> r ScopeData -> [SValue r] -> MS (r smt))
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> [SValue (LoggingFor r)]
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
G.objDecNew
extObjDecNew :: String
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> [SValue (LoggingFor r)]
-> MS (LoggingFor r smt)
extObjDecNew = (String -> SVariable r -> r ScopeData -> [SValue r] -> MS (r smt))
-> String
-> SVariable (LoggingFor r)
-> LoggingFor r ScopeData
-> [SValue (LoggingFor r)]
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging String -> SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
forall (r :: * -> *) smt.
OODeclStatement r smt =>
String -> SVariable r -> r ScopeData -> [SValue r] -> MS (r smt)
G.extObjDecNew
instance (G.OOFuncAppStatement r smt) => G.OOFuncAppStatement (LoggingFor r) smt where
selfInOutCall :: InOutCall (LoggingFor r) smt
selfInOutCall = InOutCall r smt -> InOutCall (LoggingFor r) smt
forall u l. LiftLogging u l => u -> l
liftLogging InOutCall r smt
forall (r :: * -> *) smt.
OOFuncAppStatement r smt =>
InOutCall r smt
G.selfInOutCall
instance (G.OOValueSym r) => G.OOValueSym (LoggingFor r) where
instance (G.OOValueExpression r) => G.OOValueExpression (LoggingFor r) where
newObjMixedArgs :: MixedCtorCall (LoggingFor r)
newObjMixedArgs = MixedCtorCall r -> MixedCtorCall (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging MixedCtorCall r
forall (r :: * -> *). OOValueExpression r => MixedCtorCall r
G.newObjMixedArgs
extNewObjMixedArgs :: String -> MixedCtorCall (LoggingFor r)
extNewObjMixedArgs = (String -> MixedCtorCall r)
-> String -> MixedCtorCall (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MixedCtorCall r
forall (r :: * -> *).
OOValueExpression r =>
String -> MixedCtorCall r
G.extNewObjMixedArgs
libNewObjMixedArgs :: String -> MixedCtorCall (LoggingFor r)
libNewObjMixedArgs = (String -> MixedCtorCall r)
-> String -> MixedCtorCall (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging String -> MixedCtorCall r
forall (r :: * -> *).
OOValueExpression r =>
String -> MixedCtorCall r
G.libNewObjMixedArgs
instance (G.SelfSym r) => G.SelfSym (LoggingFor r) where
self :: SVariable (LoggingFor r)
self = SVariable r -> SVariable (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r
forall (r :: * -> *). SelfSym r => SVariable r
G.self
instance (G.OOVariableValue r) => G.OOVariableValue (LoggingFor r)
instance (G.OOFunctionSym r) => G.OOFunctionSym (LoggingFor r) where
func :: String
-> VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)]
-> VS (LoggingFor r FuncData)
func = (String -> VS (r TypeData) -> [SValue r] -> VS (r FuncData))
-> String
-> VS (LoggingFor r TypeData)
-> [SValue (LoggingFor r)]
-> VS (LoggingFor r FuncData)
forall u l. LiftLogging u l => u -> l
liftLogging String -> VS (r TypeData) -> [SValue r] -> VS (r FuncData)
forall (r :: * -> *).
OOFunctionSym r =>
String -> VS (r TypeData) -> [SValue r] -> VS (r FuncData)
G.func
objAccess :: SValue (LoggingFor r)
-> VS (LoggingFor r FuncData) -> SValue (LoggingFor r)
objAccess = (SValue r -> VS (r FuncData) -> SValue r)
-> SValue (LoggingFor r)
-> VS (LoggingFor r FuncData)
-> SValue (LoggingFor r)
forall u l. LiftLogging u l => u -> l
liftLogging SValue r -> VS (r FuncData) -> SValue r
forall (r :: * -> *).
OOFunctionSym r =>
SValue r -> VS (r FuncData) -> SValue r
G.objAccess
instance (G.ObserverPattern r smt) => G.ObserverPattern (LoggingFor r) smt where
notifyObservers :: VS (LoggingFor r FuncData)
-> VS (LoggingFor r TypeData) -> MS (LoggingFor r smt)
notifyObservers = (VS (r FuncData) -> VS (r TypeData) -> MS (r smt))
-> VS (LoggingFor r FuncData)
-> VS (LoggingFor r TypeData)
-> MS (LoggingFor r smt)
forall u l. LiftLogging u l => u -> l
liftLogging VS (r FuncData) -> VS (r TypeData) -> MS (r smt)
forall (r :: * -> *) smt.
ObserverPattern r smt =>
VS (r FuncData) -> VS (r TypeData) -> MS (r smt)
G.notifyObservers
instance (G.AttachmentSym r att) => G.AttachmentSym (LoggingFor r) att where
classLevel :: LoggingFor r att
classLevel = r att -> LoggingFor r att
forall u l. LiftLogging u l => u -> l
liftLogging r att
forall (r :: * -> *) att. AttachmentSym r att => r att
G.classLevel
instanceLevel :: LoggingFor r att
instanceLevel = r att -> LoggingFor r att
forall u l. LiftLogging u l => u -> l
liftLogging r att
forall (r :: * -> *) att. AttachmentSym r att => r att
G.instanceLevel
instance (G.OOMethodSym r vis smt md att) => G.OOMethodSym (LoggingFor r) vis smt md att where
method :: String
-> LoggingFor r vis
-> LoggingFor r att
-> VS (LoggingFor r TypeData)
-> [MS (LoggingFor r ParamData)]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r md)
method = (String
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Body)
-> MS (r md))
-> String
-> LoggingFor r vis
-> LoggingFor r att
-> VS (LoggingFor r TypeData)
-> [MS (LoggingFor r ParamData)]
-> MS (LoggingFor r Body)
-> MS (LoggingFor r md)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Body)
-> MS (r md)
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
String
-> r vis
-> r att
-> VS (r TypeData)
-> [MS (r ParamData)]
-> MS (r Body)
-> MS (r md)
G.method
getMethod :: SVariable (LoggingFor r) -> MS (LoggingFor r md)
getMethod = (SVariable r -> MS (r md))
-> SVariable (LoggingFor r) -> MS (LoggingFor r md)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> MS (r md)
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
SVariable r -> MS (r md)
G.getMethod
setMethod :: SVariable (LoggingFor r) -> MS (LoggingFor r md)
setMethod = (SVariable r -> MS (r md))
-> SVariable (LoggingFor r) -> MS (LoggingFor r md)
forall u l. LiftLogging u l => u -> l
liftLogging SVariable r -> MS (r md)
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
SVariable r -> MS (r md)
G.setMethod
constructor :: [MS (LoggingFor r ParamData)]
-> Initializers (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r md)
constructor = ([MS (r ParamData)] -> Initializers r -> MS (r Body) -> MS (r md))
-> [MS (LoggingFor r ParamData)]
-> Initializers (LoggingFor r)
-> MS (LoggingFor r Body)
-> MS (LoggingFor r md)
forall u l. LiftLogging u l => u -> l
liftLogging [MS (r ParamData)] -> Initializers r -> MS (r Body) -> MS (r md)
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
[MS (r ParamData)] -> Initializers r -> MS (r Body) -> MS (r md)
G.constructor
inOutMethod :: String
-> LoggingFor r vis
-> LoggingFor r att
-> InOutFunc (LoggingFor r) md
inOutMethod = (String -> r vis -> r att -> InOutFunc r md)
-> String
-> LoggingFor r vis
-> LoggingFor r att
-> InOutFunc (LoggingFor r) md
forall u l. LiftLogging u l => u -> l
liftLogging String -> r vis -> r att -> InOutFunc r md
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
String -> r vis -> r att -> InOutFunc r md
G.inOutMethod
docInOutMethod :: String
-> LoggingFor r vis
-> LoggingFor r att
-> DocInOutFunc (LoggingFor r) md
docInOutMethod = (String -> r vis -> r att -> DocInOutFunc r md)
-> String
-> LoggingFor r vis
-> LoggingFor r att
-> DocInOutFunc (LoggingFor r) md
forall u l. LiftLogging u l => u -> l
liftLogging String -> r vis -> r att -> DocInOutFunc r md
forall (r :: * -> *) vis smt md att.
OOMethodSym r vis smt md att =>
String -> r vis -> r att -> DocInOutFunc r md
G.docInOutMethod
instance (G.StateVarSym r vis svr att) => G.StateVarSym (LoggingFor r) vis svr att where
stateVar :: LoggingFor r vis
-> LoggingFor r att
-> SVariable (LoggingFor r)
-> CSStateVar (LoggingFor r) svr
stateVar = (r vis -> r att -> SVariable r -> CSStateVar r svr)
-> LoggingFor r vis
-> LoggingFor r att
-> SVariable (LoggingFor r)
-> CSStateVar (LoggingFor r) svr
forall u l. LiftLogging u l => u -> l
liftLogging r vis -> r att -> SVariable r -> CSStateVar r svr
forall (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> r att -> SVariable r -> CSStateVar r svr
G.stateVar
stateVarDef :: LoggingFor r vis
-> LoggingFor r att
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> CSStateVar (LoggingFor r) svr
stateVarDef = (r vis -> r att -> SVariable r -> SValue r -> CSStateVar r svr)
-> LoggingFor r vis
-> LoggingFor r att
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> CSStateVar (LoggingFor r) svr
forall u l. LiftLogging u l => u -> l
liftLogging r vis -> r att -> SVariable r -> SValue r -> CSStateVar r svr
forall (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> r att -> SVariable r -> SValue r -> CSStateVar r svr
G.stateVarDef
constVar :: LoggingFor r vis
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> CSStateVar (LoggingFor r) svr
constVar = (r vis -> SVariable r -> SValue r -> CSStateVar r svr)
-> LoggingFor r vis
-> SVariable (LoggingFor r)
-> SValue (LoggingFor r)
-> CSStateVar (LoggingFor r) svr
forall u l. LiftLogging u l => u -> l
liftLogging r vis -> SVariable r -> SValue r -> CSStateVar r svr
forall (r :: * -> *) vis svr att.
StateVarSym r vis svr att =>
r vis -> SVariable r -> SValue r -> CSStateVar r svr
G.constVar
instance (G.ClassSym r vis smt md svr att) => G.ClassSym (LoggingFor r) vis smt md svr att where
buildClass :: Maybe String
-> [CSStateVar (LoggingFor r) svr]
-> [MS (LoggingFor r md)]
-> [MS (LoggingFor r md)]
-> CS (LoggingFor r Body)
buildClass = (Maybe String
-> [CSStateVar r svr] -> [MS (r md)] -> [MS (r md)] -> CS (r Body))
-> Maybe String
-> [CSStateVar (LoggingFor r) svr]
-> [MS (LoggingFor r md)]
-> [MS (LoggingFor r md)]
-> CS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging Maybe String
-> [CSStateVar r svr] -> [MS (r md)] -> [MS (r md)] -> CS (r Body)
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
Maybe String
-> [CSStateVar r svr] -> [MS (r md)] -> [MS (r md)] -> CS (r Body)
G.buildClass
extraClass :: String
-> Maybe String
-> [CSStateVar (LoggingFor r) svr]
-> [MS (LoggingFor r md)]
-> [MS (LoggingFor r md)]
-> CS (LoggingFor r Body)
extraClass = (String
-> Maybe String
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Body))
-> String
-> Maybe String
-> [CSStateVar (LoggingFor r) svr]
-> [MS (LoggingFor r md)]
-> [MS (LoggingFor r md)]
-> CS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> Maybe String
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Body)
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
String
-> Maybe String
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Body)
G.extraClass
implementingClass :: String
-> [String]
-> [CSStateVar (LoggingFor r) svr]
-> [MS (LoggingFor r md)]
-> [MS (LoggingFor r md)]
-> CS (LoggingFor r Body)
implementingClass = (String
-> [String]
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Body))
-> String
-> [String]
-> [CSStateVar (LoggingFor r) svr]
-> [MS (LoggingFor r md)]
-> [MS (LoggingFor r md)]
-> CS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [String]
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Body)
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
String
-> [String]
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Body)
G.implementingClass
docClass :: String -> CS (LoggingFor r Body) -> CS (LoggingFor r Body)
docClass = (String -> CS (r Body) -> CS (r Body))
-> String -> CS (LoggingFor r Body) -> CS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging String -> CS (r Body) -> CS (r Body)
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
String -> CS (r Body) -> CS (r Body)
G.docClass
instance (G.ModuleSym r vis smt md svr att) => G.ModuleSym (LoggingFor r) vis smt md svr att where
buildModule :: String
-> [String]
-> [MS (LoggingFor r md)]
-> [CS (LoggingFor r Body)]
-> FS (LoggingFor r Module)
buildModule = (String
-> [String] -> [MS (r md)] -> [CS (r Body)] -> FS (r Module))
-> String
-> [String]
-> [MS (LoggingFor r md)]
-> [CS (LoggingFor r Body)]
-> FS (LoggingFor r Module)
forall u l. LiftLogging u l => u -> l
liftLogging String -> [String] -> [MS (r md)] -> [CS (r Body)] -> FS (r Module)
forall (r :: * -> *) vis smt md svr att.
ModuleSym r vis smt md svr att =>
String -> [String] -> [MS (r md)] -> [CS (r Body)] -> FS (r Module)
G.buildModule
instance (G.FileSym r vis smt md svr att) => G.FileSym (LoggingFor r) vis smt md svr att where
fileDoc :: FS (LoggingFor r Module) -> FS (LoggingFor r File)
fileDoc = (FS (r Module) -> FS (r File))
-> FS (LoggingFor r Module) -> FS (LoggingFor r File)
forall u l. LiftLogging u l => u -> l
liftLogging FS (r Module) -> FS (r File)
forall (r :: * -> *) vis smt md svr att.
FileSym r vis smt md svr att =>
FS (r Module) -> FS (r File)
G.fileDoc
docMod :: String
-> String
-> [String]
-> String
-> FS (LoggingFor r File)
-> FS (LoggingFor r File)
docMod = (String
-> String -> [String] -> String -> FS (r File) -> FS (r File))
-> String
-> String
-> [String]
-> String
-> FS (LoggingFor r File)
-> FS (LoggingFor r File)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> String -> [String] -> String -> FS (r File) -> FS (r File)
forall (r :: * -> *) vis smt md svr att.
FileSym r vis smt md svr att =>
String
-> String -> [String] -> String -> FS (r File) -> FS (r File)
G.docMod
instance (G.ProgramSym r vis smt md svr att prg) => G.ProgramSym (LoggingFor r) vis smt md svr att prg where
prog :: String
-> String
-> [FS (LoggingFor r File)]
-> GSProgram (LoggingFor r) prg
prog = (String -> String -> [FS (r File)] -> GSProgram r prg)
-> String
-> String
-> [FS (LoggingFor r File)]
-> GSProgram (LoggingFor r) prg
forall u l. LiftLogging u l => u -> l
liftLogging String -> String -> [FS (r File)] -> GSProgram r prg
forall (r :: * -> *) vis smt md svr att prg.
ProgramSym r vis smt md svr att prg =>
String -> String -> [FS (r File)] -> GSProgram r prg
G.prog
instance (G.StrategyPattern r smt) => G.StrategyPattern (LoggingFor r) smt where
runStrategy :: String
-> [(String, MS (LoggingFor r Body))]
-> Maybe (SValue (LoggingFor r))
-> Maybe (SVariable (LoggingFor r))
-> MS (LoggingFor r Body)
runStrategy = (String
-> [(String, MS (r Body))]
-> Maybe (SValue r)
-> Maybe (SVariable r)
-> MS (r Body))
-> String
-> [(String, MS (LoggingFor r Body))]
-> Maybe (SValue (LoggingFor r))
-> Maybe (SVariable (LoggingFor r))
-> MS (LoggingFor r Body)
forall u l. LiftLogging u l => u -> l
liftLogging String
-> [(String, MS (r Body))]
-> Maybe (SValue r)
-> Maybe (SVariable r)
-> MS (r Body)
forall (r :: * -> *) smt.
StrategyPattern r smt =>
String
-> [(String, MS (r Body))]
-> Maybe (SValue r)
-> Maybe (SVariable r)
-> MS (r Body)
G.runStrategy