2 setecho. 1 setundeferror. DEFINE # English French German zero == 0 0 pop; one == zero 1 +; HIDE un == one; deux == zero one un + + IN two == deux; three == zero un + deux +; END; four == two three + one -; HIDE trois == two succ; HIDE eins == one; zwei == one dup +; drei == eins zwei +; IN quatre == drei eins +; END; cinq == two trois + IN five == cinq; six == trois three +; seven == trois drei + succ; END; END zero. one. two. three. four. five. six. seven. # should complain about undefined drei ! HIDE twenty == 20; thirty == 30; IN fifty == twenty thirty +; END fifty. thirty. # should complain about undefined thirty ! MODULE m1 PRIVATE a == "a"; b == "b" PUBLIC ab == a b concat; ba == b a concat; abba == ab ba concat END # correct usage of fields: m1.ab . m1.ba . m1.abba . # incorrect usage of fields: no such field m1.a . m1.b . MODULE m2 PRIVATE a == "A"; b == "B" PUBLIC ab == a b concat; ba == b a concat; abba == ab ba concat; HIDE c == "C"; d == "D" IN cd == c d concat; abc == a b concat c concat END; bcd == b cd concat END # correct usage of fields: m2.ab . m2.ba . m2.abba . m2.cd . m2.abc . m2.bcd . # incorrect usage of fields: no such field m2.a . m2.b . m2.c . m2.d .