A linguagem Verse tem uma construção especial que pode ser usada para obter o tipo de uma expressão arbitrária (semelhante a decltype em C++ moderno): digite. Ela pode ser usada em qualquer lugar em que um tipo possa ser usado. Por exemplo,
Foo() : int = 0
Bar(X : type{Foo()}) : type{Foo()} = X
É particularmente útil descrever os tipos de funções e é necessário fornecer o tipo de resultado de uma função como outra função com efeitos não padrão. Por exemplo,
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
Aqui, a expressão de comparação converte uma enumeração de comparação na operação de comparação à qual cada valor de enumeração específico corresponde. Este exemplo também faz uso do identificador _ especial, que pode ser usado em type em locais onde um identificador é esperado sem ter que fornecer um nome que não seja utilizado.