about summary refs log tree commit diff
path: root/emacs/.emacs.d/wpc/monoid.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/.emacs.d/wpc/monoid.el')
-rw-r--r--emacs/.emacs.d/wpc/monoid.el30
1 files changed, 0 insertions, 30 deletions
diff --git a/emacs/.emacs.d/wpc/monoid.el b/emacs/.emacs.d/wpc/monoid.el
deleted file mode 100644
index 401d63c41728..000000000000
--- a/emacs/.emacs.d/wpc/monoid.el
+++ /dev/null
@@ -1,30 +0,0 @@
-;;; monoid.el --- Working with Monoids in Elisp -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; The day has finally arrived where I'm using Monoids in Elisp.
-;;
-;; The monoid typeclass is as follows:
-;; - empty :: a
-;; - concat :: (list a) -> a
-
-;;; Code:
-
-;; TODO: Consider a prelude version that works for all Elisp types.
-(defun monoid/classify (xs)
-  "Return the type of `XS'."
-  (cond
-   ((listp xs) 'list)
-   ((vectorp xs) 'vector)
-   ((stringp xs) 'string)))
-
-
-(defun monoid/empty (xs)
-  "Return the empty monoid for the type `XS'."
-  (pcase (monoid/classify xs)
-    ('list '())
-    ('vector [])
-    ('string "")))
-
-(provide 'monoid)
-;;; monoid.el ends here