小编gua*_*aqe的帖子

Haskell - FFI和指针

我正在使用FFI以便在C中使用一个带有结构并返回相同结构的函数.我看到的引用说我必须使用指向这些结构的指针才能将它导入Haskell.所以,例如.

data Bar = Bar { a :: Int, b :: Int }
type BarPtr = Ptr (Bar)

foreign import ccall "static foo.h foo"
    f_foo :: BarPtr -> BarPtr
Run Code Online (Sandbox Code Playgroud)

现在我遇到了必须能够使用该功能的问题.我看到的引用有类型BarPtr - > IO()的函数并且与之一起使用,它具有签名Storable a => a - >(Ptr a - > IO b) - > IO b,这是正常的,因为它们调用了主要功能.

但是,我想将这个函数包装在一个库中,得到一个没有IO的Bar - > Bar类型的函数,是否可以不使用unsafePerformIO?程序是什么?

haskell ffi

4
推荐指数
1
解决办法
469
查看次数

Idris - 在函数内部使用隐式变量

我们如何在函数内部使用隐式变量?减少到最简单的情况,是否有可能:

dim : Vect n a -> Nat
dim vec = n
Run Code Online (Sandbox Code Playgroud)

没有得到错误:

When elaborating right hand side of rep:
No such variable n
Run Code Online (Sandbox Code Playgroud)

有没有办法从里面获取价值?或者它与n内部要求相同sin n

在这种情况下,是否有可能证明这Vect是一个"双射"并从那里恢复变量?

idris

3
推荐指数
1
解决办法
269
查看次数

标签 统计

ffi ×1

haskell ×1

idris ×1