В Verse вы можете присвоить типу собственное название, которое можно использовать для ссылки на него. Это так называемые псевдонимы типов. Синтаксис похож на инициализацию констант, за исключением того, что вместо значений используются типы.
К примеру, для того, чтобы создать собственный псевдоним для float
, вы можете использовать следующий синтаксис:
number := float
Это можно использовать для сокращения сигнатуры типов. К примеру, вместо следующего блока:
RotateInts(X : tuple(int, int, int)) : tuple(int, int, int) =
( X(3), X(1), X(2))
можно создать псевдоним для кортежа (tuple):
int_triple := tuple(int, int, int)
RotateInts(X : int_triple) : int_triple =
(X(3), X(1), X(2))
Это особенно полезно в сочетании с типами функций. Пример:
int_predicate := type{_(:int)<transacts><decides> : void}
Filter(X : []int, F : int_predicate) : []int =
for (Y : X, F[Y]):
Y
Обратите внимание, что в настоящее время Verse не поддерживает псевдонимы для параметрических типов.
Например, такой тип:
predicate(t : type) := type{_(:t)<transacts><decides> : void}
не поддерживается.