Verse hat einen speziellen Typ, "any", der der Supertyp aller Typen ist (alle anderen Typen sind Subtypen von "any"). Aus diesem Grund unterstützt "any" nur sehr wenige Operationen, da alle anderen Typen die gleiche Funktionalität bieten müssen, die "any" bietet.
Wenn zum Beispiel "any" eine Vergleichsoperation definieren würde (was er nicht tut), dann müssten auch alle anderen Typen eine Vergleichsoperation definieren (was sie nicht tun).
Es gibt sehr wenig, was du mit dem Typ "any" machen kannst. Aber es ist gut, dass du diesen Typ kennst, denn er kann auftauchen, wenn du einen Code schreibst, der einen Fehler produziert.
Aber es gibt Möglichkeiten, wie du "any" verwenden kannst:
Letters := enum:
A
B
C
letter := class:
Value : char
Main(Arg : int) : void =
X := if (Arg > 0)
Letters.A
else
letter{Value := 'D'}
Im obigen Code-Beispiel erhält 'X' den Typ 'Any', da dies der niederste Supertyp sowohl von 'Letters' als auch von 'Letter' ist.
Nützlicher ist, dass any als Typ für einen Parameter einer Funktion verwendet werden kann, der ignoriert wird (aber als Argument für eine Methode eines implementierten Interface erforderlich sein könnte).
Zum Beispiel:
FirstInt(X:int, :any) : int = X
Das zweite Argument von FirstInt wird ignoriert und kann vom Typ any sein, also bekommt es den Typ any. FirstInt kann allgemeiner mit parametrischen Typen geschrieben werden. Zum Beispiel:
First(X:t, :any where t:type) : t = X