Verse hat ein spezielles Konstrukt, das verwendet werden kann, um den Typ eines beliebigen Ausdrucks abzurufen (ähnlich wie decltype in modernem C++): Typ. Er kann überall genutzt werden, wo ein Typ verwendet werden kann. Zum Beispiel,
Foo() : int = 0
Bar(X : type{Foo()}) : type{Foo()} = X
Er ist besonders nützlich, um die Typen von Funktionen zu beschreiben, und der Ergebnistyp einer Funktion muss als eine andere Funktion mit nicht standardmäßigen Auswirkungen angegeben werden. Zum Beispiel,
comparison := enum:
LT
EQ
GT
Less(X : int, Y : int)<decides> : int =
X < Y
Equal(X : t, Y:comparable where t:subtype(comparable))<decides> : t =
X = Y
Greater(X : int, Y : int)<decides> : int =
X > Y
Comparison(Arg : comparison) : type{_(:int, :int)<decides> : int} =
case (Arg):
comparison.LT => Less
comparison.EQ => Equal
comparison.GT => Greater
Hier wandelt der Vergleichsausdruck eine Vergleichsaufzählung in die Vergleichsoperation um, der jeder bestimmte Aufzählungswert entspricht. In diesem Beispiel wird auch die spezielle Kennung _ verwendet, der in type an Stellen verwendet werden kann, an denen eine Kennung erwartet wird, ohne dass andernfalls ein unbenutzter Name angegeben werden muss.