Можно ли объявить несколько привязок переменных в одной строке в SML? Например, у меня есть следующее:
let
val m1 = [1]
val m2 = [2]
val m3 = [3]
in
{...}
end
Я хотел бы сжать это до чего-то вроде
let
val m1 = [1], m2 = [2], m3 = [3]
in
{...}
end
Этот синтаксис не работает, но есть ли способ объявить несколько привязок переменных в одной строке?
Вы можете создать кортеж и сразу деструктурировать его.
let
val (m1, m2, m3) = ([1], [2], [3])
in
...
end
Вот два способа:
- let val x = 1 val y = 5 in x + y end;
val it = 6 : int
- let val x = 1 and y = 5 in x + y end;
val it = 6 : int
Лично я нахожу небольшое злоупотребление and
более читабельным.
Тем не менее, я думаю, что метод «деструктурирующего связывания» более распространен, чем любой из них, поскольку он также более полезен в целом.
- let val (x, y) = (1,5) in x + y end;
val it = 6 : int
- fun f x = (x, x + 2, x + 3);
val f = fn : int -> int * int * int
- let val (x, y, z) = f 3 in x + z end;
val it = 9 : int