diff options
-rw-r--r-- | configs/shared/.emacs.d/wpc/list.el | 30 | ||||
-rw-r--r-- | configs/shared/.emacs.d/wpc/number.el | 26 | ||||
-rw-r--r-- | configs/shared/.emacs.d/wpc/series.el | 8 |
3 files changed, 38 insertions, 26 deletions
diff --git a/configs/shared/.emacs.d/wpc/list.el b/configs/shared/.emacs.d/wpc/list.el index bc89c1326473..bcab3df09cde 100644 --- a/configs/shared/.emacs.d/wpc/list.el +++ b/configs/shared/.emacs.d/wpc/list.el @@ -49,7 +49,9 @@ ;; Dependencies ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(require 'prelude) +;; TODO: Move `prelude/assert' elsewhere so that I can require it without +;; introducing the circular dependency of list.el -> prelude.el -> list.el. +;;(require 'prelude) (require 'dash) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -179,19 +181,19 @@ Be leery of using this with things like alists. Many data structures in Elisp ;; Tests ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(when list/tests? - (prelude/assert - (= 0 - (list/length '()))) - (prelude/assert - (= 5 - (list/length '(1 2 3 4 5)))) - (prelude/assert - (= 16 - (list/reduce 1 (lambda (x acc) (+ x acc)) '(1 2 3 4 5)))) - (prelude/assert - (equal '(2 4 6 8 10) - (list/map (lambda (x) (* x 2)) '(1 2 3 4 5))))) +;; (when list/tests? +;; (prelude/assert +;; (= 0 +;; (list/length '()))) +;; (prelude/assert +;; (= 5 +;; (list/length '(1 2 3 4 5)))) +;; (prelude/assert +;; (= 16 +;; (list/reduce 1 (lambda (x acc) (+ x acc)) '(1 2 3 4 5)))) +;; (prelude/assert +;; (equal '(2 4 6 8 10) +;; (list/map (lambda (x) (* x 2)) '(1 2 3 4 5))))) (provide 'list) ;;; list.el ends here diff --git a/configs/shared/.emacs.d/wpc/number.el b/configs/shared/.emacs.d/wpc/number.el index 81d3c5d2b935..f496349050d9 100644 --- a/configs/shared/.emacs.d/wpc/number.el +++ b/configs/shared/.emacs.d/wpc/number.el @@ -106,16 +106,18 @@ While this function is undeniably trivial, I have unintentionally done (- 1 x) ;; TODO: Does this belong in a math module? Is math too vague? Or is number ;; too vague? -(defun number/factorial (x) - "Return factorial of `X'." - (cond - ((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 #'*))))) +;; 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) +;; "Return factorial of `X'." +;; (cond +;; ((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 #'*))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Tests @@ -132,8 +134,8 @@ While this function is undeniably trivial, I have unintentionally done (- 1 x) (number/whole? 0)) (prelude/assert (number/integer? 10)) - (prelude/assert - (= 120 (number/factorial 5))) + ;; (prelude/assert + ;; (= 120 (number/factorial 5))) (prelude/assert (number/even? 6)) (prelude/refute diff --git a/configs/shared/.emacs.d/wpc/series.el b/configs/shared/.emacs.d/wpc/series.el index 977ffc50261a..55e97f278984 100644 --- a/configs/shared/.emacs.d/wpc/series.el +++ b/configs/shared/.emacs.d/wpc/series.el @@ -18,8 +18,16 @@ ;;; Code: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Dependencies +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (require 'number) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Library +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (defun series/range (beg end) "Create a list of numbers from `BEG' to `END'. This is an inclusive number range." |