-- This is written in Haskell. module Main where { import Foreign; foreign export dynamic makeCallback :: IO () -> IO (Ptr ()); foreign import callCallback :: Ptr () -> IO (); haskellFunction :: IO (); haskellFunction = do { putStrLn "Haskell: haskellFunction"; }; main :: IO (); main = do { putStrLn "Haskell: making callback"; callback <- makeCallback haskellFunction; putStrLn "Haskell: calling callback"; callCallback callback; putStrLn "Haskell: done"; }; }