Bigloo:类型提示函数参数

时间:2015-06-06 02:03:56

标签: function scheme type-hinting bigloo

假设我有一个名为foo的过程,它返回一个::float,它意味着采用以下参数:

  1. 一个带有两个::float参数的过程。
  2. A ::float
  3. 另一个::float
  4. 如何在代码的export部分为该函数编写module?到目前为止我有这个:

    (module bar
        (export (foo::float 'something ::float ::float)))
    

    这里应该'something取代什么?

2 个答案:

答案 0 :(得分:2)

此问题与a previous bigloo question类似。目前没有优雅的方法来做到这一点。您应该使用:: procedure作为第一个参数的类型。这不是戏剧性的损失,因为 - 在很多情况下 - bigloo的类型推断和流分析会发现你试图用类型注释捕获的错误。

答案 1 :(得分:0)

没有实际测试,这是我的猜测。

使用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