2017-04-04 1 views
0

Frames library에는 CSV 파일을 기반으로 레코드 유형을 생성하는 readTable 함수가 있습니다.템플릿 하스켈을 사용하여 FFI 통화 생성

foreign import ccall unsafe "// c code" c_foo :: Int -> IO()과 같은 전화를 생성 할 수 있습니까?

나는 [d| ... |][t| ... |] 쿼지백을 사용하여이를 수행하려고 시도했지만 두 가지 모두에서 파서 오류가 발생합니다.

+5

가능합니다. '[d | foreign import ccall unsafe "malloc"c_malloc :: Int -> IO() |]', 예를 들어 작동합니다. FFI [여기] (https://wiki.haskell.org/Foreign_Function_Interface#Inline_FFI_calls)가있는 템플릿 하스켈의 몇 가지 예가 있습니다. 또한 이것은 정확히 [inline-c] (https://hackage.haskell.org/package/inline-c)와 [inline-java] (https://hackage.haskell.org/package/inline-c) 자바) 의존합니다. – Alec

+0

@Alec이 대답을 할 수 있도록 받아 들일 수 있습니까? :) –

답변

1

예 가능합니다. 표시되는 오류 메시지는 "// c code"이 "조작 된 엔터티 문자열"이기 때문입니다. 아무것도 더 제정신, 당신은 인종에 떨어져 있습니다

ghci> :set -XTemplateHaskell 
ghci> ffi = [d| foreign import ccall unsafe "foo" c_foo :: Int -> IO() |] 

Here 당신에 대해 물어 정확히 꽤 많은 작업을 수행 한 예이다. inline-cinline-java 패키지는 이런 종류의 패키지에 의존합니다.

+0

"// c code"는 내가 여기에 쓴 자리 표시 자일뿐입니다. 어쨌든, 정말 도움이 된 답변을 주셔서 감사합니다. :) –

관련 문제