Какие убедительные варианты использования для типов зависимых методов?

Зависимые типы методов, которые раньше были экспериментальной функцией, теперь включены по умолчанию в магистрали , и, очевидно, это, похоже, вызвало некоторое волнение в сообществе Scala.

На первый взгляд не сразу понятно, для чего это может быть полезно. Хайко Зеебергер разместил простой пример зависимых типов методов здесь , который, как видно из комментария, может быть легко воспроизведен с параметрами типа для методов. Так что это был не очень убедительный пример. (Возможно, мне не хватает чего-то очевидного. Пожалуйста, поправьте меня, если это так.)

Каковы практические и полезные примеры использования зависимых типов методов, в которых они явно превосходят альтернативы?

Что интересного мы можем сделать с ними, что раньше было невозможно / легко?

Что они покупают нам по сравнению с существующими функциями системы типов?

Кроме того, являются ли типы зависимых методов аналогичными или черпающими вдохновение в любых функциях, обнаруженных в системах типов других продвинутых типизированных языков, таких как Haskell, OCaml?

124
задан Aaron Hall 5 February 2018 в 15:03
поделиться