Leider gibt es in Scheme keine Funktion um eine Zahl beliebig zu potenzieren. Daher hab ich eine kleine Funktion dafür geschrieben:
;; Contract: ^ number number -> number
;; Purpose: Returns result of number1^number2
;; Example: (^ 2 10) -> 1024
;; (^ 2 -2) -> 0.25
(define (^ x exp)
(cond
[(> exp 1) (* x (^ x (- exp 1)))]
[(< exp 0) (/ 1 (* x (^ x (- (- exp) 1))))]
[(= exp 1) x]
[(= exp 0) 1]))
(check-expect (^ 2 10) 1024)
(check-expect (^ -52 0) 1)
(check-expect (^ 2 -3) (/ 1 8))
;; Purpose: Returns result of number1^number2
;; Example: (^ 2 10) -> 1024
;; (^ 2 -2) -> 0.25
(define (^ x exp)
(cond
[(> exp 1) (* x (^ x (- exp 1)))]
[(< exp 0) (/ 1 (* x (^ x (- (- exp) 1))))]
[(= exp 1) x]
[(= exp 0) 1]))
(check-expect (^ 2 10) 1024)
(check-expect (^ -52 0) 1)
(check-expect (^ 2 -3) (/ 1 8))