Вы также можете использовать файлы сигнатур , чтобы указать открытый интерфейс соответствующего файла реализации. Тогда идея заключается в том, что вы не будете беспокоиться о доступности, пока реализация не укрепится. Я, честно говоря, никогда не использовал их, но они широко используются в исходном коде компилятора F # (вероятно, только потому, что я доволен стилем сайта реализации, используемым во многих других языках, тогда как люди с оригинальным опытом ML будут чувствовать себя непринужденно). с файлами сигнатур; также, вы получаете некоторые дополнительные функции с файлами сигнатур, хотя ничего сверхъестественного).
Таким образом, если бы ваш Scoring
модуль был реализован в файле с именем Scoring.fs
, у вас был бы соответствующий файл подписи с именем Scoring.fsi
, который бы выглядел примерно так:
namespace NS //replace with you actual namespace; I think you must use explicit namespaces
module Scoring =
//replace int[] with the actual ScoredPopulation type; I don't think you can use aliases
val bestKPercent : (float -> int[] -> int[])
val worstKPercent : (float -> int[] -> int[])