stdlib additions
This commit is contained in:
@@ -175,3 +175,76 @@
|
||||
|
||||
rows_str
|
||||
))
|
||||
|
||||
|
||||
; looks into lst's elements and when there is a list with first item with name, it returns the _second_ element of that list
|
||||
(defun find-val-in-list (lst name)
|
||||
(do
|
||||
(define found_val nil)
|
||||
(define i 0)
|
||||
|
||||
(define list_len (len lst))
|
||||
(while (and (>= i 0) (< i list_len))
|
||||
(define e (index lst i))
|
||||
(set! i (inc i))
|
||||
(if (= (type e) "list")
|
||||
(if (= (type (first e)) "list")
|
||||
(do (set! found_val (find-val-in-list (first e) name))
|
||||
(if (!= found_val nil) (set! i -1))
|
||||
)
|
||||
; else
|
||||
(do
|
||||
(if (= name (first e))
|
||||
(do
|
||||
(set! found_val (second e)) (set! i -1)
|
||||
)
|
||||
; else
|
||||
(if (= (type (second e)) "list")
|
||||
(do (set! found_val (find-val-in-list (second e) name))
|
||||
(if (!= found_val nil)
|
||||
(set! i -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
; else
|
||||
(if (= name e)
|
||||
(do (set! found_val (index lst (inc i))) (set! i -1))
|
||||
)
|
||||
)
|
||||
found_val
|
||||
))
|
||||
|
||||
|
||||
(defun min (l)
|
||||
(if (or (not l) (= (len l) 0))
|
||||
nil
|
||||
(do
|
||||
(define minn (index l 0))
|
||||
(define i 1)
|
||||
(while (< i (len l))
|
||||
(if (< (index l i) minn)
|
||||
(set! minn (index l i)))
|
||||
(set! i (inc i))
|
||||
)
|
||||
minn
|
||||
)
|
||||
))
|
||||
|
||||
(defun max (l)
|
||||
(if (or (not l) (= (len l) 0))
|
||||
nil
|
||||
(do
|
||||
(define maxx (index l 0))
|
||||
(define i 1)
|
||||
(while (< i (len l))
|
||||
(if (> (index l i) maxx)
|
||||
(set! maxx (index l i)))
|
||||
(set! i (inc i))
|
||||
)
|
||||
maxx
|
||||
)
|
||||
))
|
||||
Reference in New Issue
Block a user