На этом шаге мы рассмотрим использование такого синтаксиса.
Двухмерный синтаксис позволяет не перегружать текст программы лишними символами, необходимыми для разделения выражений.
С учётом сказанного, замыкания допустимо записывать, например, следующим образом [1, с.149-150]:
fun a b c = x*y/z where { x = a+b; y = b+c; z = c+a }
fun a b c = x*y/z where x = a+b y = b+c z = c+a
Смысл использования двухмерного синтаксиса состоит в следующем.
Каждое выражение, следующее после ключевого слова where, должно находиться на новой строке и при этом начинаться с одного и того же знакоместа в самой строке, т.е. все выражения должны располагаться "в столбик" друг под другом, начинаясь на одной и той же позиции.
На следующем шаге мы рассмотрим определение функций с помощью лямбда-исчисления.