More Elisp linting

This should cover most of the remaining linting errors. After this, I expect
fewer than ten linting errors.
This commit is contained in:
William Carroll 2020-09-01 10:17:43 +01:00
parent a638e15c0d
commit fb5ec068dd
47 changed files with 1049 additions and 989 deletions

View file

@ -40,40 +40,40 @@
;; Library
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defconst number/test? t
(defconst number-test? t
"When t, run the test suite defined herein.")
;; TODO: What about int.el?
;; TODO: How do we handle a number typeclass?
(defun number/positive? (x)
(defun number-positive? (x)
"Return t if `X' is a positive number."
(> x 0))
(defun number/negative? (x)
(defun number-negative? (x)
"Return t if `X' is a positive number."
(< x 0))
;; TODO: Don't rely on this. Need to have 10.0 and 10 behave similarly.
(defun number/float? (x)
(defun number-float? (x)
"Return t if `X' is a floating point number."
(floatp x))
(defun number/natural? (x)
(defun number-natural? (x)
"Return t if `X' is a natural number."
(and (number/positive? x)
(not (number/float? x))))
(and (number-positive? x)
(not (number-float? x))))
(defun number/whole? (x)
(defun number-whole? (x)
"Return t if `X' is a whole number."
(or (= 0 x)
(number/natural? x)))
(number-natural? x)))
(defun number/integer? (x)
(defun number-integer? (x)
"Return t if `X' is an integer."
(or (number/whole? x)
(number/natural? (- x))))
(or (number-whole? x)
(number-natural? (- x))))
;; TODO: How defensive should these guards be? Should we assert that the inputs
;; are integers before checking evenness or oddness?
@ -83,28 +83,28 @@
;; TODO: How should rational numbers be handled? Lisp is supposedly famous for
;; its handling of rational numbers.
;; TODO: `calc-mode' supports rational numbers as "1:2" meaning "1/2"
;; (defun number/rational? (x))
;; (defun number-rational? (x))
;; TODO: Can or should I support real numbers?
;; (defun number/real? (x))
;; (defun number-real? (x))
(defun number/even? (x)
(defun number-even? (x)
"Return t if `X' is an even number."
(or (= 0 x)
(= 0 (mod x 2))))
(defun number/odd? (x)
(defun number-odd? (x)
"Return t if `X' is an odd number."
(not (number/even? x)))
(not (number-even? x)))
(defun number/dec (x)
(defun number-dec (x)
"Subtract one from `X'.
While this function is undeniably trivial, I have unintentionally done (- 1 x)
when in fact I meant to do (- x 1) that I figure it's better for this function
to exist, and for me to train myself to reach for it and its inc counterpart."
(- x 1))
(defun number/inc (x)
(defun number-inc (x)
"Add one to `X'."
(+ x 1))
@ -112,46 +112,46 @@ While this function is undeniably trivial, I have unintentionally done (- 1 x)
;; too vague?
;; TODO: Resolve the circular dependency that this introduces with series.el,
;; and then re-enable this function and its tests below.
;; (defun number/factorial (x)
;; (defun number-factorial (x)
;; "Return factorial of `X'."
;; (cond
;; ((number/negative? x) (error "Will not take factorial of negative numbers"))
;; ((number-negative? x) (error "Will not take factorial of negative numbers"))
;; ((= 0 x) 1)
;; ;; NOTE: Using `series/range' introduces a circular dependency because:
;; ;; series -> number -> series. Conceptually, however, this should be
;; ;; perfectly acceptable.
;; (t (->> (series/range 1 x)
;; (list/reduce 1 #'*)))))
;; (list-reduce 1 #'*)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Tests
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(when number/test?
(when number-test?
(prelude-assert
(number/positive? 10))
(number-positive? 10))
(prelude-assert
(number/natural? 10))
(number-natural? 10))
(prelude-assert
(number/whole? 10))
(number-whole? 10))
(prelude-assert
(number/whole? 0))
(number-whole? 0))
(prelude-assert
(number/integer? 10))
(number-integer? 10))
;; (prelude-assert
;; (= 120 (number/factorial 5)))
;; (= 120 (number-factorial 5)))
(prelude-assert
(number/even? 6))
(number-even? 6))
(prelude-refute
(number/odd? 6))
(number-odd? 6))
(prelude-refute
(number/positive? -10))
(number-positive? -10))
(prelude-refute
(number/natural? 10.0))
(number-natural? 10.0))
(prelude-refute
(number/natural? -10))
(number-natural? -10))
(prelude-refute
(number/natural? -10.0)))
(number-natural? -10.0)))
(provide 'number)
;;; number.el ends here