Объяснение сопоставления с образцом и переключателем
Шаблоны дают вам небольшой sml язык для описания структуры sml значений, которые вы хотите sml сопоставить. Структура может f# быть сколь угодно глубокой, и standard-ml вы можете связывать переменные fsharp с частями структурированного standard-ml значения.
Это позволяет писать fsharp очень кратко. Вы можете проиллюстрировать standard-ml это небольшим примером, например ocaml производной функцией для fsharp простого типа математических f# выражений:
type expr =
| Int of int
| Var of string
| Add of expr * expr
| Mul of expr * expr;;
let rec d(f, x) =
match f with
| Var y when x=y -> Int 1
| Int _ | Var _ -> Int 0
| Add(f, g) -> Add(d(f, x), d(g, x))
| Mul(f, g) -> Add(Mul(f, d(g, x)), Mul(g, d(f, x)));;
Кроме того, поскольку pattern-matching сопоставление с образцом ocaml является статической конструкцией fsharp для статических типов, компилятор standard-ml может (i) проверить, что pattern-matching вы охватили все случаи (ii) обнаружить standard-ml избыточные ветви, которые f# никогда не могут соответствовать sml какому-либо значению (iii) обеспечить sml очень эффективную реализацию f# (с прыжки и т. д.).
f#
pattern-matching
ocaml
sml
Объяснение сопоставления с образцом и переключателем
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.