In Verse kann man einem Typ einen anderen Namen geben, der verwendet werden kann, um auf denselben zugrunde liegenden Typ zu verweisen. Dies wird als Typ-Alias bezeichnet. Die Syntax ist der konstanten Initialisierung ähnlich, da es im Grunde dasselbe ist, aber mit Typen anstelle von Werten.
Um zum Beispiel float einen Alias zu geben, könnte die folgende Syntax verwendet werden:
number := float
Auf diese Weise lassen sich einige Typsignaturen verkürzen. Zum Beispiel könnte anstelle des folgenden Codes
RotateInts(X : tuple(int, int, int)) : tuple(int, int, int) =
( X(3), X(1), X(2))
ein Alias für Tupel eingeführt werden, zum Beispiel:
int_triple := tuple(int, int, int)
RotateInts(X : int_triple) : int_triple =
(X(3), X(1), X(2))
Dies ist besonders in Kombination mit Funktionstypen sinnvoll. Zum Beispiel,
int_predicate := type{_(:int)<transacts><decides> : void}
Filter(X : []int, F : int_predicate) : []int =
for (Y : X, F[Y]):
Y
Beachte, dass Verse derzeit keine parametrischen Typ-Aliase unterstützt.
Zum Beispiel wird
predicate(t : type) := type{_(:t)<transacts><decides> : void}
nicht unterstützt.