Skip to content

Instantly share code, notes, and snippets.

View chelseatroy's full-sized avatar

Chelsea Troy chelseatroy

View GitHub Profile
@chelseatroy
chelseatroy / Scanner.java
Created October 16, 2019 17:59
Original Scanning Case Statement
...
private void scanToken() {
char c = advance();
switch (c) {
case '(': addToken(LEFT_PAREN); break;
case ')': addToken(RIGHT_PAREN); break;
case '{': addToken(LEFT_BRACE); break;
case '}': addToken(RIGHT_BRACE); break;
case ',': addToken(COMMA); break;
@chelseatroy
chelseatroy / Scanner.java
Created October 16, 2019 18:00
Retooled scanToken() method
private void scanToken(char character) {
if (singleCharacterToken(character) != null) {
addToken(singleCharacterToken(character));
return;
}
if (isComparisonOperator(character)) {
addComparisonOperatorTokenFor(character);
return;
}
@chelseatroy
chelseatroy / test_applicative_normal.scm
Created October 29, 2019 14:49
Applicative vs. Normal Order
(define (p) (p))
(define (test x y)
(if (= x 0)
0
y))
(test 0 (p))
@chelseatroy
chelseatroy / function_definition.scm
Last active November 2, 2019 05:25
Function Definitions
(define (find-smallest a b c)
(cond ((and (<= a b) (<= a c) a))
((and (<= b c) (<= b c) b))
((and (<= c a) (<= c b) c))
)
)
(define (largest-squared-hypotenuse a b c) (
cond ((= (find-smallest a b c) a) (+ (* b b) (* c c)))
((= (find-smallest a b c) b) (+ (* a a) (* c c)))
@chelseatroy
chelseatroy / iterative_sqrt.scm
Created October 29, 2019 14:55
Iterative Square Root
(define (square x) (* x x))
(define (average x y)
(/ (+ x y) 2))
(define (sqrt x)
(define (improve guess)
(average guess (/ x guess)))
(define (good-enough? guess)
(< (abs (- (square guess) x)) (* 0.000001 x)))
@chelseatroy
chelseatroy / recursive.scm
Created October 29, 2019 14:56
Recursive Function
(define (sum-n n)
(if (= n 0)
0
(+ n (sum-n (- n 1)))
)
)
(sum-n 5) ; 15
@chelseatroy
chelseatroy / iterative.scm
Created October 29, 2019 14:57
Iterative Function
(define (sum-i n)
(define (iter n sofar)
(if (= n 0)
sofar
(+ (iter (- n 1) (+ n sofar)))))
(iter n 0)
)
(sum-i 5) ; 15
@chelseatroy
chelseatroy / higher_order_procedures.scm
Created October 29, 2019 14:58
Higher Order Procedures
(define (sum term a next b)
(accumulate + 0 term a next b))
(define (product term a next b)
(accumulate * 1 term a next b))
(define (factorial n)
(product identity 1 inc n))
@chelseatroy
chelseatroy / higher_order_procedures.scm
Last active October 29, 2019 15:28
More Higher Order Procedures
(define (square x) (* x x))
(define (qb x) (* x x x))
(define (average x y)
(/ (+ x y) 2))
(define (sq-improve guess for-value)
(average guess (/ for-value guess)))
(define (qb-improve guess for-value)
(/ (+(/ for-value (square guess)) (* 2 guess)) 3))
@chelseatroy
chelseatroy / fun_fun_function.scm
Last active November 2, 2019 17:40
Composing Procedures
; 1.41
(define (double f)
(lambda (x) (f(f x))))
(define (add-2-to x) (+ 2 x))
(define (inc x) (+ 1 x))
(define (square x) (* x x))
((double add-2-to) 3)