我想做的就是将一个纯文本字符串从Haskell传递到C。然而,它说[Char]是不可接受的返回类型。我找不到任何地方说明为什么他们认为它不可接受,也不知道什么样的返回类型是可接受的。
我试图制作一个非常简单的操作系统镜像,可以在QEMU中启动。
有人知道如何做吗?谢谢。
{-# LANGUAGE ForeignFunctionInterface #-}
module Hello where
import Foreign
import Foreign.C.String
import Foreign.C.Types
hello :: String -> (CString -> IO a) -> IO a
hello = "Hello, world!"
foreign export ccall hello :: String -> (CString -> IO a) -> IO a
hello
是一个字符串字面量,但你给它了一个函数类型。而且String
仍然出现在导出实体的类型中。你可能需要先阅读一些关于 Haskell 外部函数接口的介绍。 - kosmikus