Function Bigloo:暗示函数参数的类型

Function Bigloo:暗示函数参数的类型,function,scheme,type-hinting,bigloo,Function,Scheme,Type Hinting,Bigloo,假设我有一个名为foo的过程,该过程返回一个::float,用于接受以下参数: 包含两个:float参数的过程 A::float 另一个::float 如何在代码的模块部分为该函数编写导出?到目前为止,我有: (module bar (export (foo::float 'something ::float ::float))) 什么东西应该被这里取代呢?我猜,没有在这里进行实际测试 使用type定义一个类型,比如说,fun of two float 文档中的示例是: (module

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

  • 包含两个
    :float
    参数的过程
  • A
    ::float
  • 另一个
    ::float
  • 如何在代码的
    模块
    部分为该函数编写
    导出
    ?到目前为止,我有:

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

    什么东西应该被这里取代呢?

    我猜,没有在这里进行实际测试

    使用
    type
    定义一个类型,比如说,
    fun of two float

    文档中的示例是:

    (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)))
    

    文档在这里:

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

    请注意,类型定义用于外部类型(即C,而不是Scheme)。好的。我的回答应该被忽略。