about summary refs log tree commit diff
path: root/users/wpcarro/emacs/pkgs/symbol/symbol.el
blob: 4b16351831c9918edeaecc200461e3427501c5c8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
;;; symbol.el --- Library for working with symbols -*- lexical-binding: t -*-

;; Author: William Carroll <wpcarro@gmail.com>
;; Version: 0.0.1
;; Package-Requires: ((emacs "24"))

;;; Commentary:
;; Library for working with symbols.

;;; Code:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Library
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun symbol-to-string (symbol)
  "Map `SYMBOL' into a string."
  (symbol-name symbol))

(defun symbol-from-string (string)
  "Map `STRING' into a symbol."
  (intern string))

(defun symbol-as-string (f x)
  "Treat the symbol, X, as a string while applying F to it.
Coerce back to a symbol on the way out."
  (symbol-from-string (funcall f (symbol-to-string x))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Predicates
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun symbol-instance? (x)
  "Return t if X is a symbol."
  (symbolp x))

(provide 'symbol)
;;; symbol.el ends here