;;;; variables (define my-var 15) my-var ;; set to something else (set! my-var 20) ;;;; functions (define (find value lst) (if (pair? lst) (begin (display (string-append "Looking at: " (number->string (car lst)) "\n")) (if (equal? (car lst) value) (begin (display "Found it!\n") (car lst)) (find value (cdr lst)))) #f)) (find 5 '(1 2 3 4 5 6)) ;; note that variables and functions exist in the same ;; namespace, and that we can define functions in a ;; slightly more ugly way, but looks a lot like a var ;; declaration: (define find-x (lambda (value lst) (if (pair? lst) (begin (display (string-append "Looking at: " (number->string (car lst)) "\n")) (if (equal? (car lst) value) (begin (display "Found it!\n") (car lst)) (find value (cdr lst)))) #f))) (find-x 4 '(1 2 3 4 5 6)) ;;;; let ;; let as a looping construct (let find-loop ((value 5) (lst '(1 2 3 4 5))) (if (pair? lst) (begin (display (string-append "Looking at: " (number->string (car lst)) "\n")) (if (equal? (car lst) value) (begin (display "Found it!\n") (car lst)) (find-loop value (cdr lst)))) #f))