Предположительно, вы имеете в виду оператор bind , связанный с монадами, в котором можно начать с монадического значения , связать его с монадической функцией ,и получить еще одно монадическое значение .Это очень похоже на «свободный метод» (или набор таких, составляющих «свободный интерфейс»), который возвращает указатель или ссылку «это», да, но то, что вы упустили бы, это то, что монадическая функциянужно не возвращать монадическое значение того же типа, что и входное значение.Свободное соглашение по методу должно возвращать значение того же типа, чтобы продолжить цепочку вызовов, которые all действительны для готовящегося экземпляра (или экземпляров).
Монадическое bind сигнатура оператора выглядит примерно так:
M[a] -> (a -> M[b]) -> M[b]
То есть «возвращаемое значение» равно , возможно типа, отличного от типа первого входного значения.Это только то же самое, когда предоставленная функция имеет тип
(a -> M[a])
Все зависит от типа монадической функции и, более конкретно, типа возврата монадической функции.
Если бы вы ограничили область монадических функций, вы бы приняли те, которые возвращают тот же тип, что и монадическое значение, переданное оператору bind , тогда да, у вас будет что-то, что ведет себя каксвободный интерфейс.