Зависимые типы методов, которые раньше были экспериментальной функцией, теперь включены по умолчанию в магистрали , и, очевидно, это, похоже, вызвало некоторое волнение в сообществе Scala.
На первый взгляд не сразу понятно, для чего это может быть полезно. Хайко Зеебергер разместил простой пример зависимых типов методов здесь , который, как видно из комментария, может быть легко воспроизведен с параметрами типа для методов. Так что это был не очень убедительный пример. (Возможно, мне не хватает чего-то очевидного. Пожалуйста, поправьте меня, если это так.)
Каковы практические и полезные примеры использования зависимых типов методов, в которых они явно превосходят альтернативы?
Что интересного мы можем сделать с ними, что раньше было невозможно / легко?
Что они покупают нам по сравнению с существующими функциями системы типов?
Кроме того, являются ли типы зависимых методов аналогичными или черпающими вдохновение в любых функциях, обнаруженных в системах типов других продвинутых типизированных языков, таких как Haskell, OCaml?