;;; ll-type --- ll type -*- lexical-binding: t -*- ;; ;;; Commentary: ;; ;; --------------- ;; type predicates ;; --------------- ;; ;;; Code: (require 'cl-lib) (cl-pushnew "." load-path :test #'string=) (require 'll) (defalias 'l 'listp) (defalias 's 'stringp) (defalias 'seq 'sequencep) (defalias 'v 'vectorp) (defun !l (obj) (! (l obj))) (defun !s (obj) (! (s obj))) (defun !v (obj) (! (v obj))) (defun !seq (obj) (! (seq obj))) (defun lu (obj) (& (l obj) (<= 1 (length obj)))) (defun su (obj) (& (s obj) (<= 1 (length obj)))) (defun vu (obj) (& (v obj) (<= 1 (length obj)))) (defun sequ (obj) (& (seq obj) (<= 1 (length obj)))) (defun !lu (obj) (! (lu obj))) (defun !su (obj) (! (su obj))) (defun !sequ (obj) (! (sequ obj))) ;; ------- ;; numbers ;; ------- (defun lies-in (a b c) (& (<= 0 a b) (< b c))) (defun m (x &optional y) (mod x (if (z y) 1 y))) (defun r (arg &optional devisor) (round arg (if (z devisor) 1.0 devisor))) (defalias 'n #'numberp) (defalias 'ni #'integerp) (defalias 'nf #'floatp) (defun z (num) (when (numberp num) (zerop num))) ; (zerop nil) (defun !n (obj) (! (n obj))) (defun !ni (obj) (! (ni obj))) (defun !nf (obj) (! (nf obj))) (defun !z (num) (! (z num))) (provide 'll-type) ;;; ll-type.el ends here