----------------------------------------------------------------------------- -- -- Module : Language.PureScript.CodeGen.Externs -- Copyright : (c) Phil Freeman 2013 -- License : MIT -- -- Maintainer : Phil Freeman -- Stability : experimental -- Portability : -- -- | -- ----------------------------------------------------------------------------- module Language.PureScript.CodeGen.Externs ( externToPs ) where import Data.List (intercalate) import qualified Data.Map as M import Language.PureScript.Declarations import Language.PureScript.TypeChecker.Monad import Language.PureScript.Pretty externToPs :: Environment -> Declaration -> Maybe String externToPs env (ValueDeclaration name _) = do (ty, _) <- M.lookup name $ names env return $ "extern " ++ show name ++ " :: " ++ prettyPrintPolyType ty externToPs env (ExternDeclaration name ty) = return $ "extern " ++ show name ++ " :: " ++ prettyPrintPolyType ty externToPs env (ExternDataDeclaration name kind) = return $ "extern data " ++ name ++ " :: " ++ prettyPrintKind kind externToPs env (TypeSynonymDeclaration name args ty) = return $ "type " ++ name ++ " " ++ unwords args ++ " = " ++ prettyPrintType ty externToPs _ _ = Nothing