假设我有一个名为 的过程foo
,它返回 a::float
意味着采用以下参数:
- 一个带有两个
::float
参数的过程。 - 一个
::float
- 其他
::float
我将如何在代码部分中export
为该函数编写一个?module
到目前为止我有这个:
(module bar
(export (foo::float 'something ::float ::float)))
这里应该'something
换什么?
假设我有一个名为 的过程foo
,它返回 a::float
意味着采用以下参数:
::float
参数的过程。::float
::float
我将如何在代码部分中export
为该函数编写一个?module
到目前为止我有这个:
(module bar
(export (foo::float 'something ::float ::float)))
这里应该'something
换什么?
这个问题类似于之前的 bigloo 问题。目前没有优雅的方法可以做到这一点。您应该使用 ::procedure 作为第一个参数的类型。这并没有太大的损失,因为在许多情况下,bigloo 的类型推断和流分析会发现您试图通过类型注释捕获的错误。
我的猜测是没有实际测试。
定义一个类型,比如说,fun-of-two-floats
使用type
.
文档中的示例是:
(module foo
(extern
(type *string->double
(function double (string))
"double (*)(char *)")
(macro cv::*string->double "convert")))
(print (*string->double-call cv "3.14"))
所以我的猜测是这会起作用:
(type fun-of-two-floats
(function float (float float)))
(module bar
(export (foo::float fun-of-two-floats ::float ::float)))
文档在这里:http ://www-sop.inria.fr/mimosa/fp/Bigloo/doc/bigloo-28.html#Defining-an-extern-type