Bigloo: подсказка типа для аргумента функции

Предположим, у меня есть процедура под названием foo, который возвращает ::float который должен принимать следующие аргументы:

  1. Процедура с двумя ::float аргументы.
  2. ::float
  3. Другая ::float

Как бы я написал export для этой функции в module часть кода? У меня есть это до сих пор:

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

Что должно 'something заменить здесь?

2 ответа

Решение

Этот вопрос похож на предыдущий вопрос Bigloo. В настоящее время нет элегантного способа сделать это. Вы должны использовать:: процедуру в качестве типа первого аргумента. Это не большая потеря, потому что - во многих случаях - вывод типа 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

Другие вопросы по тегам