summaryrefslogtreecommitdiff
path: root/test/syntax/code/scheme
diff options
context:
space:
mode:
Diffstat (limited to 'test/syntax/code/scheme')
-rw-r--r--test/syntax/code/scheme28
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)))