1
1
mirror of https://github.com/github/semantic.git synced 2025-01-02 04:10:29 +03:00

add documentation

This commit is contained in:
Charlie Somerville 2018-05-16 13:00:39 -07:00
parent fbdef618ec
commit 190665ec14
2 changed files with 7 additions and 0 deletions

View File

@ -43,10 +43,15 @@ newtype Evaluator location value effects a = Evaluator { runEvaluator :: Eff eff
deriving instance Member NonDet effects => Alternative (Evaluator location value effects)
-- | 'ValueRef' is the type subterms evaluate to and can represent either values directly ('Rval'), or references to values (lvals - such as local variables or object members)
data ValueRef value where
-- Represents a value:
Rval :: value -> ValueRef value
-- Represents a local variable. No environment is attached - it's assumed that LvalLocal will be evaluated in the same scope it was constructed:
LvalLocal :: Name -> ValueRef value
-- Represents an object member:
LvalMember :: value -> Name -> ValueRef value
deriving (Eq, Ord, Show)
-- Effects

View File

@ -138,6 +138,7 @@ deriving instance Show (Unspecialized a b)
instance Show1 (Unspecialized a) where
liftShowsPrec _ _ = showsPrec
-- | Evaluates a 'Value' returning the referenced value
value :: ( Addressable location effects
, AbstractValue location value effects
, Members '[ Reader (Environment location value)
@ -154,6 +155,7 @@ value (LvalLocal var) = variable var
value (LvalMember obj prop) = evaluateInScopedEnv (pure obj) (variable prop)
value (Rval val) = pure val
-- | Evaluates a 'Subterm' to its rval
subtermValue :: ( Addressable location effects
, AbstractValue location value effects
, Members '[ Reader (Environment location value)