This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; A couple of silly macros for a language that has defmacro but no tail-recursion | |
;; the mutual recursion macro is even worse, because you can only really 'call' one of the functions | |
(defmacro recur (arg-pairs &body body) | |
(let ((arg-names (mapcar #'car arg-pairs)) ;; extract loop variable names | |
(arg-vals (mapcar #'cadr arg-pairs))) ;; extract start values | |
;; block to return from | |
`(block nil |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun contains (self value) | |
(labels ((recur (value current) | |
(if (null current) | |
nil | |
(cond | |
((= value current.value) t) | |
((< value current.value) (recur value current.left)) | |
(t (recur value current.right)))))) | |
(recur value self.root))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# process() kind of parses Tadoku entries | |
# Character Classes | |
# 0. Space | |
# 1. Hash | |
# 2. Semicolon | |
# 3. Number | |
# 4. Other | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun chop-1 (num tree) | |
(labels ((recur (num tree start-index) | |
(if (equalp 0 (length tree)) -1 | |
(let* ((mid-point (truncate (/ (length tree) 2))) | |
(mid-num (elt tree mid-point))) | |
(cond | |
((= (length tree) 0) -1) | |
((= mid-num num) (+ mid-point start-index)) | |
((= (length tree) 1) -1) | |
((> mid-num num) (recur num (subseq tree 0 mid-point) 0)) ;; check in first half of tree |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET A, 0 | |
SET B, 1 | |
SET C, 10 ;; set to 10 to find the tenth fibonacci number | |
:test IFE C, 0 | |
SET PC, done | |
;; loop | |
SET X, A | |
ADD X, B |
NewerOlder