Вот я тут задумался и сам сходу ответить не смог. Почему для типа array[] синтакис конструктора совпадает с именем типа, а для кортежей и функций придуман свой синтаксис?
Почему не сделать объявление типа кортежей и функций совпадающим с синтаксисом их описания? Вроде бы нигде нет мест, где может стоять как тип так и выражение.
def x(f : int => int) : (int, string) {
}
Я понимаю, что для функций -> исторически сложилась. А => пришел из C# позже. А вот с кортежами не очень понятно. Где неоднозначности?