하스켈에서 C 함수 호출하기
Posted on June 2, 2016
by 주형
하스켈에서 간단하게 c 함수를 호출할 수 있습니다. 다음과 같이 C 함수에 대한 타입을 정의해주면 바로 호출할 수 있습니다.
{-# LANGUAGE ForeignFunctionInterface #-}
module Main where
import Foreign.C.String
import ccall "printf" printf :: CString -> IO ()
foreign
main :: IO ()
= do
main <- newCString "Hello c printf\n"
cstr printf cstr
특정 헤더 파일에 있는 함수를 쓰는 경우에는 함수 앞에 헤더파일을 명시해주면 됩니다.
{-# LANGUAGE ForeignFunctionInterface #-}
module Main where
import Foreign.C.Types
import ccall "math.h exp" c_exp :: CDouble -> CDouble
foreign
main :: IO ()
= do
main putStrLn $ show (c_exp 1)
putStrLn $ show (c_exp 2)
다음 글에서 C함수의 포인터를 하스켈에서 다루는 법, C의 structure 를 다루는 법 등을 다뤄보겠습니다.