added and, or, member

change file exception to .lsp
This commit is contained in:
VaclavT 2021-02-23 21:24:52 +01:00
parent c67501e523
commit 6441356358
1 changed files with 49 additions and 21 deletions

View File

@ -1,25 +1,15 @@
; quicksort
(defun quick-sort (l)
(if (<= (len l) 1)
l
(do
(define pivot (first l))
(+
(quick-sort (filter (lambda (n) (> pivot n)) l))
(list pivot)
(quick-sort (tail (filter (lambda (n) (<= pivot n)) l)))
))
))
; decrement a number
(defun dec (n) (- n 1))
; increment a number
(defun inc (n) (+ n 1))
; not a bool
(defun not (x) (if x 0 1))
; logical and
(defun and (a b) (if a (if b 1 0) 0))
; logical or
(defun or (a b) (if a 1 (if b 1 0)))
; negate a number
(defun neg (n) (- 0 n))
@ -29,6 +19,14 @@
; is a number negative?
(defun is-neg? (n) (< n 0))
; decrement a number
(defun dec (n) (- n 1))
; increment a number
(defun inc (n) (+ n 1))
; return second element of list
(defun second (l) (index l 1))
@ -41,6 +39,39 @@
; return fifth element of list
(defun fifth (l) (index l 4))
; return 1 when list contains item otherwise 0
(defun member (lst itm)
(do
; TODO check if is empty list
(define found_index -1)
(define i 0)
(define lst_len (len lst))
(while (and (< i lst_len) (= found_index -1))
(if (= itm (index lst i))
(define found_index i)
(define i (+ i 1))
))
; TODO when nil will be implemented itm / nil
(if (!= -1 found_index)
1
0)
))
; quicksort
(defun quick-sort (l)
(if (<= (len l) 1)
l
(do
(define pivot (first l))
(+
(quick-sort (filter (lambda (n) (> pivot n)) l))
(list pivot)
(quick-sort (tail (filter (lambda (n) (<= pivot n)) l)))
))
))
; from list of lists creates csv string
@ -64,6 +95,3 @@
rows_str
))
(defun setq (var val) (define var val))