Skip to content

Instantly share code, notes, and snippets.

@ELLIOTTCABLE
Forked from glowcoil/gist:440930
Created June 16, 2010 18:13
Show Gist options
  • Save ELLIOTTCABLE/441059 to your computer and use it in GitHub Desktop.
Save ELLIOTTCABLE/441059 to your computer and use it in GitHub Desktop.
(defclass rock ()())
(defclass paper ()())
(defclass scissors ()())
(defgeneric r-p-s (a b))
(defmethod r-p-s ((r rock) (p paper)) 'paper)
(defmethod r-p-s ((r rock) (s scissors)) 'rock)
(defmethod r-p-s ((p paper) (s scissors)) 'scissors)
rock ← list clone()
paper ← list clone()
scissors ← list clone()
(rock, paper) compete ← routine
result(`select { @isa paper })
(paper, scissors) compete ← routine
result(`select { @isa scissors })
(scissors, rock) compete ← routine
result(`select { @isa rock })
“--- Usage:”
john’s ← rock clone()
bob’s ← paper clone()
(john’s, bob’s) compete()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment