mirror of
https://github.com/github/semantic.git
synced 2024-12-22 22:31:36 +03:00
Add require function that uses a Linker effect
This commit is contained in:
parent
159cfae2d6
commit
d1bedfb793
@ -4,6 +4,8 @@ module Data.Abstract.Eval3
|
|||||||
( Evaluatable(..)
|
( Evaluatable(..)
|
||||||
, EnvironmentFor
|
, EnvironmentFor
|
||||||
, step
|
, step
|
||||||
|
, require
|
||||||
|
, Linker
|
||||||
, MonadGC(..)
|
, MonadGC(..)
|
||||||
, MonadFail(..)
|
, MonadFail(..)
|
||||||
, Recursive(..)
|
, Recursive(..)
|
||||||
@ -19,6 +21,8 @@ import Control.Monad.Effect.Fail
|
|||||||
import Data.Abstract.Environment
|
import Data.Abstract.Environment
|
||||||
import Data.Abstract.FreeVariables
|
import Data.Abstract.FreeVariables
|
||||||
import Data.Abstract.Value
|
import Data.Abstract.Value
|
||||||
|
import Data.Abstract.Linker
|
||||||
|
import Data.Semigroup
|
||||||
import Data.Functor.Classes
|
import Data.Functor.Classes
|
||||||
import Data.Proxy
|
import Data.Proxy
|
||||||
import Data.Term
|
import Data.Term
|
||||||
@ -29,6 +33,11 @@ import Data.Union (Apply)
|
|||||||
import qualified Data.Union as U
|
import qualified Data.Union as U
|
||||||
|
|
||||||
|
|
||||||
|
require :: Members '[Fail, Reader (Linker v)] es => FilePath -> Eff es v
|
||||||
|
require name = do
|
||||||
|
linker <- ask
|
||||||
|
maybe (fail ("cannot find " <> show name)) pure (linkerLookup name linker)
|
||||||
|
|
||||||
-- a local and global environment binding variable names to addresses.
|
-- a local and global environment binding variable names to addresses.
|
||||||
-- class EvalEnv v m where
|
-- class EvalEnv v m where
|
||||||
-- askEnv :: m (Environment (LocationFor v) v)
|
-- askEnv :: m (Environment (LocationFor v) v)
|
||||||
|
Loading…
Reference in New Issue
Block a user