about summary refs log tree commit diff
path: root/users/wpcarro/emacs/.emacs.d/wpc/tuple.el
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2022-11-25T06·19-0800
committerwpcarro <wpcarro@gmail.com>2022-11-25T07·26+0000
commit695d42615cf345bd25617f927f5697dc1d352cec (patch)
tree5337776cee854fb63c2049662f1a5d0b35a15623 /users/wpcarro/emacs/.emacs.d/wpc/tuple.el
parentba41a4c889aed180ab76351b15274138e35aa5ef (diff)
feat(wpcarro/emacs): Package tuple.el r/5313
Should delete this pkg, but bytes.el depends on it, so let's first package it,
and then we can delete it once CI passes/failures are more reliable.

Change-Id: Ifa939264c44adf302085a19790cf25225cd3cb5e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7393
Reviewed-by: wpcarro <wpcarro@gmail.com>
Tested-by: BuildkiteCI
Diffstat (limited to 'users/wpcarro/emacs/.emacs.d/wpc/tuple.el')
-rw-r--r--users/wpcarro/emacs/.emacs.d/wpc/tuple.el93
1 files changed, 0 insertions, 93 deletions
diff --git a/users/wpcarro/emacs/.emacs.d/wpc/tuple.el b/users/wpcarro/emacs/.emacs.d/wpc/tuple.el
deleted file mode 100644
index 848c6fa48b15..000000000000
--- a/users/wpcarro/emacs/.emacs.d/wpc/tuple.el
+++ /dev/null
@@ -1,93 +0,0 @@
-;;; tuple.el --- Tuple API for Elisp -*- lexical-binding: t -*-
-
-;; Author: William Carroll <wpcarro@gmail.com>
-;; Version: 0.0.1
-;; Package-Requires: ((emacs "25.1"))
-
-;;; Commentary:
-;; Work with cons cells with two elements with a familiar API for those who have
-;; worked with tuples before.
-
-;;; Code:
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Library
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(cl-defstruct tuple first second)
-
-;; Create
-(defun tuple-new ()
-  "Return an empty tuple."
-  (make-tuple :first nil
-              :second nil))
-
-(defun tuple-from (a b)
-  "Return a new tuple from A and B."
-  (make-tuple :first a
-              :second b))
-
-(defun tuple-from-dotted (dp)
-  "Convert dotted pair, DP, into a tuple."
-  (tuple-from (car dp) (cdr dp)))
-
-;; Read
-(defun tuple-first (pair)
-  "Return the first element of PAIR."
-  (tuple-first pair))
-
-(defun tuple-second (pair)
-  "Return the second element of PAIR."
-  (tuple-second pair))
-
-;; Update
-(defun tuple-map-each (f g pair)
-  "Apply F to first, G to second in PAIR."
-  (->> pair
-       (tuple-map-first f)
-       (tuple-map-second g)))
-
-(defun tuple-map (f pair)
-  "Apply F to PAIR."
-  (let ((pair-copy (copy-tuple pair)))
-    (funcall f pair-copy)))
-
-(defun tuple-map-first (f pair)
-  "Apply function F to the first element of PAIR."
-  (let ((pair-copy (copy-tuple pair)))
-    (setf (tuple-first pair-copy) (funcall f (tuple-first pair-copy)))
-    pair-copy))
-
-(defun tuple-map-second (f pair)
-  "Apply function F to the second element of PAIR."
-  (let ((pair-copy (copy-tuple pair)))
-    (setf (tuple-second pair-copy) (funcall f (tuple-second pair-copy)))
-    pair-copy))
-
-(defun tuple-set-first (a pair)
-  "Return a new tuple with the first element set as A in PAIR."
-  (tuple-map-first (lambda (_) a) pair))
-
-(defun tuple-set-second (b pair)
-  "Return a new tuple with the second element set as B in PAIR."
-  (tuple-map-second (lambda (_) b) pair))
-
-;; Delete
-(defun tuple-delete-first (pair)
-  "Return PAIR with the first element set to nil."
-  (tuple-set-first nil pair))
-
-(defun tuple-delete-second (pair)
-  "Return PAIR with the second element set to nil."
-  (tuple-set-second nil pair))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Predicates
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(defun tuple-instance? (x)
-  "Return t if X is a tuple."
-  (tuple-p x))
-
-(provide 'tuple)
-;;; tuple.el ends here