Wiki

Clone wiki

Paren / Examples

Lotto 6/45

(defn shuffle (lst)
  (set len (length lst))
  (for i 0 (- len 2) 1
    (set ci (+ 1 i (floor (* (rand) (- len i 1)))))
    (set c (nth i lst))
    (set (nth i lst) (nth ci lst))
    (set (nth ci lst) c))
  lst)

(defn take (n lst)
  (set r (list))
  (for i 0 (dec n) 1
    (set r (cons (nth i lst) r)))
  r)

(defn lotto ()
  (set r (range 1 45 1))
  (shuffle r)
  (take 6 r))
(prn (lotto))

eval-clause

(set *state* (quote ((a false) (b false) (c true) (d false))))
(set *clause* (quote (a (! b) c)))
(defn eval-clause (clause state)
  (for i 0 (dec (length state)) 1
    (set x (nth i state))
    (eval (list set (nth 0 x) (nth 1 x))))  
  (eval (cons || clause)))
(eval-clause *clause* *state*)

Fibonacci number

(defn fib (n) (if (< n 2) n (+ (fib (dec n)) (fib (- n 2)))))

dolist macro (similar to Common Lisp's dolist)

(defmacro dolist (sym lst expr ...)
  (for i 0 (dec (length lst)) 1
    (set sym (nth i lst))
    expr ...))

Updated