Я делаю dev в F # некоторое время, и мне это нравится. Однако одно модное словечко, которое я знаю, не существует в F #, является более высоким видом. Я читал материал о более высоких типах, и я думаю, что понимаю их определение. Я просто не знаю, почему они полезны. Может ли кто-нибудь привести некоторые примеры того, какие типы более высокого уровня упрощаются в Scala или Haskell, для которых требуются обходные пути в F #? Кроме того, для этих примеров, что обходные пути не будут иметь более высокие типы (или наоборот в F #)? Может быть, я просто привык к работе над этим, что я не замечаю отсутствия этой функции.
(я думаю) Я получаю, что вместо myList |> List.map f
или myList |> Seq.map f |> Seq.toList
более высокие типы позволяют просто написать myList |> map f
, и он вернет List
. Это здорово (при условии, что это правильно), но кажется немного мелочным? (И не может ли это быть сделано просто путем перегрузки функций?) Обычно я конвертирую в Seq
, а затем я могу преобразовать все, что захочу. Опять же, может быть, я просто привык к этому. Но есть ли какой-нибудь пример, когда типы более высокого уровня действительно спасают вас либо нажатием клавиш, либо безопасностью типа?