Bigloo:类型提示函数参数
Bigloo: Type-hinting a function argument
假设我有一个名为 foo
的过程,其中 returns 一个 ::float
旨在采用以下参数:
- 采用两个
::float
个参数的过程。
- 一个
::float
- 另一个
::float
如何在代码的 module
部分为该函数编写 export
?到目前为止我有这个:
(module bar
(export (foo::float 'something ::float ::float)))
这里'something
应该换成什么?
这里没有实际测试是我的猜测。
定义一个类型,例如,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
此题与a previous bigloo question相似。目前没有优雅的方法来做到这一点。您应该使用 ::procedure 作为第一个参数的类型。这并不是什么重大损失,因为 - 在许多情况下 - bigloo 的类型推断和流分析会发现你试图用类型注释捕获的错误。
假设我有一个名为 foo
的过程,其中 returns 一个 ::float
旨在采用以下参数:
- 采用两个
::float
个参数的过程。 - 一个
::float
- 另一个
::float
如何在代码的 module
部分为该函数编写 export
?到目前为止我有这个:
(module bar
(export (foo::float 'something ::float ::float)))
这里'something
应该换成什么?
这里没有实际测试是我的猜测。
定义一个类型,例如,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
此题与a previous bigloo question相似。目前没有优雅的方法来做到这一点。您应该使用 ::procedure 作为第一个参数的类型。这并不是什么重大损失,因为 - 在许多情况下 - bigloo 的类型推断和流分析会发现你试图用类型注释捕获的错误。