Code: Select all
(define (r n)
(println "n is " n)
(if (> n 0)
(r (- n 1))))
(r 10)
n is 10
n is 9
n is 8
n is 7
n is 6
n is 5
n is 4
n is 3
n is 2
n is 1
n is 0
Code: Select all
(define (r n)
(println "n is " n)
(if (> n 0)
(r (- n 1))))
(r 10)
n is 10
n is 9
n is 8
n is 7
n is 6
n is 5
n is 4
n is 3
n is 2
n is 1
n is 0
Code: Select all
(define (r n)
(if (>= n 0)
(append "n is " (string n) "\n" (r (- n 1)))
"" ))
(println (r 10))
(exit)
Code: Select all
(define (r:r n)
(if (not r:buff)
(set 'r:buff "")
(write-line (string "n is " n) r:buff))
(if (> n 0)
(r (- n 1))
r:buff))
(r 10)
; or
(print (r 10))
Code: Select all
(define (nl-expr-to-string l)
(dolist (i l)
(if (atom? (first i))
(cond
((= (first i) 'symbol)
(write-buffer buf (string (last i))))
((= (first i) 'open-paren)
(write-buffer buf {(}))
((= (first i) 'close-paren)
(write-buffer buf {)}))
((= (first i) 'whitespace)
(dostring (s (base64-dec (last i)))
(write-buffer buf (char s))))
((= (first i) 'braced-string)
(write-buffer buf (string "{" (last i) "}")))
((= (first i) 'quoted-string)
(write-buffer buf (string {"} (last i) {"})))
((= (first i) 'bracketed-string)
(write-buffer buf (string {[text]} (last i) {[/text]})))
((= (first i) 'quote)
(write-buffer buf "'"))
((= (first i) 'comment)
(write-buffer buf (string (last i) "\n")))
((= (first i) 'integer)
(write-buffer buf (string (int (last i)))))
((= (first i) 'float)
(write-buffer buf (string (float (last i)))))
((= (first i) 'hex)
(write-buffer buf (string (last i)))))
; not an atom
(nl-expr-to-string i)))
buf)
Code: Select all
(set 'nl-expr-to-string
(lambda(l)
(if (atom? l)
(cond ((= (first i) 'symbol)
(string (last i)))
... ) ; end of cond
(apply append (map nl-expr-to-string l)))))