aboutsummaryrefslogtreecommitdiff
path: root/algebraic-structures.group.scm
blob: 6e38eafa5736b1faa9905b0f6d513e3bdd1be732 (about) (plain)
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)))))))