Bigloo:提示函数参数的类型



假设我有一个名为foo的过程,它返回一个::float,用于接受以下参数:

  1. 采用两个::float参数的过程
  2. ::float
  3. 另一个::float

如何在代码的module部分为该函数编写export?到目前为止,我有这个:

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

'something应该替换为什么?

这个问题类似于前面的bigloo问题。目前还没有优雅的方法来做到这一点。您应该使用::过程作为第一个参数的类型。这并不是一个巨大的损失,因为在许多情况下,bigloo的类型推断和流分析会发现您试图用类型注释捕获的错误。

我的猜测是,在没有实际测试的情况下。

使用type定义一个类型,例如fun-of-two-floats

文档中的示例是:

(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-外部类型

相关内容

  • 没有找到相关文章

最新更新