From 288b75c1ad312bee3e020a882b04084f8b58172e Mon Sep 17 00:00:00 2001 From: VaclavT Date: Mon, 12 Apr 2021 22:43:21 +0200 Subject: [PATCH] stdlib changes --- stdlib/stdlib.lsp | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/stdlib/stdlib.lsp b/stdlib/stdlib.lsp index bb7c223..d4e5757 100644 --- a/stdlib/stdlib.lsp +++ b/stdlib/stdlib.lsp @@ -1,19 +1,11 @@ ; not a bool (defun not (x) (if x 0 1)) -; negate a number -(defun neg (n) (- 0 n)) - -; is a number positive? (defun is-pos? (n) (> n 0)) - -; is a number negative? (defun is-neg? (n) (< n 0)) -; decrement a number +(defun neg (n) (- 0 n)) (defun dec (n) (- n 1)) - -; increment a number (defun inc (n) (+ n 1)) @@ -34,6 +26,20 @@ (defun string-downcase (str) (string-case str "lower")) + +(defun string-join (lst sep) +(do + (define rslt "") + (define i 0) + (for e lst + (if (= i 0) + (define rslt (display e)) + (define rslt (+ rslt (display sep) (display e)))) + (define i (inc i))) + rslt + )) + + ; pause for interval of seconds (defun sleep (time) (system-cmd (+ "sleep " (string time)))) @@ -46,7 +52,7 @@ (defun third (l) (index l 2)) (defun fourth (l) (index l 3)) (defun fifth (l) (index l 4)) -(defun nth (i l) (index l (- i 1)) +(defun nth (i l) (index l (- i 1))) ; return 1 when list contains item otherwise 0 (defun member (lst itm) @@ -81,6 +87,8 @@ (defun make-list (size) (make-list-of size nil)) +(defun empty-list? (lst) (and (= (type lst) "list") (= (len lst) 0))) + (defun uniq (lst) (do (define rslt '()) @@ -106,7 +114,6 @@ (define rslt (push rslt ee)))) (define rslt (push rslt e)) )) - rslt ))