git.iko.soy/rowtype-yoga/purescript-native
on f98236e help sign in
36 lines 1.3 kB history raw
1-----------------------------------------------------------------------------
2--
3-- Module : PureScript.CodeGen.Externs
4-- Copyright : (c) Phil Freeman 2013
5-- License : MIT
6--
7-- Maintainer : Phil Freeman <paf31@cantab.net>
8-- Stability : experimental
9-- Portability :
10--
11-- |
12--
13-----------------------------------------------------------------------------
15module PureScript.CodeGen.Externs (
16 externToPs
17) where
19import Data.List (intercalate)
20import qualified Data.Map as M
21import PureScript.Declarations
22import PureScript.TypeChecker.Monad
23import PureScript.CodeGen.Pretty.Types
24import PureScript.CodeGen.Pretty.Kinds
26externToPs :: Environment -> Declaration -> Maybe String
27externToPs env (ValueDeclaration name _) = do
28 (ty, _) <- M.lookup name $ names env
29 return $ "extern " ++ show name ++ " :: " ++ prettyPrintPolyType ty
30externToPs env (ExternDeclaration name ty) =
31 return $ "extern " ++ show name ++ " :: " ++ prettyPrintPolyType ty
32externToPs env (ExternDataDeclaration name kind) =
33 return $ "extern data " ++ name ++ " :: " ++ prettyPrintKind kind
34externToPs env (TypeSynonymDeclaration name args ty) =
35 return $ "type " ++ name ++ " " ++ unwords args ++ " = " ++ prettyPrintType ty
36externToPs _ _ = Nothing