Skip to content

Instantly share code, notes, and snippets.

View chelseatroy's full-sized avatar

Chelsea Troy chelseatroy

View GitHub Profile
@chelseatroy
chelseatroy / representing_data_structures.scm
Last active October 29, 2019 21:54
Representing Data Structures
; 2.2 Representing data with procedures
(define (make-point x y)(cons x y))
(define (x-point point) (car point))
(define (y-point point) (cdr point))
(define a-point (make-point 0 0))
(define b-point (make-point 2 2))
(x-point a-point)
(y-point a-point)
@chelseatroy
chelseatroy / list_reversal.scm
Last active October 29, 2019 22:02
List Reversal
; 2.18
(define (reverse list)
(define (iter-list reversed-list unprocessed-remaining)
(if (null? unprocessed-remaining)
reversed-list
(iter-list (cons(car unprocessed-remaining) reversed-list) (cdr unprocessed-remaining))
)
)
(iter-list null list))
@chelseatroy
chelseatroy / parity_function.scm
Last active October 29, 2019 22:04
Parity Function
; 2.20
(define (same-parity first . remaining)
(define (iter-list parity-list unprocessed-remaining)
(if (null? unprocessed-remaining)
parity-list
(if (= (remainder first 2) (remainder (car unprocessed-remaining) 2))
(iter-list (cons(car unprocessed-remaining) parity-list) (cdr unprocessed-remaining))
(iter-list parity-list (cdr unprocessed-remaining)))
)
@chelseatroy
chelseatroy / mapping.scm
Last active October 29, 2019 22:06
Mapping
; 2.21
(define (square-list1 items)
(if (null? items)
null
(cons (* (car items) (car items)) (square-list1 (cdr items)))
)
)
(define (square-list2 items)
@chelseatroy
chelseatroy / append_cons_list.scm
Created October 29, 2019 22:06
Append, Cons, and List
; 2.26
(define x (list 1 2 3))
(define y (list 4 5 6))
(append x y) ;---> (1 2 3 4 5 6)
(cons x y) ;---> ((1 2 3) 4 5 6)
(list x y) ;---> ((1 2 3) (4 5 6))
@chelseatroy
chelseatroy / reverse_parity_list.scm
Created October 29, 2019 22:07
Reversing the Parity List
; 2.20
(define (same-parity first . remaining)
(define (iter-list parity-list unprocessed-remaining)
(if (null? unprocessed-remaining)
parity-list
(if (= (remainder first 2) (remainder (car unprocessed-remaining) 2))
(iter-list (cons(car unprocessed-remaining) parity-list) (cdr unprocessed-remaining))
(iter-list parity-list (cdr unprocessed-remaining)))
)
@chelseatroy
chelseatroy / deep_reverse.scm
Last active October 29, 2019 22:44
Deep Reverse
; 2.27
(define (deep-reverse list)
(define (iter-list reversed-list unprocessed-remaining)
(if (null? unprocessed-remaining)
reversed-list
(iter-list (cons (if (list? (car unprocessed-remaining))
(deep-reverse (car unprocessed-remaining))
(car unprocessed-remaining))
reversed-list) (cdr unprocessed-remaining))
@chelseatroy
chelseatroy / data_as_procedures.scm
Last active November 2, 2019 20:53
Data Represented as Procedures
; 2.2 Representing data with procedures
(define (make-point x y)(cons x y))
(define (x-point point) (car point))
(define (y-point point) (cdr point))
(define a-point (make-point 0 0))
(define b-point (make-point 2 2))
(x-point a-point)
(y-point a-point)
@chelseatroy
chelseatroy / data_as_procedures.scm
Last active November 2, 2019 21:02
Making Data out of Procedures
; 2.4: Representing data AS procedures
(define (2.4-cons x y)
(lambda (m) (m x y)))
(define (2.4-car z)
(z (lambda (p q) p)))
(define (2.4-cdr z)
(z (lambda (p q) q)))
@chelseatroy
chelseatroy / data_as_procedures.scm
Last active November 2, 2019 21:15
Data Represented as a Different Procedure
; 2.5
(define expt (** a b))
(define (2.5-cons a b)
(* (expt 2 a) (expt 3 b))
)
(define (2.5-car product)
(if (= 0 (remainder product 2))
(+ 1 (2.5-car (/ product 2)))