{ : read : show : compare : min : max : pow : gcd : abs : fold } Where Define (pow b n) Iterate {a b n} From {1 b n} Let a If [[n % 2] = 1] [a * b] a Let n [n / 2] In If [n = 0] a (Continue a [b * b] n) Define (gcd b a) Iterate {b a} If [a = 0] (abs b) (Continue a [b % a]) Define (fold n z succ) Iterate {i r} From {0 z} If [i = n] r (Continue [i + 1] (succ i r)) Where Define (read text) Let n (STRING.length text) In Iterate {i num} From {0 0} Cond | [i = n] 'just.num | True Let c (STRING.fetch text i) In If And [c >= `0`] [c <= `9`] (Continue [i + 1] [[10 * num] + [c - `0`]]) 'nothing ; Define (show i) (Prim show_integer i) Where Define (compare a b) Cond | [a < b] 'less | [a > b] 'greater | True 'equal ; Define (min a b) If [a < b] a b Define (max a b) If [a > b] a b Define (abs n) If [n < 0] -n n Where Let STRING Package "string"