(* TEST: [-tok] *) (* Type definitions *) type string: 1 -> character type int2int: integer -> integer type string2int: string -> integer (* Function prototypes They use the above type definitions *) function square : int2int function entry : string2int (* Function definition Functions must be declared before they are defined *) square(x) := { return x * x; } (* Function definition entry is the first function called *) entry(arg) := { input = 7; expected = 49; actual := square(input); rseult := expected = actual; return 0; [ integer: input; integer: expected; integer: actual; boolean: result; string: input ] }