Bigloo: подсказка типа для аргумента функции
Предположим, у меня есть процедура под названием foo
, который возвращает ::float
который должен принимать следующие аргументы:
- Процедура с двумя
::float
аргументы. ::float
- Другая
::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