1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
(functor ((algebraic-structures group) (M (<> unit inv))) (<> unit inv pow) (import M scheme (chicken base)) (define (pow x n) (assert (exact-integer? n)) (if (negative? n) (pow (inv x) (- n)) (let loop ((i n) (acc unit)) (if (= i 0) acc (loop (sub1 i) (<> acc x)))))))