diff options
author | bd <bdunahu@operationnull.com> | 2024-05-18 14:34:37 -0600 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2024-05-18 14:47:07 -0600 |
commit | 6eb36d8a2f317f2eb49832f3ee06f24204c9e4fb (patch) | |
tree | 3c6710d8116d8c3e65c070fa9fffc67ae653fcf9 /basics.scm |
Hello, Palindrome, & Number-Guesser code-bases
Diffstat (limited to 'basics.scm')
-rw-r--r-- | basics.scm | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/basics.scm b/basics.scm new file mode 100644 index 0000000..4c52883 --- /dev/null +++ b/basics.scm @@ -0,0 +1,52 @@ +;;;; 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)) |