git.iko.soy/rowtype-yoga/purescript-native
on 73a773e help sign in
33 lines 1.1 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
25externToPs :: Environment -> Declaration -> Maybe String
26externToPs env (ValueDeclaration name _) = do
27 (ty, _) <- M.lookup name $ names env
28 return $ "extern " ++ show name ++ " :: " ++ prettyPrintPolyType ty
29externToPs env (ExternDeclaration name ty) =
30 return $ "extern " ++ show name ++ " :: " ++ prettyPrintPolyType ty
31externToPs env (TypeSynonymDeclaration name args ty) =
32 return $ "type " ++ name ++ " " ++ intercalate " " args ++ " = " ++ prettyPrintType ty
33externToPs _ _ = Nothing