September 22, 1999 | Strong Typing | Slide #21 |

datatype MyNum = IV of int | FV of real;

val n = IV(3);

val n = IV 3 : MyNum

Let's try again to screw up the union types:

fun intval (IV i) = i | intval (FV f) = f ;

Error: rules don't agree (tycon mismatch) expected: MyNum -> int found: MyNum -> real rule: FV x => x

One last try:

sqrt(n);

Error: operator and operand don't agree (tycon mismatch) operator domain: real operand: MyNum in expression: sqrt (n)

Next | Copyright © 1999 M-J. Dominus |