lisp 定义函数
(define sum-list (numlist)
(if (null?num-list) 0
(+(car num-list)
(sum-list (cdr num-list))))
>(sum-list '(1 2 3 4 5))
15
>(sum-list '()
0
(define fib(n)
(if(zero?n) 0
(if (= n 1) 1
(+ (fib ( - n 1))
(fib (- n 2))))))
(define fib(n)
(if (or (= n 0)
(if (= n 1)) n
(+ (fib ( - n 1))
(fib (- n 2)))))
flattern
类似python里面的flattern
>(flatten '(1 (2 "3") "4" ((5))))
(1 2 "3" "4" 5)
(define flattern (sequence)
(cond(((null?sequence) '()
((list?(car sequence))
(append (flattern (car sequence)
(flattern(cdr sequence))...)
(else (cms (car sequence)
(flattern(cdr sequence))...)
sort
判断一个列表是否为排好序的
>(sorted? '(1 2 2 4 7))
#t
>(sorted? '(1 8 2 4 7))
#f
(define sorted? (num-list)
(or (< (length num-list) 2)
(and (<= (car num-list)
(cadr num-list)
(sorted? (cdr num-list))...)
lisp的list是链表
泛型sort
>(sorted? '(1 3 4 7) <=)
#t
>(sorted? '("a" "b" "d" "c") string<)
#f
(define sorted?(seq comp)
(or(< (length seq) 2)
(and (comp(car seq)
(cadr seq))
(sorted?(cdr seq comp))))