Skip to content

Instantly share code, notes, and snippets.

@yakreved
yakreved / sicp_2_23
Created August 15, 2013 22:52
sicp 2.23
(define (for-each1 func items)
(cond ((null? items)
())
(else (func (car items)) (for-each1 func (cdr items))))
)
(for-each (lambda (x) (newline) (display x))
(list 57 321 88))
@yakreved
yakreved / sicp_2_24
Created August 15, 2013 23:02
sicp 2.24
(car (cdaddr (list 1 3 (list 5 7) 9)))
(caar (list ( list 7)))
(caddr (cddddr (cons 1 (cons 2 (cons 3 (cons 4 (cons 5 (list 6 7))))))))
@yakreved
yakreved / sicp_2_26
Created August 15, 2013 23:04
sicp 2.26
(define x (list 1 2 3))
(define y (list 4 5 6))
(append x y)
(cons x y)
(list x y)
=>
(1 2 3 4 5 6)
@yakreved
yakreved / sicp_2_27
Created August 16, 2013 03:26
sicp 2.27 deep-reverse
(define (atom? x) (not (pair? x)))
(define (deep-reverse l)
(cond ((null? l) l)
((atom? (car l))(append (deep-reverse (cdr l)) (list (car l))))
(else (append (deep-reverse (cdr l)) (list(deep-reverse (car l)))))
)
)
(deep-reverse (list 1 4 9 (list 2 3 4) 16 25))
@yakreved
yakreved / sicp_2_28
Created August 16, 2013 03:35
sicp 2.28 fringe
(define (atom? x) (not (pair? x)))
(define (deep-reverse l)
(cond ((null? l) l)
((atom? (car l))(append (deep-reverse (cdr l)) (list (car l))))
(else (append (deep-reverse (cdr l)) (deep-reverse (car l))))
)
)
(deep-reverse (list 1 4 9 (list 2 3 4) 16 25))
@yakreved
yakreved / sicp_2_30
Created August 16, 2013 04:11
sicp 2.30 square-tree
(define (atom? x) (not (pair? x)))
(define (square x) (* x x))
(define (square-tree items)
(cond ((null? items) '())
((atom? (car items))
( cons (* (car items) (car items)) (square-tree (cdr items))))
(else ( cons (square-tree (car items)) (square-tree (cdr items))))))
(define (map-square-tree x)
@yakreved
yakreved / sicp_2_31
Created August 16, 2013 04:14
sicp 2.31
(define (atom? x) (not (pair? x)))
(define (square x) (* x x))
(define (tree-map func items)
(cond ((null? items) '())
((atom? (car items))
( cons (func (car items)) (square-tree (cdr items))))
(else ( cons (square-tree (car items)) (square-tree (cdr items))))))
(define (tree-map2 func x)
@yakreved
yakreved / sicp_2_32
Created August 16, 2013 04:25
sicp 2.32
(define (subsets s)
(if (null? s)
(list ())
(let ((rest (subsets (cdr s))))
(append rest (map (lambda (x) (cons (car s) x))
rest)))))
(subsets (list 1 2 3 ))
@yakreved
yakreved / sicp_2_33
Created August 17, 2013 04:53
sicp 2.33
(define (accumulate op initial sequence)
(if (null? sequence)
initial
(op (car sequence)
(accumulate op initial (cdr sequence)))))
(define (square x) (* x x))
(define (map p sequence)
(accumulate (lambda (x y) (cons (p x) y)) () sequence))
@yakreved
yakreved / sicp_2_34
Created August 17, 2013 04:59
sicp 2.34
(define (accumulate op initial sequence)
(if (null? sequence)
initial
(op (car sequence)
(accumulate op initial (cdr sequence)))))
(define (horner-eval x coefficient-sequence)
(accumulate (lambda (this-coeff higher-terms)
(+ (* x higher-terms) this-coeff))