a
è, come b
in questo esempio, una variabile di tipo. Può essere istanziato con qualsiasi tipo (mentre b
può essere istanziato con qualsiasi tipo che soddisfi il vincolo che sia anche un'istanza di Num
).
L'esempio scala funziona in modo molto diverso a causa del sistema di tipo scala che è piuttosto diverso; Non esiste un vero concetto di valore che abbia mai un tipo non completamente istanziato, quindi è necessario assegnare un tipo alla possibilità Left
del valore Either
. Salvo ulteriori limitazioni, questo termina semplicemente con Nothing
. A causa del modo in cui il sistema di tipo scala funziona (Nothing
è un sottotipo di qualsiasi altro tipo, quindi è possibile considerarlo un duale al tipo Any
) un per qualsiasi A
.
Volevo solo notare che 'Any' e' Nothing' sono duali in quanto sono opposti esatti: "Any' è il tipo super universale,' Nothing' è il sottotipo universale. Naturalmente, nessun valore può essere di tipo 'Nothing': perfetto per descrivere la parte sinistra di un' Right'! –