tvl-depot/configs/shared/.emacs.d/wpc/monoid.el
William Carroll 6b456c1b7a Massive configuration overhaul
Currently paying the price of months of non-diligent git usage.

Here's what has changed.

- Theming support in Gvcci and wpgtk
- Dropping support for i3
- Supporting EXWM
- Many Elisp modules
- Collapsed redundant directories in ./configs
2019-12-24 15:21:34 +00:00

30 lines
711 B
EmacsLisp

;;; 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