Типы зависимых методов, которые раньше были экспериментальной функцией, теперь включены по умолчанию в соединительной линии, и, по-видимому, это кажется создали некоторое волнение в сообществе Scala.
После первого взгляда не сразу видно, что это может быть полезно для. Heiko Seeberger опубликовал простой пример зависимых типов методов здесь, что, как можно видеть в комментарии, можно легко воспроизвести с помощью параметров типа на методах. Так что это был не очень убедительный пример. (Возможно, я пропустил что-то очевидное. Пожалуйста, поправьте меня, если да.)
Каковы практические и полезные примеры использования для зависимых типов методов, где они явно выгодны по сравнению с альтернативами? Какие интересные вещи мы можем сделать с ними, что было невозможно/раньше? Что они покупают у нас по существующим функциям системы типов?
Спасибо!
ВОПРОС БОНУСА: Являются ли зависимые типы методов аналогичными/привлекают вдохновение от любых функций, обнаруженных в системах типов других продвинутых типизированных языков, таких как Haskell, OCaml?