diff options
Diffstat (limited to 'test/syntax/code/scheme')
-rw-r--r-- | test/syntax/code/scheme | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/syntax/code/scheme b/test/syntax/code/scheme new file mode 100644 index 00000000..b62a98cb --- /dev/null +++ b/test/syntax/code/scheme @@ -0,0 +1,28 @@ +;; Calculation of Hofstadter's male and female sequences as a list of pairs + +(define (hofstadter-male-female n) +(letrec ((female (lambda (n) + (if (= n 0) + 1 + (- n (male (female (- n 1))))))) + (male (lambda (n) + (if (= n 0) + 0 + (- n (female (male (- n 1)))))))) + (let loop ((i 0)) + (if (> i n) + '() + (cons (cons (female i) + (male i)) + (loop (+ i 1))))))) + +(hofstadter-male-female 8) + +(define (find-first func lst) +(call-with-current-continuation + (lambda (return-immediately) + (for-each (lambda (x) + (if (func x) + (return-immediately x))) + lst) + #f))) |