Moving all of my Emacs-related files into their own directory at the root of this repository.
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			854 B
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			854 B
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
;;; polymorphism.el --- Sketching my ideas for polymorphism in Elisp -*- lexical-binding: t -*-
 | 
						|
;; Author: William Carroll <wpcarro@gmail.com>
 | 
						|
 | 
						|
;;; Commentary:
 | 
						|
;; Once again: modelled after Elixir.
 | 
						|
 | 
						|
;;; Code:
 | 
						|
 | 
						|
;; More sketches of Elisp polymorphism initiative.
 | 
						|
;;
 | 
						|
;; Two macros:
 | 
						|
;; - `defprotocol'
 | 
						|
;; - `definstance'
 | 
						|
;;
 | 
						|
;; Is it just a coincidence that these two macros have the same number of
 | 
						|
;;characters or is that fate?  I say fate.
 | 
						|
;;
 | 
						|
;; (defprotocol monoid
 | 
						|
;;   :functions (empty concat))
 | 
						|
;;
 | 
						|
;; (definstance monoid vector
 | 
						|
;;   :empty
 | 
						|
;;   (lambda () [])
 | 
						|
;;   :concat
 | 
						|
;;   #'vector/concat)
 | 
						|
;;
 | 
						|
;; More sketching...
 | 
						|
;; (defun monoid/empty ()
 | 
						|
;;   "Sketch."
 | 
						|
;;   (funcall #'(,(monoid/classify)/empty)))
 | 
						|
;; (defun monoid/concat (xs)
 | 
						|
;;   "Sketch."
 | 
						|
;;   (apply #'(,(monoid/classify)/concat) args))
 | 
						|
 | 
						|
 | 
						|
(provide 'polymorphism)
 | 
						|
;;; polymorphism.el ends here
 |