Я пытаюсь вызвать Haskell из C, используя Foreign.C.Types
в Haskell, но он продолжает показывать эту ошибку в компиляторе:
* Unacceptable argument type in foreign declaration:
`(CInt, CInt)' cannot be marshalled in a foreign call
* When checking declaration:
foreign export ccall "func_hs" func_hs :: (CInt, CInt) -> CInt
|
15 | foreign export ccall func_hs :: (CInt, CInt) -> CInt
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Точный код, скомпилированный GHCi версии 8.6.3:
{-# LANGUAGE ForeignFunctionInterface #-}
module Func where
import Foreign.C.Types
verify_hp :: (CInt, CInt) -> CInt
verify_hp (hp, maxHp) = if hp < maxHp then hp + 10 else maxHp
func_hs :: (CInt, CInt) -> CInt
func_hs (hp, maxHp) = if verify_hp(hp,maxHp) == hp + 10 && hp < maxHp then hp + 10 else maxHp
foreign export ccall func_hs :: (CInt, CInt) -> CInt
Почему это происходит и как я могу это исправить?