Haskell から Ruby を呼ぶ

System.Win32.Com の使い方が分らないので「趣味的にっき / ] iconvを外部プロセスとして呼び出して漢字コードを変換する」を参考に RubyからCOMを呼んで、そのRubyHaskell から呼ぶことにしました。


module Main (main) where

import System
import System.IO
import System.Process (runInteractiveProcess)

processRuby :: String -> IO String
processRuby sql = do
(input, output, _, _) <- runInteractiveProcess
"ruby" ["mdb_sql.rb", sql]
Nothing Nothing
-- set text mode for windows.
hSetBinaryMode input False
hSetBinaryMode output False
hPutStr input sql
hClose input
hGetContents output

main :: IO ()
main = do
args <- getArgs
putStr =<< processRuby (head args)