summaryrefslogtreecommitdiff
path: root/coding-exercises/2/38.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'coding-exercises/2/38.rkt')
-rw-r--r--coding-exercises/2/38.rkt24
1 files changed, 24 insertions, 0 deletions
diff --git a/coding-exercises/2/38.rkt b/coding-exercises/2/38.rkt
new file mode 100644
index 0000000..456e283
--- /dev/null
+++ b/coding-exercises/2/38.rkt
@@ -0,0 +1,24 @@
+#lang racket
+(require "../../shared/lists.rkt")
+
+(define (fold-right op initial sequence)
+ (accumulate op initial sequence))
+
+(define (fold-left op initial sequence)
+ (define (iter result rest)
+ (if (null? rest)
+ result
+ (iter (op result (car rest))
+ (cdr rest))))
+ (iter initial sequence))
+
+((lambda ()
+ (newline)
+ (display (fold-right / 1 (list 1 2 3)))
+ (newline)
+ (display (fold-left / 1 (list 1 2 3)))
+ (newline)
+ (display (fold-right list '() (list 1 2 3)))
+ (newline)
+ (display (fold-left list '() (list 1 2 3)))))
+