!7 /* We want an algebraic data type: SeenOrNot = Seen(rect, furtherNotes) | NotSeen */ // We simulate that with records and an interface: sinterface SeenOrNot {} srecord Seen(rect, furtherNotes) implements SeenOrNot {} srecord NotSeen implements SeenOrNot {}