{-# LANGUAGE TypeSynonymInstances #-}
module CSPM.Evaluator.Module (
    bindModules, bindModule,
) 
where

import Control.Monad

import CSPM.DataStructures.Names
import CSPM.DataStructures.Syntax
import CSPM.Evaluator.DeclBind
import CSPM.Evaluator.Monad
import CSPM.Evaluator.Values
import Util.Annotated

bindModules :: [TCModule] -> [(Name, EvaluationMonad Value)]
bindModules ms = concatMap bindModule ms

bindModule :: TCModule -> [(Name, EvaluationMonad Value)]
bindModule an = case unAnnotate an of
    GlobalModule ds -> bindDecls ds