Skip to content
This repository has been archived by the owner on Aug 30, 2021. It is now read-only.

skeeto/predd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Elisp Multimethods

This library provides Clojure-style multimethods for Emacs Lisp, supporting multiple dispatch over an ad hoc type hierarchy.

See also: Clojure-style Multimethods in Emacs Lisp.

Example Usage

;; `vector' is the dispatch function for the multimethod `show'

(predd-defmulti show #'vector
  "Return how an animal should respond when shown another animal.")

(predd-defmethod show [:cat :mouse] (a b)
  :chase)

(predd-defmethod show [:cat :dog] (a b)
  :run)

(predd-defmethod show [:dog :cat] (a b)
  :bark)

;; Call the multimethod on some different types

(show :cat :dog)    ; => :run
(show :cat :mouse)  ; => :chase

;; Declare that a tabby is a specific type of cat.

(predd-derive :tabby :cat)

(show :dog :tabby)  ; => :bark

About

Multimethods for Emacs Lisp

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published