{-# LANGUAGE ScopedTypeVariables #-} module Ivory.Language.Const where import Ivory.Language.Proxy import Ivory.Language.Type import qualified Ivory.Language.Syntax as AST -- Extern constants ------------------------------------------------------------ -- | Import an externally defined constant by providing a global name. extern :: forall t. IvoryExpr t => AST.Sym -> String -> t extern sym file = wrapExpr $ AST.ExpExtern $ AST.Extern { AST.externSym = sym , AST.externFile = file , AST.externType = ivoryType (Proxy :: Proxy t) }