{-# 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 { outDir = Nothing } -- Don't collide with string.h (case-insensitive on Mac) cmodule :: Module cmodule = package "String_ex" $ do incl printf incl test