Verse には、(モダン C++ の decltype と同じような) 任意の 式 の 型 を取得するために使用できる特殊な コンストラクタ があります。型を使用できる場所であれば、どこでも使用することが可能です。その例を以下に示します。
Foo() : int = 0
Bar(X : type{Foo()}) : type{Foo()} = X
関数の型を示す場合に特に役に立ち、デフォルトではないエフェクトを持つ別の 関数 として関数の結果型を指定するのに必要です。その例を以下に示します。
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
ここでは 比較式 により、比較列挙型を特定の列挙型の各値が対応する比較演算に変換します。またこの例では、特殊な _ 識別子が使用されています。この識別子は、type において、識別子が想定されるもののそれ以外には使用されないため名前を実際に指定する必要はない場所で使用できます。