From ffb853ee209581b03182c9daf3c90e19a639407d Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Tue, 8 Jun 2021 18:25:02 -0300 Subject: /home/andreh/dev/libre/dotfiles/scripts/pastebin.sh: Auto-add _pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt1.md --- ...08-debit-reading-session-sicp-solutions-pt-1.md | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 _pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt-1.md (limited to '_pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt-1.md') diff --git a/_pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt-1.md b/_pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt-1.md new file mode 100644 index 0000000..b97ef08 --- /dev/null +++ b/_pastebins/2021-06-08-debit-reading-session-sicp-solutions-pt-1.md @@ -0,0 +1,77 @@ +--- + +title: Debit Reading Session - SICP solutions pt.1 + +date: 2021-06-08 + +layout: post + +lang: en + +ref: debit-reading-session-sicp-solutions-pt-1 + +--- + +```scheme +;; 1.41 +(define (double f) + (lambda (x) + (f (f x)))) + + +:;; 1.42 +(define (compose f g) + (lambda (x) + (f (g x)))) + + +;;; 1.43 +(define (repeated f n) + (if (= 1 n) + identity + (comp (repeated f (dec n))))) + + +;;; 2.27 +(define (map-tree node-fn leaf-fn tree) + (cond + ((null? tree) tree) + ((not (pair? tree)) (leaf-fn tree)) + (else + (node-fn + (cons (map-tree node-fn leaf-fn (car tree)) + (map-tree node-fn leaf-fn (cdr tree))))))) + +(define (map-nodes f tree) + (map-tree f identity tree)) + +(define (deep-reverse x) + (map-nodes reverse x)) + + +;;; 2.28 +(define (flatten tree) + (define (rec acc t) + (cond + ((null? t) acc) + ((not (pair? t)) (cons t acc)) + (else + (rec (rec (cdr t) acc) + (car t))))) + (rec nil tree)) + + +;;; 2.30 +(define (square-tree tree) + (map-leaves square tree)) + + +;;; 2.31 +(define square-tree map-leaves) ; ha! + + +;;; 2.32 +TODO +``` + +FYI: I just typed those in, I didn't yet test them yet. -- cgit v1.2.3