W Verse występuje specjalny konstruktor, za pomocą którego można pobrać typ dowolnego wyrażenia (podobnie jak decltype w nowoczesnej wersji C++): type. Można go używać wszędzie tam, gdzie można użyć typu. Na przykład:
Foo() : int = 0
Bar(X : type{Foo()}) : type{Foo()} = XJest on szczególnie przydatny do opisywania typów funkcji i jest wymagany do podania wynikowego typu funkcji jako innej funkcji z efektami innymi niż domyślne. Na przykład:
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
W tym przykładzie wyrażenie porównawcze konwertuje wyliczenie porównawcze na operację porównania, której odpowiadają poszczególne wartości wyliczenia. W przykładzie tym wykorzystano również specjalny identyfikator _, którego można użyć w type w miejscach, gdzie oczekiwany jest identyfikator, bez konieczności podawania nazwy, która nie jest używana w inny sposób.