Функции, объявленные через let
let rec a () = b ()
and b () = ()
Это взаимно рекурсивные функции.
Методы одного типа
type T () =
member t.A () = t.B()
member t.B () = ()
Это тривиально; это просто работает. Обратите внимание на комментарий Абеля.
Методы разных типов
type TypeA () =
member t.A (b : TypeB) = b.B()
and TypeB () =
member b.B () = ()
Здесь используется синтаксис type ... and
для взаимно рекурсивных типов.
Примечания
Обычно and
используется только в том случае, если вызовы происходят в обоих направлениях. В противном случае может быть лучше переупорядочить объявления так, чтобы вызываемая функция была первой. Часто бывает полезно для вывода типов и удобочитаемости, чтобы избежать циклических зависимостей и не подразумевать их там, где они не используются.
Я предлагаю отредактировать вопрос, чтобы либо запрашивать функции в целом, либо запрашивать разные типы (в этом случае я бы удалил первые два случая из этого ответа). Методы обычно считаются подмножеством функций, что является общим математическим термином. Однако все функции F # технически являются методами интерфейса командной строки, так как это то, для чего они скомпилированы. Как есть, неясно, о чем вопрос, но я предполагаю из принятого ответа, что он не только запрашивает методы, как следует из названия.
person
Vandroiy
schedule
07.11.2014