Frames library에는 CSV 파일을 기반으로 레코드 유형을 생성하는 readTable
함수가 있습니다.템플릿 하스켈을 사용하여 FFI 통화 생성
foreign import ccall unsafe "// c code" c_foo :: Int -> IO()
과 같은 전화를 생성 할 수 있습니까?
나는 [d| ... |]
과 [t| ... |]
쿼지백을 사용하여이를 수행하려고 시도했지만 두 가지 모두에서 파서 오류가 발생합니다.
Frames library에는 CSV 파일을 기반으로 레코드 유형을 생성하는 readTable
함수가 있습니다.템플릿 하스켈을 사용하여 FFI 통화 생성
foreign import ccall unsafe "// c code" c_foo :: Int -> IO()
과 같은 전화를 생성 할 수 있습니까?
나는 [d| ... |]
과 [t| ... |]
쿼지백을 사용하여이를 수행하려고 시도했지만 두 가지 모두에서 파서 오류가 발생합니다.
예 가능합니다. 표시되는 오류 메시지는 "// c code"
이 "조작 된 엔터티 문자열"이기 때문입니다. 아무것도 더 제정신, 당신은 인종에 떨어져 있습니다
ghci> :set -XTemplateHaskell
ghci> ffi = [d| foreign import ccall unsafe "foo" c_foo :: Int -> IO() |]
Here 당신에 대해 물어 정확히 꽤 많은 작업을 수행 한 예이다. inline-c과 inline-java 패키지는 이런 종류의 패키지에 의존합니다.
"// c code"는 내가 여기에 쓴 자리 표시 자일뿐입니다. 어쨌든, 정말 도움이 된 답변을 주셔서 감사합니다. :) –
가능합니다. '[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
@Alec이 대답을 할 수 있도록 받아 들일 수 있습니까? :) –