有没有办法生成库而不是使用可执行文件idris?如果我尝试编译没有a main,我得到这样的错误:
main:0:0:When elaborating an application of function run__IO:
No such variable Main.main
Run Code Online (Sandbox Code Playgroud)
如果我可以生成一个库,那么有没有办法从C代码调用它?我已经查看了生成的C代码,但它看起来并不打算在外部调用.
据我所知,简短版本:截至 2015 年 10 月:
\n\nIdris 可以将模块编译为库,但它被编译为 IBC 文件以与其他 Idris 代码链接,而不是编译为 .o 目标文件以与 C 代码链接。
\n\nIdris 的 C FFI 旨在用于调用 C,而不是从 C 调用 Idris。截至 2015 年 10 月,我们正在努力将 Idris 函数作为 C 函数指针出售给 C,以便能够使用基于回调的 C蜜蜂。
\n\n在 Foo.ipkg 中:
\n\npackage Foo\n\nmodules = Foo\nRun Code Online (Sandbox Code Playgroud)\n\n在 Foo.idr 中:
\n\nmodule Main\n\nfoo : Int -> Int\nfoo i = i + 1\nRun Code Online (Sandbox Code Playgroud)\n\n建筑:
\n\n> ls\nFoo.idr Foo.ipkg\n> idris --build Foo.ipkg\nType checking ./Foo.idr\n> ls\n00Foo-idx.ibc Foo.ibc Foo.idr Foo.ipkg\nRun Code Online (Sandbox Code Playgroud)\n\n您可以看到构建库如何生成两个 .ibc 文件。如果您想构建可执行文件,则可以将main = \xe2\x80\xa6和 行添加executable = \xe2\x80\xa6到 .ipkg 文件中。