我正在编写Haskell绑定到某个C项目,并且有一个类型为
的函数void foo(char *);
问题是foo
检查此指针是否为NULL
值,并执行与正常行为不同的操作。在我的Haskell中,此函数的源包装器具有类型foo :: String -> IO ()
并在其中使用newCString
来封送它的参数。
我想知道如何让用户能力通过NULL
?我一直期待newCString ""
自0
以来"" /= "\0"
给我NULL
,但事实并非如此。
我现在看到的唯一方法是使用“”作为用户想要{{1}}的指标,但这似乎是黑客的。我期待这个问题很常见,但没有在SO上找到问题。
答案 0 :(得分:4)
您可以将功能更改为
foo :: Maybe String -> IO ()
然后Nothing
向您的C函数发送nullPtr
。