X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Flisp%2Fao_lisp_const.lisp;h=861a4fc80eed91314a76453f63528fef4d21340e;hp=191ef00581ff2b602fa3a295cb1455fb2601a258;hb=12a1f6ad48f2b924f71239effeb90afca75a090f;hpb=5f8f0ed5cd5d4b4f793c602ed09f9b4bdb98f7e8 diff --git a/src/lisp/ao_lisp_const.lisp b/src/lisp/ao_lisp_const.lisp index 191ef005..861a4fc8 100644 --- a/src/lisp/ao_lisp_const.lisp +++ b/src/lisp/ao_lisp_const.lisp @@ -60,10 +60,17 @@ (defun caddr (l) (car (cdr (cdr l)))) -(defun nth (list n) - (cond ((= n 0) (car list)) - ((nth (cdr list) (1- n))) - ) +(define list-tail (lambda (x k) + (if (zero? k) + x + (list-tail (cdr x (- k 1))) + ) + ) + ) + +(define list-ref (lambda (x k) + (car (list-tail x k)) + ) ) ; simple math operators @@ -264,6 +271,7 @@ (let ((x 1)) x) +(define let* let) ; boolean operators (define or (lexpr (l)