Phiên bản ngắn, với tất cả sự hiểu biết của tôi: Tính đến tháng 10 năm 2015:
- Bạn có thể tạo một thư viện Idris, nhưng không phải là một .a hoặc .so.
- Bạn có thể gọi vào mã C từ Idris, nhưng bạn không thể gọi vào mã Idris từ C.
Idris có thể biên dịch một module như thư viện, nhưng nó được biên dịch vào một tập tin IBC để liên kết với khác Mã Idris, không phải là tệp đối tượng .o để liên kết với mã C.
FRI của Idris được dự định sẽ được sử dụng để gọi vào C, không gọi vào Idris từ C. Tính đến tháng 10 năm 2015, work is underway để bật chức năng Idris tự động đến C dưới dạng con trỏ hàm C để bật sử dụng API C dựa trên cuộc gọi .
Ví dụ
Trong Foo.ipkg:
package Foo
modules = Foo
Trong Foo.idr:
module Main
foo : Int -> Int
foo i = i + 1
xây dựng:
> ls
Foo.idr Foo.ipkg
> idris --build Foo.ipkg
Type checking ./Foo.idr
> ls
00Foo-idx.ibc Foo.ibc Foo.idr Foo.ipkg
Bạn có thể thấy tòa nhà có các thư viện tạo hai tệp .ibc. Nếu bạn muốn xây dựng một tệp thi hành thay vào đó, bạn sẽ thêm các dòng main = …
và executable = …
vào tệp .ipkg.
Nguồn
2015-10-17 17:21:23