Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
;;;
;;; http://www.cs.sfu.ca/CourseCentral/310/pwfong/Lisp/1/tutorial1.html
(defun pow(b e)
;; power. b**e
(if (= e 1)
b
(* b (pow b (- e 1)))))
(defun tri(n)
;; triangular numbers.
(if (= n 1)
1
(+ n (tri (- n 1)))))
(defun fact(n)
;; factorial
(if (= n 1)
1
(* n (fact (- n 1)))))
(defun bin(n r)
;; binomial k.
(if (or (zerop r) (> r (+ n 1)))
1
(+ (bin (- n 1) (- r 1)) (bin (- n 1) r))))
(defun rec-list-length(L)
;; recursive length of list
(if (null L)
0
(+ 1 (rec-list-length (rest l)))))
(defun list-sum(L)
;; recursive sum of list
(if (null L)
0
(+ (first L) (list-sum (rest L)))))
(defun idx(n L)
;; return L[n]
(if (null L)
nil
(if (zerop n)
(first L)
(idx (- n 1) (rest L)))))
(defun last-one(L)
;; return L[-1] non-nil
(idx (1- (rec-list-length L)) L))
(defun is-in(k L)
;; check if k in L
(if (null L)
nil
(if (equal k (first L))
t
(is-in k (rest L)))))