{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} module String where import Ivory.Language import Ivory.Compile.C.CmdlineFrontend printf :: Def ('[IString] :-> Sint32) printf = importProc "printf" "stdio.h" printf2 :: Def ('[IString,Sint32] :-> Sint32) printf2 = importProc "printf" "stdio.h" test :: Def ('[] :-> ()) test = proc "test" $ body $ do call_ printf "Hello, world\n" call_ printf2 "howdy, %i \n" 3 retVoid runString :: IO () runString = runCompiler [cmodule] initialOpts { stdOut = True } cmodule :: Module cmodule = package "String" $ do incl printf incl test