Genesis

In the beginning Man created the computer. Now the computer was
formless and empty, darkness was over the surface of the deep, and the
Spirit of Man was hovering over the terminal.

And Man said, "Let there be lisp," and there was lisp. Man saw that
the lisp was good.

---

welcome

⚡ ⚕ Welcome to the academy. ⚛ ♬

---

readme

The recommended way to become familiar with the academy is to start
with the first commit either on github or with local git tools and to
work your way through commits attempting to understand at least the
jist if not the entirety of what is going on. Or, alternatively, you
could just fire it up and with the help of HELP, explore.

---

random-element

> (dotimes (x 100) (princ (random-element '(see jack run))))
SEEJACKJACKRUNJACKRUNJACKJACKJACKSEEJACKRUNJACKSEEJACKJACKJACKRUNJACKSEERUNJACKRUNRUNJACKSEEJACKSEEJACKSEERUNSEEJACKRUNRUNRUNSEERUNRUNJACKRUNJACKJACKSEERUNRUNSEERUNJACKJACKRUNJACKRUNJACKJACKSEERUNSEERUNRUNRUNJACKRUNJACKSEEJACKJACKSEEJACKJACKSEESEERUNSEESEESEERUNJACKRUNSEESEESEERUNSEESEEJACKJACKSEERUNSEESEESEEJACKJACKRUNSEERUNRUNSEEJACKNIL

---

ensure-list

Pay attention! A very useful utility function is being introduced here.

> (ensure-list 'a)
(A)
> (ensure-list '(a))
(A)

Often used in looping and mapping to allow for handling both lists and singletons.

> (defun foo (arg)
    (mapc 'princ (ensure-list arg)))

> (foo 1)
1

> (foo '(2 3))
23

---

unicode

There are many sets of unicode symbols easily entered with english names.

> (format t "~{~A~^ ~}~%" '(#\maltese_cross #\black_hexagon #\floral_heart))
✠ ⬢ ❦

> (show-unicode-characters :i-ching-symbols)

I-CHING-SYMBOLS

4DC0 : ䷀   #\HEXAGRAM_FOR_THE_CREATIVE_HEAVEN
4DC1 : ䷁   #\HEXAGRAM_FOR_THE_RECEPTIVE_EARTH
4DC2 : ䷂   #\HEXAGRAM_FOR_DIFFICULTY_AT_THE_BEGINNING
4DC3 : ䷃   #\HEXAGRAM_FOR_YOUTHFUL_FOLLY
4DC4 : ䷄   #\HEXAGRAM_FOR_WAITING
4DC5 : ䷅   #\HEXAGRAM_FOR_CONFLICT
4DC6 : ䷆   #\HEXAGRAM_FOR_THE_ARMY
4DC7 : ䷇   #\HEXAGRAM_FOR_HOLDING_TOGETHER
4DC8 : ䷈   #\HEXAGRAM_FOR_SMALL_TAMING
4DC9 : ䷉   #\HEXAGRAM_FOR_TREADING
4DCA : ䷊   #\HEXAGRAM_FOR_PEACE
4DCB : ䷋   #\HEXAGRAM_FOR_STANDSTILL
4DCC : ䷌   #\HEXAGRAM_FOR_FELLOWSHIP
4DCD : ䷍   #\HEXAGRAM_FOR_GREAT_POSSESSION
4DCE : ䷎   #\HEXAGRAM_FOR_MODESTY
4DCF : ䷏   #\HEXAGRAM_FOR_ENTHUSIASM
4DD0 : ䷐   #\HEXAGRAM_FOR_FOLLOWING
4DD1 : ䷑   #\HEXAGRAM_FOR_WORK_ON_THE_DECAYED
4DD2 : ䷒   #\HEXAGRAM_FOR_APPROACH
4DD3 : ䷓   #\HEXAGRAM_FOR_CONTEMPLATION
4DD4 : ䷔   #\HEXAGRAM_FOR_BITING_THROUGH
4DD5 : ䷕   #\HEXAGRAM_FOR_GRACE
4DD6 : ䷖   #\HEXAGRAM_FOR_SPLITTING_APART
4DD7 : ䷗   #\HEXAGRAM_FOR_RETURN
4DD8 : ䷘   #\HEXAGRAM_FOR_INNOCENCE
4DD9 : ䷙   #\HEXAGRAM_FOR_GREAT_TAMING
4DDA : ䷚   #\HEXAGRAM_FOR_MOUTH_CORNERS
4DDB : ䷛   #\HEXAGRAM_FOR_GREAT_PREPONDERANCE
4DDC : ䷜   #\HEXAGRAM_FOR_THE_ABYSMAL_WATER
4DDD : ䷝   #\HEXAGRAM_FOR_THE_CLINGING_FIRE
4DDE : ䷞   #\HEXAGRAM_FOR_INFLUENCE
4DDF : ䷟   #\HEXAGRAM_FOR_DURATION
4DE0 : ䷠   #\HEXAGRAM_FOR_RETREAT
4DE1 : ䷡   #\HEXAGRAM_FOR_GREAT_POWER
4DE2 : ䷢   #\HEXAGRAM_FOR_PROGRESS
4DE3 : ䷣   #\HEXAGRAM_FOR_DARKENING_OF_THE_LIGHT
4DE4 : ䷤   #\HEXAGRAM_FOR_THE_FAMILY
4DE5 : ䷥   #\HEXAGRAM_FOR_OPPOSITION
4DE6 : ䷦   #\HEXAGRAM_FOR_OBSTRUCTION
4DE7 : ䷧   #\HEXAGRAM_FOR_DELIVERANCE
4DE8 : ䷨   #\HEXAGRAM_FOR_DECREASE
4DE9 : ䷩   #\HEXAGRAM_FOR_INCREASE
4DEA : ䷪   #\HEXAGRAM_FOR_BREAKTHROUGH
4DEB : ䷫   #\HEXAGRAM_FOR_COMING_TO_MEET
4DEC : ䷬   #\HEXAGRAM_FOR_GATHERING_TOGETHER
4DED : ䷭   #\HEXAGRAM_FOR_PUSHING_UPWARD
4DEE : ䷮   #\HEXAGRAM_FOR_OPPRESSION
4DEF : ䷯   #\HEXAGRAM_FOR_THE_WELL
4DF0 : ䷰   #\HEXAGRAM_FOR_REVOLUTION
4DF1 : ䷱   #\HEXAGRAM_FOR_THE_CAULDRON
4DF2 : ䷲   #\HEXAGRAM_FOR_THE_AROUSING_THUNDER
4DF3 : ䷳   #\HEXAGRAM_FOR_THE_KEEPING_STILL_MOUNTAIN
4DF4 : ䷴   #\HEXAGRAM_FOR_DEVELOPMENT
4DF5 : ䷵   #\HEXAGRAM_FOR_THE_MARRYING_MAIDEN
4DF6 : ䷶   #\HEXAGRAM_FOR_ABUNDANCE
4DF7 : ䷷   #\HEXAGRAM_FOR_THE_WANDERER
4DF8 : ䷸   #\HEXAGRAM_FOR_THE_GENTLE_WIND
4DF9 : ䷹   #\HEXAGRAM_FOR_THE_JOYOUS_LAKE
4DFA : ䷺   #\HEXAGRAM_FOR_DISPERSION
4DFB : ䷻   #\HEXAGRAM_FOR_LIMITATION
4DFC : ䷼   #\HEXAGRAM_FOR_INNER_TRUTH
4DFD : ䷽   #\HEXAGRAM_FOR_SMALL_PREPONDERANCE
4DFE : ䷾   #\HEXAGRAM_FOR_AFTER_COMPLETION
4DFF : ䷿   #\HEXAGRAM_FOR_BEFORE_COMPLETION

---

petals-around-the-rose

> (petals-around-the-rose)
⚃ ⚂ ⚃ ⚄ ⚃ ⚃
6

---

random-do

Our first macro!

> (dotimes (x 10) (random-do (princ 'hop) (princ 'skip) (princ 'jump)))
HOPSKIPSKIPHOPJUMPSKIPSKIPJUMPSKIPSKIP

The random-do above expands at read time into

  (CASE (RANDOM 3)
    (0 (PRINC 'HOP))
    (1 (PRINC 'SKIP))
    (2 (PRINC 'JUMP)))

---

power-of-two-p

> (dotimes (x 64) (princ (if (power-of-two-p (1+ x)) #\flower " ")))
⚘⚘ ⚘   ⚘       ⚘               ⚘                               ⚘

---

hilbert-space-filling-curve

> (hilbert-space-filling-curve)
─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─
┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐
│┌┐│┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐│┌┐│
└┘└┘│└─┘└─┘│└┘└┘│└─┘└─┘│└┘└┘│└─┘└─┘│└┘└┘│└─┘└─┘│└┘└┘│└─┘└─┘│└┘└┘
┌┐┌┐│┌─┐┌─┐│┌┐┌┐└┐┌──┐┌┘┌┐┌┐│┌─┐┌─┐│┌┐┌┐└┐┌──┐┌┘┌┐┌┐│┌─┐┌─┐│┌┐┌┐
│└┘│└┘┌┘└┐└┘│└┘│┌┘└┐┌┘└┐│└┘│└┘┌┘└┐└┘│└┘│┌┘└┐┌┘└┐│└┘│└┘┌┘└┐└┘│└┘│
└┐┌┘┌┐└┐┌┘┌┐└┐┌┘│┌┐││┌┐│└┐┌┘┌┐└┐┌┘┌┐└┐┌┘│┌┐││┌┐│└┐┌┘┌┐└┐┌┘┌┐└┐┌┘
┌┘└─┘└─┘└─┘└─┘└┐└┘└┘└┘└┘┌┘└─┘└─┘└─┘└─┘└┐└┘└┘└┘└┘┌┘└─┘└─┘└─┘└─┘└┐
│┌─┐┌─┐┌┐┌─┐┌─┐│┌┐┌┐┌┐┌┐└┐┌─┐┌─┐┌─┐┌─┐┌┘┌┐┌┐┌┐┌┐│┌─┐┌─┐┌┐┌─┐┌─┐│
└┘┌┘└┐└┘└┘┌┘└┐└┘│└┘││└┘│┌┘└┐└┘┌┘└┐└┘┌┘└┐│└┘││└┘│└┘┌┘└┐└┘└┘┌┘└┐└┘
┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐└┐┌┘└┐┌┘│┌┐│┌┐└┐┌┘┌┐│┌┐│└┐┌┘└┐┌┘┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐
│└─┘└─┘││└─┘└─┘│┌┘└──┘└┐└┘└┘│└─┘└─┘│└┘└┘┌┘└──┘└┐│└─┘└─┘││└─┘└─┘│
└┐┌──┐┌┘└┐┌──┐┌┘│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│└┐┌──┐┌┘└┐┌──┐┌┘
┌┘└┐┌┘└┐┌┘└┐┌┘└┐└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘┌┘└┐┌┘└┐┌┘└┐┌┘└┐
│┌┐││┌┐││┌┐││┌┐│┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐│┌┐││┌┐││┌┐││┌┐│
└┘└┘└┘└┘└┘└┘└┘└┘│└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘│└┘└┘└┘└┘└┘└┘└┘└┘
┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐│┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐│┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
│└┘││└┘││└┘││└┘│└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘│└┘││└┘││└┘││└┘│
└┐┌┘└┐┌┘└┐┌┘└┐┌┘┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐└┐┌┘└┐┌┘└┐┌┘└┐┌┘
┌┘└──┘└┐┌┘└──┘└┐│└─┘└─┘│└┘└┘│└─┘└─┘│└┘└┘│└─┘└─┘│┌┘└──┘└┐┌┘└──┘└┐
│┌─┐┌─┐││┌─┐┌─┐│└┐┌──┐┌┘┌┐┌┐│┌─┐┌─┐│┌┐┌┐└┐┌──┐┌┘│┌─┐┌─┐││┌─┐┌─┐│
└┘┌┘└┐└┘└┘┌┘└┐└┘┌┘└┐┌┘└┐│└┘│└┘┌┘└┐└┘│└┘│┌┘└┐┌┘└┐└┘┌┘└┐└┘└┘┌┘└┐└┘
┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐│┌┐││┌┐│└┐┌┘┌┐└┐┌┘┌┐└┐┌┘│┌┐││┌┐│┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐
│└─┘└─┘└┘└─┘└─┘│└┘└┘└┘└┘┌┘└─┘└─┘└─┘└─┘└┐└┘└┘└┘└┘│└─┘└─┘└┘└─┘└─┘│
└┐┌─┐┌─┐┌─┐┌─┐┌┘┌┐┌┐┌┐┌┐└┐┌─┐┌─┐┌─┐┌─┐┌┘┌┐┌┐┌┐┌┐└┐┌─┐┌─┐┌─┐┌─┐┌┘
┌┘└┐└┘┌┘└┐└┘┌┘└┐│└┘││└┘│┌┘└┐└┘┌┘└┐└┘┌┘└┐│└┘││└┘│┌┘└┐└┘┌┘└┐└┘┌┘└┐
│┌┐│┌┐└┐┌┘┌┐│┌┐│└┐┌┘└┐┌┘│┌┐│┌┐└┐┌┘┌┐│┌┐│└┐┌┘└┐┌┘│┌┐│┌┐└┐┌┘┌┐│┌┐│
└┘└┘│└─┘└─┘│└┘└┘┌┘└──┘└┐└┘└┘│└─┘└─┘│└┘└┘┌┘└──┘└┐└┘└┘│└─┘└─┘│└┘└┘
┌┐┌┐│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│┌┐┌┐
│└┘│└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘│└┘│
└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘
┌┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└┐
│┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐│
└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘┌┘└┐└┘
┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐│┌┐│┌┐└┐┌┘┌┐
│└─┘└─┘│└┘└┘│└─┘└─┘│└┘└┘│└─┘└─┘││└─┘└─┘│└┘└┘│└─┘└─┘│└┘└┘│└─┘└─┘│
└┐┌──┐┌┘┌┐┌┐│┌─┐┌─┐│┌┐┌┐└┐┌──┐┌┘└┐┌──┐┌┘┌┐┌┐│┌─┐┌─┐│┌┐┌┐└┐┌──┐┌┘
┌┘└┐┌┘└┐│└┘│└┘┌┘└┐└┘│└┘│┌┘└┐┌┘└┐┌┘└┐┌┘└┐│└┘│└┘┌┘└┐└┘│└┘│┌┘└┐┌┘└┐
│┌┐││┌┐│└┐┌┘┌┐└┐┌┘┌┐└┐┌┘│┌┐││┌┐││┌┐││┌┐│└┐┌┘┌┐└┐┌┘┌┐└┐┌┘│┌┐││┌┐│
└┘└┘└┘└┘┌┘└─┘└─┘└─┘└─┘└┐└┘└┘└┘└┘└┘└┘└┘└┘┌┘└─┘└─┘└─┘└─┘└┐└┘└┘└┘└┘
┌┐┌┐┌┐┌┐└┐┌─┐┌─┐┌─┐┌─┐┌┘┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐└┐┌─┐┌─┐┌─┐┌─┐┌┘┌┐┌┐┌┐┌┐
│└┘││└┘│┌┘└┐└┘┌┘└┐└┘┌┘└┐│└┘││└┘││└┘││└┘│┌┘└┐└┘┌┘└┐└┘┌┘└┐│└┘││└┘│
└┐┌┘└┐┌┘│┌┐│┌┐└┐┌┘┌┐│┌┐│└┐┌┘└┐┌┘└┐┌┘└┐┌┘│┌┐│┌┐└┐┌┘┌┐│┌┐│└┐┌┘└┐┌┘
┌┘└──┘└┐└┘└┘│└─┘└─┘│└┘└┘┌┘└──┘└┐┌┘└──┘└┐└┘└┘│└─┘└─┘│└┘└┘┌┘└──┘└┐
│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐││┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│┌┐┌┐│┌─┐┌─┐│
└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘│└┘│└┘┌┘└┐└┘
┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐└┐┌┘┌┐
│└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘││└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘│
└┐┌─┐┌─┐┌─┐┌─┐┌──┐┌─┐┌─┐┌─┐┌─┐┌┘└┐┌─┐┌─┐┌─┐┌─┐┌──┐┌─┐┌─┐┌─┐┌─┐┌┘
┌┘└┐└┘┌┘└┐└┘┌┘└┐┌┘└┐└┘┌┘└┐└┘┌┘└┐┌┘└┐└┘┌┘└┐└┘┌┘└┐┌┘└┐└┘┌┘└┐└┘┌┘└┐
│┌┐│┌┐└┐┌┘┌┐│┌┐││┌┐│┌┐└┐┌┘┌┐│┌┐││┌┐│┌┐└┐┌┘┌┐│┌┐││┌┐│┌┐└┐┌┘┌┐│┌┐│
└┘└┘│└─┘└─┘│└┘└┘└┘└┘│└─┘└─┘│└┘└┘└┘└┘│└─┘└─┘│└┘└┘└┘└┘│└─┘└─┘│└┘└┘
┌┐┌┐│┌─┐┌─┐│┌┐┌┐┌┐┌┐│┌─┐┌─┐│┌┐┌┐┌┐┌┐│┌─┐┌─┐│┌┐┌┐┌┐┌┐│┌─┐┌─┐│┌┐┌┐
│└┘│└┘┌┘└┐└┘│└┘││└┘│└┘┌┘└┐└┘│└┘││└┘│└┘┌┘└┐└┘│└┘││└┘│└┘┌┘└┐└┘│└┘│
└┐┌┘┌┐└┐┌┘┌┐└┐┌┘└┐┌┘┌┐└┐┌┘┌┐└┐┌┘└┐┌┘┌┐└┐┌┘┌┐└┐┌┘└┐┌┘┌┐└┐┌┘┌┐└┐┌┘
┌┘└─┘└─┘└─┘└─┘└┐┌┘└─┘└─┘└─┘└─┘└┐┌┘└─┘└─┘└─┘└─┘└┐┌┘└─┘└─┘└─┘└─┘└┐
│┌─┐┌─┐┌┐┌─┐┌─┐││┌─┐┌─┐┌┐┌─┐┌─┐││┌─┐┌─┐┌┐┌─┐┌─┐││┌─┐┌─┐┌┐┌─┐┌─┐│
└┘┌┘└┐└┘└┘┌┘└┐└┘└┘┌┘└┐└┘└┘┌┘└┐└┘└┘┌┘└┐└┘└┘┌┘└┐└┘└┘┌┘└┐└┘└┘┌┘└┐└┘
┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐┌┐└┐┌┘┌┐
│└─┘└─┘││└─┘└─┘││└─┘└─┘││└─┘└─┘││└─┘└─┘││└─┘└─┘││└─┘└─┘││└─┘└─┘│
└┐┌──┐┌┘└┐┌──┐┌┘└┐┌──┐┌┘└┐┌──┐┌┘└┐┌──┐┌┘└┐┌──┐┌┘└┐┌──┐┌┘└┐┌──┐┌┘
┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐┌┘└┐
│┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐││┌┐│
└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘

---

random-booleans

> (loop for el in (random-booleans (* 80 15))
            for x from 1
            do (princ (if el #\full_block #\space))
               (when (zerop (mod x 80)) (fresh-line)))

  ███ ███ █  █ █    ███ █  ██ █  █ █      ███ █          ██   █ █  █████  █  █
 ██ ███       ███  █    ███████     █ ███████ ██   ███    ███ ██████   █   ██
█  █ ███  █    █ ██   █  █ ██    ██  █ ███ █  █ ███    ██  ██ ████ ███   █  █ █
██ █ ███ ██ ████  █   █  █ ██ ██ █  █ ██    █████   ███ ██   █ █   ██ █ █ ███  █
███   █  █ ████ ██     █ █ ███ ██ ██  █   █        █ █   ███████████  █  █████
█  ██  ███████   ██ █   █ ██ █  ███ ██  ████ ███████ ████████ █  █  ██ ██  █ █
████ ██ ██ █ ██████  █   █        ██ █ █ ██  █    █ ██ █ █ █ █   █ ████  █ ██ ██
 ██ ███  ██   █ █ █  ██    ██  ████  ███   █ █  █ ███  ███ █     █  █ ███████
████  ██ █   ██ ███  █ █   █  ██      █ ███████ ██████     █  ████ █ █████ ████
█ █ ███  █    ██  █  █ ██  ███  █ █  █ ███ ██ ███ ██  █ █ █     █████   ███
██    █ ███████        ██   ██ ███  █ ██   █ ████   █    ███████ ██   ████ █ █
██    █ █ ██████ █ █ █ ████  █   ██  ██  ██  █   ███   █  ██ █    █ ████  █ █ ██
   █ ███  ██ █  █ █ ██   ██ █  ███ █  ███  ███   █ █   ████ ██ █  ████  █  █ █
    ██ ██    ██ █ █ █ █   █ █ ██ █ █  ██████  █ █ ██  █  █████ ███  █ █
█ ███  █  ████ ███ █ █ █ ███   █ █ █ ███  ██  ███ █   ██ ██  ██ █ █  ███  █  █

---

help

> (help)
HELP                         Lisp helps those who help themselves.
PETALS-AROUND-THE-ROSE       Play the petals around the rose dice game. Guess the rules.
HILBERT-SPACE-FILLING-CURVE  Draw one of Hilbert's continuous fractal space-filling curves.
SHOW-UNICODE-CHARACTERS      Show many sets of unicode arrows, dingbats, boxes, i-ching, etc.

---

war

> (war)
A strange game. The only winning move is not to play.

---

life

> (life)
 
 
 
 
 
 
 
                 ▄▄▄
               ▄▀  █
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                 ▄█▄
                ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                ▄▀▀▀▄
                ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
 
 
 
                  ▄
                ▄▀▀▀▄
                ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
 
 
 
                 ▄▄▄
                ▄▀▀▀▄
                ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
 
 
 
                 ▄▀▄
                █   █
                ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
 
 
 
                 ▄█▄
               ▄█▀ ▀█▄
                ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
 
 
 
                ▄▀▀▀▄
               █     █
               ▀▀▀ ▀▀▀
 
 
 
 
 
 
 
 
 
 
 
 
                  ▄
                ▄███▄
              ▄█▀   ▀█▄
               ▀█   █▀
 
 
 
 
 
 
 
 
 
 
 
 
                 ▄▄▄
               ▄▀   ▀▄
              █   ▀   █
              ▀▄█   █▄▀
 
 
 
 
 
 
 
 
 
 
 
 
                 ▄█▄
               ▄▀▀▀▀▀▄
             ▄█▀     ▀█▄
              ▀▄█   █▄▀
 
 
 
 
 
 
 
 
 
 
 
 
                ▄▀▀▀▄
              ▄▄▀▄▄▄▀▄▄
             █ ▀     ▀ █
             ▀▀▄█   █▄▀▀
 
 
 
 
 
 
 
 
 
 
 
                  ▄
                ▄▀█▀▄
              ▄▄▀▄█▄▀▄▄
            ▄█ █▀ ▀ ▀█ █▄
             ▀█▄█   █▄█▀
 
 
 
 
 
 
 
 
 
 
 
                 ▄▄▄
                ▄   ▄
              ▄ ▀   ▀ ▄
            █▀   ▄▀▄   ▀█
            ▀▄▄ █   █ ▄▄▀
               ▀     ▀
 
 
 
 
 
 
 
 
 
 
                  █
                 ▀▀▀
             ▄ ▀     ▀ ▄
           ▄█▀   ▄█▄   ▀█▄
            ▀▄▄▀█▀ ▀█▀▄▄▀
              ▀▀     ▀▀
 
 
 
 
 
 
 
 
 
 
 
                 ▀█▀
            ▄▄▄       ▄▄▄
           █ ▀   ▀▀▀   ▀ █
           ▀▀▄▀▀ ▄ ▄ ▀▀▄▀▀
             ▀▀▀     ▀▀▀
 
 
 
 
 
 
 
 
 
 
                  ▄
                 ███
            ▄█▄   ▄   ▄█▄
          ▄█ ██   █   ██ █▄
           ▀▀▀▀ ▄   ▄ ▀▀▀▀
             ▀█       █▀
 
 
 
 
 
 
 
 
 
 
                 ▄▄▄
                 ▄ ▄
            ▀▀▀  ▀ ▀  ▀▀▀
          █▀   █ ▀▀▀ █   ▀█
          ▀▀  ▀█     █▀  ▀▀
             ██▀     ▀██
 
 
 
 
 
 
 
 
 
 
                  █
             ▄   ▀ ▀   ▄
           ▄▄█▄ ▄▄ ▄▄ ▄█▄▄
         ▄▀▀   ▄▀ █ ▀▄   ▀▀▄
          ▀▀ ▄▀▀█   █▀▀▄ ▀▀
             █ █     █ █
 
 
 
 
 
 
 
 
 
 
                 ▄▄▄
                  ▀
          ▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄
         ▄▀▀ ▀█ ▀ ▀ ▀ █▀ ▀▀▄
          ▀ ▄▄▀ █▀ ▀█ ▀▄▄ ▀
            ▀▀ ▀▀   ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
                 ▄█▄
                 ▀▀▀
          ▄▄ ▄▀▀█▀█▀█▀▀▄ ▄▄
         █ █  ▄ █ █ █ ▄  █ █
           ▄▄ ▀ ▀▀ ▀▀ ▀ ▄▄
            ▀▀▀▀▀   ▀▀▀▀▀
 
 
 
 
 
 
 
 
 
 
                 ▀▀▀
               ▄ ▀ ▀ ▄
          ▄▄▄ █▀▀ ▀ ▀▀█ ▄▄▄
         ▀ ▀    █ █ █    ▀ ▀
          ▀██▀  ▀█▀█▀  ▀██▀
           ▀▀███     ███▀▀
 
 
 
 
 
 
 
 
 
                  ▄
                 ▄▀▄
              ▄▄ ▄▄▄ ▄▄
          ▄█▄██ █   █ ██▄█▄
           ▀▀  █▄   ▄█  ▀▀
          ▀  ▀ ▄▀▄ ▄▀▄ ▀  ▀
           ▀   █▀   ▀█   ▀
              ▀       ▀
 
 
 
 
 
 
 
 
 
                 ▀█▀
             ▄▄▄██▄██▄▄▄
          █▀    █ ▀ █    ▀█
          ▀▄▄ ▄▄▄   ▄▄▄ ▄▄▀
              █▄ █ █ ▄█
              ██▄   ▄██
 
 
 
 
 
 
 
 
 
                  ▄
                ▄▀▀▀▄
              █       █
         ▄█▀  ▀  ▄▀▄  ▀  ▀█▄
          ▀▄ ▄▄▄█   █▄▄▄ ▄▀
             ▄   ▀ ▀   ▄
             ▀▄ ▄   ▄ ▄▀
               ▀     ▀
 
 
 
 
 
 
 
 
                 ▄▄▄
                 ███
             ▄▄█     █▄▄
         █▀▀     ▄█▄     ▀▀█
         ▀▀▀  █▄██ ██▄█  ▀▀▀
            ▀▀ ▀▀   ▀▀ ▀▀
             ▀█▄     ▄█▀
               ▀     ▀
 
 
 
 
 
 
 
 
                 ▄▀▄
                █▄ ▄█
          ▄   ▄█▀ ▀ ▀█▄   ▄
        ▄▀▀   ▀ ▄▀▀▀▄ ▀   ▀▀▄
         ▀█▄▄ ▀       ▀ ▄▄█▀
            ▄▀ ▄ ▀ ▀ ▄ ▀▄
             █▀█     █▀█
              ▀▀     ▀▀
 
 
 
 
 
 
 
 
                 ▄█▄
                ▀ ▄ ▀
         ▄▄   █   ▀   █   ▄▄
        ▄▀▀   ▀▄▀███▀▄▀   ▀▀▄
         ██▄▄▄         ▄▄▄██
            ▄▀ ▄▄   ▄▄ ▀▄
            ▀█ ▀█   █▀ █▀
              ▀▀     ▀▀
 
 
 
 
 
 
 
 
                 ███
                 ▄ ▄
         ▄▄  ▄▄       ▄▄  ▄▄
        █ ▀   ▀▄▀   ▀▄▀   ▀ █
        ▀▄ ▄█▄    ▀    ▄█▄ ▄▀
          ▀ ▄▀▀▄▄   ▄▄▀▀▄ ▀
            ██  ▄▀ ▀▄  ██
              ▀▀     ▀▀
 
 
 
 
 
 
 
                  ▄
                 █ █
                 ▀ ▀
         ▄▄  ▄▄▄     ▄▄▄  ▄▄
       ▄█ ▀  ▀▀▄     ▄▀▀  ▀ █▄
        ▀█▄█▀▀▄       ▄▀▀█▄█▀
          ▀▄▄ ▀█▄   ▄█▀ ▄▄▀
           ▀▄ ▀█▄▀ ▀▄█▀ ▄▀
             ▀▀▀     ▀▀▀
 
 
 
 
 
 
 
                  ▄
                ▄█ █▄
 
         ▄▄  ▄▀▄     ▄▀▄  ▄▄
       █▀ █▄ ▀         ▀ ▄█ ▀█
       ▀▄  ▀▀▀█▄     ▄█▀▀▀  ▄▀
         ▀▄▄██▀ ▀   ▀ ▀██▄▄▀
           ▀▄▀▀  ▀ ▀  ▀▀▄▀
             ▀█▀▀   ▀▀█▀
 
 
 
 
 
 
 
                  ▄
                ██ ██
 
        ▄▄▄  ▄▀       ▀▄  ▄▄▄
      ▄█▀▄▄ ▀ █       █ ▀ ▄▄▀█▄
       ▀█ ▀█▀▀▀▀     ▀▀▀▀█▀ █▀
         ▀█    ▄     ▄    █▀
          ▀ ▄ ▀ ▄   ▄ ▀ ▄ ▀
             ██▀     ▀██
 
 
 
 
 
 
 
                 ▄▄▄
                █▄ ▄█
 
       ▄▄█   ▄▄       ▄▄   █▄▄
      █   ▄▀  ▀       ▀  ▀▄   █
      ▀▄▄   ▀██▀     ▀██▀   ▄▄▀
         ▀██             ██▀
           ▀   ▀     ▀   ▀
            ▀▄ █     █ ▄▀
 
 
 
 

---

nuts-and-bolts

Setting up a little database. Starting with the index, DATA-PATH.

> (data-path "foo" :verify nil)
"/emerald-city/academy/data/foo"  ;; This will vary depending.

---

group

Pay attention! Another useful utility is being introduced.

GROUP will group the elements of LIST into lists of N elements each.

> (group '(mary joe sue sally sam tom tim) 2)
((MARY JOE) (SUE SALLY) (SAM TOM) (TIM))

---

drawing

> (smile)

 ▄▀▀▀▀▄
█ ▀  ▀ █
█ ▀▄▄▀ █
 ▀▄▄▄▄▀

---

visualize-one-in-chance

> (dotimes (x 6) (visualize-one-in-chance (expt 2 x)))

████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
████████████████████████████████
██ ▄▀▄▄ █▄▄ ▄▄▄▀███▀█▄▄█ ▄▄█▀▄▀█
 ▀ ▄█ ▄▄▀█▀   ██▄ ▀▀█▄▄▀ █ ▄ ▄
▄ ██▄ █▄▄▄▄▄ ▀▄ ▄█ ▄▀█▀▄█ █ ▄█
█▀▀██▀▄▀▀▀ ▀█▄█ ▀  █▀▄ █▄█▀▄ ▀▀█
  ▀  ▀ █▄▀ ▄▀██▀▀     ▄ ▀██ ▀▄██
█▀▄  █▄▄▄▄ ▄ █▀▀▄▀▀  ▄▄▄▀ ▄█▀█▀█
 ▀▄▀ ▀▀ █▀▄█▀   ▀▀█ ▀  ▀ █▄   █▀
▄▄▄███  ▄  ▄█▄ █▄█  ██▀█ ▄█▀▀▄█▄
 ██▀▄  ███▀█▄▄█▄ ▀  ▄▀▄▄▀▀▄█  ▄
 █▀▄█▀▄▀▄ ▀▄█▀   ▄█▀█▄▀▄▄▀█████▄
 ▄ ▀█▄ ▄▀▀▀█▀▀▄▀ ▀▄ ███ ▄ ████▀█
 ▀▀ █▀██▄  ▀▀█▀ ▄▄ ▄  ███▄  ██ ▀
▀▀  ▀█ ▄▄ █  █▄██▀▄▄█ ▀▄██  ▀█ █
█▀▀▄█▀▄ ▄▄▄▀█▄▄ █▀▀▀▄▄█ ▄▀ ▀█▀▄
▄█▀ ▄█▄▀  ▀ ▄  ▀▄███   ▄▄ █▀ ▀█▄
  ▀ █ █▀█ ▄▄▀▄█▀▄  █▄▄█▀██▀▀█▀▀█
  ▄ ▀▄ █ ▀ ▀▄    ▀▀▄
 ▀▀   ▀▄  ▄▄▀  █  ▀ ▄  ▄█▄ ▄ ▄ ▀
 ▄  █   █▀  ▄▀   ▄▄ ▀▀▀ ▄ ▄ ▄  ▄
  ▄    ▄ ▀ ▄ ▄  ▀  ▀▄  ▀  ▀  ▀ ▄
  ▀   ▄▀▀  ▀█ ▄▀ ▀█▄ ▄        ▀
 ▀▀  ▀        ▀▀█      ██  ▄ ▄▄
▀  ▄▄  ▄  ▀ ▄   ▄▄    ▀   ▀ ▀▀▄
  █  ▄ ▄  ▀▄    ▄▄   ▀    ▄▀   ▀
▄▀       ▄  ▀▄█ ▀▀▄ ▄▀▀  ▀▀ ██
 ▄ █▄█ ▄  ▀   █ ▄█  ▀██ ▄ ▀ ▄▄▀
     █▀ ▄    ▄ ▀      ▀▀▀▄ ▄
 ▀▀     ▀▄ ▀▄  ▀   ▀  ▀ ▀    ▄
    █  ▄▀  ▄▀    ▄ ▀   ▄ ▄▀ ▄█ ▀
 ▀  ▀▀ ▄ ▄       █   ▄ ▀▄     █
 ▀ ██      ▄      ▄▄ ▄ ▀      ▀
 ▀  ▀  █   ▄  ▄  ▀    ▀
    ▀ ▀▀  ▄     ▄█             ▄
   ▀          ▄      ▄
   ▄ ▄ ▄ ▀           ▄      ▀  ▄
  ▀  ▄         █ ▀▄▄   ▄
▄     ▀   ▄▄       ▄      ▀ ▀
              ▀    ▀   ▀   ▄
  ▄ ▄▄  ▄  ▀▄    ▀        ▀    ▄
    ▀  ▀ ▀     ▀  ▄▀  ▄    ▄
       ▄▀        ▀ ▀▄▀        ▄▄
▀▄      ▀ ▄▀ ▀      ▄ ▄  ▄▀   ▄▀
     █▀▀▀▄     ▄       ▄  ▄
█ ▀  ▄▄        ▄               ▄
      ▄ ▀▄   ▀    ▄  ▀▄  ▀ ▀  ▄▄
  ▀▄▀      ▀     ▄█   ▀▄ ▀ █ ▀
          ▄   ▄ ▄  ▀ ▄█▀ ▀ ▀
  ▀    ▄  █ ▀           ▄    ▄
        ▀              ▀▀ ▄    ▄
  █     ▀             █▀ ▀ ▀
    ▀             ▀
          ▄   ▄  ▄  ▀  ▀    ▀
  ▀▀      ▀          ▀ ▄    ▀ ▀▄
         ▀  ▀
   ▀▀   ▄         ▀ ▄   ▀     ▀
   ▀▀      ▄      ▄
     ▀     ▄▀   ▀              ▄
  ▀▀             ▄        ▀  ▄

 ▄  ▄  ▄              ▄
          ▀ ▀▀    ▀        ▄ ▀▄
         ▄   ▄
▀      ▄              ▄      ▄
           ▀     ▄       ▄    ▀
   ▀                ▀
        ▀            ▀
 ▄         ▄                  ▄
                      ▀  ▄   ▄▀
                    ▄          ▀

           ▄    ▀        ▀     ▀
       ▀         ▀

      ▀  ▄
                ▄              ▀

                         ▄

   ▄
                       ▄

---

visualize-chance

> (visualize-chance)

█▄██████████▀█▄██ ▄██▄█▀███▄▀▄▀▄█▀▄ ▄▄█▄█▄▄▄█▄█ ▄▀▄ ▀ █   █           ▄
█████████▀▀▄██▀▀▄██▀▀▄███▀██▀▄▄▀▀▀▄▄▀ █▀▀▀▀▀▄▀█▀ ▀ █ ▀▀▀▄ ▄▄ ▄ ▄   ▀▀
███▀██████▀███████▄████▄██▄███▄▀▀  ██▄█▀▄█  ▀ ▄    ▄▄ ▀ ▀  ▄   ▀       ▄  ▀
█████████████▄███ █ █ ████▄██ ▀█▄ █▄▀  █▀█ ▄    ▄▄▄█   ▀▄▄█▄
█████████████▄███████▄██ ▀█ ▄▀ ▄█▀▀▀███▄█▀▄▄▄▄▄ ▄   ▀  ▀ ▀█   ▄▄   ▄
████████▄▀██████▀████▄▀▀ ▄▀█████ ▄█▄▄▀▄█▀ ▀▀██▄▀██ ▀▀▀ ▄ ▀▀  ▄▀     ▄    ▄
████▄████▀▄█▄█▀█████▀▀ ██ █▄ ▀██▄▀█▀█▄▄███▄███▀▄▀▀     ▀ ▄  ▄▀▀▀▀▀      ▄
████████▄▄▄███▀▀ █▄███▀▀█▄▀ █▄▀▀▄ ▀▀▄▀█▄ ▀█▄█ ▄ ▀▄  ▄▀ ▄▄ ▀  ▀  █▀ ▀▄ ▀▄
█████▄███▀██▄▀██▀▄██▀███ ▀██▄█▀█▄█▄█▀█▀▀▀ ▄▄▄▀▀ █  ▀  ▄▀ ▄     ▄▄▄     ▀
██████████ ███▀███ ████ ███▀▀█▀▄▀█▀ █▄▄▀███   ▄█▀▄▀▄▄ ▄   ▀     ▀▄    ▀
███████████████▀▀▀███ █▀ ▀███▄██▄█▀ ███▄▄▀ █  ▄▀▄  ▀    ▄▀     ▄▄ ▄ ▀  ▄
███████████▀███▀█ ▄█▄▀▄██▄██ █▄██▄▀█▀ ██▀   ▄▄  ▀█ ▄  ▄  ▄     ▀  ▄ ▀ ▀▄ ▀
██████████████████▀█▄▄█▀▄█▀█ ▀█ ▀▄▄▄▄█▄▄▀▀ ▄ ▄▄█▀ ▄▄  ▀ ▄█▄    ▀  ▀      ▀
███████████▀██▄█ ▄█▄█▀██▄███████ ▀ ▄█ █▄█▀▀▀█ ██▄  ▀▄▀ ▄  █  ▄▀▀    ▀▄
███████ ███▄████████ █▀▀▀█▄█▄██▄▀▄▄ ███▄▀█  ▄▄█▄   ▄▄         █▄▀   ▄       ▀
██████▄███▀▄█████▄██▀ ▄███ █▀▄█▄█▀█▄▀█▀▀▀▄█ ▄▄▀  ▀▀▀▄▄▄▀ ▄▀  ▄   ▀

---

cellular-automata

> (draw-cellular-automata)
                               ▄█▄
                             ▄█▀▄▄█▄
                           ▄█▀▄▄█▄ ▄█▄
                         ▄█▀▄▄█▄  ▄█▄▄█▄
                       ▄█▀▄▄█▄ ▄█▀▀▄   ▄█▄
                     ▄█▀▄▄█▄  ▄█ █▀▀▀ █▀▄▄█▄
                   ▄█▀▄▄█▄ ▄█▀▀▄▄█▀▄▄█▀ █▄ ▄█▄
                 ▄█▀▄▄█▄  ▄█ █▀▀▄ ▄█▄▄█▀▀▄▄█▄▄█▄
               ▄█▀▄▄█▄ ▄█▀▀▄▄█▀▀▀ █▄  ▄█▀▀▄    ▄█▄
             ▄█▀▄▄█▄  ▄█ █▀▀▄▄█▄▄█▀ █▀▀ █▀▀▀▄▄█▀▄▄█▄
           ▄█▀▄▄█▄ ▄█▀▀▄▄█▀▀▀▄   ▄█▀▀▀ █▀▀ █▀▄ ▄█▄ ▄█▄
         ▄█▀▄▄█▄  ▄█ █▀▀▄▄█ █▀▀ █▀ █▄▄█▀▀ █▀ █ █▄ ▄█▄▄█▄
       ▄█▀▄▄█▄ ▄█▀▀▄▄█▀▀▀▄ ▄█▀ █▀▀▀▀▄ ▄█ █▀▀▀▀ █▄▄█▄   ▄█▄
     ▄█▀▄▄█▄  ▄█ █▀▀▄▄█ █▀ █ █▀▀▀▄▄█▀ █▄▄█▀▄ ▄█▀▄  ▄█ █▀▄▄█▄
   ▄█▀▄▄█▄ ▄█▀▀▄▄█▀▀▀▄ ▄█▀▀▀ █▀ █▀▄▄█▀▀▄  ▄█ █▄▄█▀▀▀▄▄█ █▄ ▄█▄
 ▄█▀▄▄█▄  ▄█ █▀▀▄▄█ █▀ █ █▄▄█▀▀▀▀ █▄▄█▀▀▀▀▀▄▄█▄ ▄█ █▀▄ ▄█▄▄█▄▄█
 █▄▄█▄ ▄█▀▀▄▄█▀▀▀▄ ▄█▀▀▀ █▄ ▄█▄ ▄█▀▄ ▄█▄ ▄█▀▄  ▄█▄▄█ █ █▄
 █▄   ▄█ █▀▀▄▄█ █▀ █ █▄▄█▀▄▄█▄ ▄█▄▄█ █▄ ▄█▄▄█▀▀▀▄   ▄█ █ █▄
 █ █ █▀▄▄█▀▀▀▄ ▄█▀▀▀ █▄  ▄█▄  ▄█▄   ▄█▄▄█▄  ▄█ █▀▀ █▀▄▄█ █ █▄
 █ █ █ █▄▄█ █▀ █ █▄▄█▀ █▀▀▄▄█▀▀▄▄█ █▀▄   ▄█▀▀▄▄█▀ █▀ █▄ ▄█ █ █▄
 █ █ █ █▄  ▄█▀▀▀ █▄ ▄█▀▀▀▀▀▄▄█▀▀▄ ▄█ █▀ █▀ █▀▀▄▄█▀▀▀▀▀▄▄█▄▄█ █▄
 █ █ █ █ █▀▀ █▄▄█▀▄▄█ █▄ ▄█▀▄▄█▀▀ █▄▄█▀▀▀▀▀▀▀▀▀▄▄█▄ ▄█▀▄    ▄█▄
 █ █ █ █ █▀ █▀▄  ▄█▄ ▄█▄▄█▄▄█▄▄█ █▀▄ ▄█▄     ▄█▀▄  ▄█▄▄█▀▄▄█▀▄
 █ █ █ █ █▀▀▀ █▀▀▀▄ ▄█▄         ▄█ █ █▄▄█▄ ▄█▀▄▄█▀▀▀▄   ▄█▄ ▄█▀
 █ █ █ █ █▀▄▄█▀▀ █▀ █▄▄█▄     ▄█▀▄▄█ █▄   ▄█▄▄█▄▄█ █▀▀ █▀▄ ▄█ █
 █ █ █ █ █ █▄▄█ █▀▀▀▀▄  ▄█▄ ▄█▀▄▄█▄ ▄█ █ █▀▄      ▄█▀ █▀ █ █▄▄█
 █ █ █ █ █ █▄  ▄█▀▄▄█▀▀▀▀▄ ▄█▄▄█▄  ▄█▄▄█ █ █▀▄  ▄█▀ █▀▀▀▀▀ █▄
 █ █ █ █ █ █ █▀▀▄▄█▄▄█▄▄█▀ █▄   ▄█▀▀▄   ▄█ █ █▀▀▀ █▀▀▀▄  ▄█▀ █▄
 █ █ █ █ █ █ █▀▀▀▄      ▄█▀▀ █ █▀ █▀▀▀ █▀▄▄█ █▀▄▄█▀▀ █▀▀▀▀ █▀▀▄
 █ █ █ █ █ █ █▀ █▀▀▄  ▄█▀ █ █▀ █▀▀▀▀▄▄█▀ █▄ ▄█ █▄▄█ █▀▀▄ ▄█▀▀▀▀
 █ █ █ █ █ █ █▀▀▀▀▀▀▀▀▀ █▀▀ █▀▀▀▀▄▄█▀▄▄█▀▀▄▄█▄▄█▄  ▄█▀▀▀ █ █▄
 █ █ █ █ █ █ █▀▄      ▄█▀▀ █▀▀▄▄█▀▄ ▄█▄▄█▀▀▄    ▄█▀▀ █▄▄█▀ █ █▄

> (draw-cellular-automata 110)
                               ▄█
                             ▄█▀█
                           ▄█▀▀▀█
                         ▄█▀█ ▄██
                       ▄█▀▀▀▀▀█▄█
                     ▄█▀█   ▄██▄█
                   ▄█▀▀▀█ ▄██  ▄█
                 ▄█▀█ ▄█▀▀█▄█▄█▀█
               ▄█▀▀▀▀▀▀█▄██  ▄█▀█
             ▄█▀█    ▄██ ▄█▄█▀▀▀█
           ▄█▀▀▀█  ▄██▄█▀█ ▄█ ▄██
         ▄█▀█ ▄██▄██  ▄█▀▀▀▀▀▀█▄█
       ▄█▀▀▀▀▀█   ▄█▄█▀█    ▄██▄█
     ▄█▀█   ▄██ ▄██ ▄█▀█  ▄██  ▄█
   ▄█▀▀▀█ ▄██▄█▀█▄█▀▀▀▀█▄██▄█▄█▀█
 ▄█▀█ ▄█▀▀█  ▄█▀█▄█  ▄██     ▄█▀█
 █▀▀▀▀▀█▄██▄█▀▀▀█▄█▄██▄█   ▄█▀▀▀█
 █   ▄██   ▄█ ▄██     ▄█ ▄█▀█ ▄██
 █ ▄██▄█ ▄█▀▀▀█▄█   ▄█▀▀▀▀▀▀▀▀█▄█
 █▀█  ▄█▀▀█ ▄██▄█ ▄█▀█      ▄██▄█
 █▀█▄█▀█▄█▀▀█  ▄█▀▀▀▀█    ▄██  ▄█
 █▀█▄█▀█▄█▄██▄█▀█  ▄██  ▄██▄█▄█▀█
 █▀█▄█▀█     ▄█▀█▄██▄█▄██    ▄█▀█
 █▀█▄█▀█   ▄█▀▀▀█      ▄█  ▄█▀▀▀█
 █▀█▄█▀█ ▄█▀█ ▄██    ▄█▀█▄█▀█ ▄██
 █▀█▄█▀▀▀▀▀▀▀▀█▄█  ▄█▀▀▀█▄█▀▀▀█▄█
 █▀█▄█      ▄██▄█▄█▀█ ▄██▄█ ▄██▄█
 █▀█▄█    ▄██    ▄█▀▀▀█  ▄█▀█  ▄█
 █▀█▄█  ▄██▄█  ▄█▀█ ▄██▄█▀▀▀█▄█▀█
 █▀█▄█▄██  ▄█▄█▀▀▀▀▀█  ▄█ ▄██▄█▀█
 █▀█   ▄█▄██ ▄█   ▄██▄█▀▀▀█  ▄█▀█
 █▀█ ▄██  ▄█▀▀█ ▄██  ▄█ ▄██▄█▀▀▀█

> (draw-cellular-automata 102)
                               ▄█
                             ▄█▄█
                           ▄█  ▄█
                         ▄█▄█▄█▄█
                       ▄█      ▄█
                     ▄█▄█    ▄█▄█
                   ▄█  ▄█  ▄█  ▄█
                 ▄█▄█▄█▄█▄█▄█▄█▄█
               ▄█              ▄█
             ▄█▄█            ▄█▄█
           ▄█  ▄█          ▄█  ▄█
         ▄█▄█▄█▄█        ▄█▄█▄█▄█
       ▄█      ▄█      ▄█      ▄█
     ▄█▄█    ▄█▄█    ▄█▄█    ▄█▄█
   ▄█  ▄█  ▄█  ▄█  ▄█  ▄█  ▄█  ▄█
 ▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█
                               ▄█
                             ▄█▄█
                           ▄█  ▄█
                         ▄█▄█▄█▄█
                       ▄█      ▄█
                     ▄█▄█    ▄█▄█
                   ▄█  ▄█  ▄█  ▄█
                 ▄█▄█▄█▄█▄█▄█▄█▄█
               ▄█              ▄█
             ▄█▄█            ▄█▄█
           ▄█  ▄█          ▄█  ▄█
         ▄█▄█▄█▄█        ▄█▄█▄█▄█
       ▄█      ▄█      ▄█      ▄█
     ▄█▄█    ▄█▄█    ▄█▄█    ▄█▄█
   ▄█  ▄█  ▄█  ▄█  ▄█  ▄█  ▄█  ▄█
 ▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█▄█

---

plot-function

> (visualize-math-functions)

█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█                                            ▄▀                █
█                                          ▄▀                  █
█                                        ▄▀                    █
█                                      ▄▀                      █
█                                    ▄▀                        █
█                                  ▄▀                          █
█                                ▄▀                            █
█                              ▄▀                              █
█                            ▄▀                                █
█                          ▄▀                                  █
█                        ▄▀                                    █
█                      ▄▀                                      █
█                    ▄▀                                        █
█                  ▄▀                                          █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█                                                              █
█                                                              █
█                                           ▄▄▄▀▀▀▄▄▄          █
█                                       ▄▄▀▀         ▀▀▄▄      █
█                                     ▄▀                 ▀▄    █
█                                   ▄▀                     ▀▄  █
█                                 ▄▀                         ▀▄█
█▄                             ▄▀▀                             █
█ ▀▄                         ▄▀                                █
█   ▀▄                     ▄▀                                  █
█     ▀▄                 ▄▀                                    █
█       ▀▀▄▄         ▄▄▀▀                                      █
█           ▀▀▀▄▄▄▀▀▀                                          █
█                                                              █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█                                                              █
█                                                              █
█                           ▄▄▄▀▀▀▄▄▄                          █
█                       ▄▄▀▀         ▀▀▄▄                      █
█                     ▄▀                 ▀▄                    █
█                   ▄▀                     ▀▄                  █
█                 ▄▀                         ▀▄                █
█              ▄▀▀                             ▀▄▄             █
█            ▄▀                                   ▀▄           █
█          ▄▀                                       ▀▄         █
█        ▄▀                                           ▀▄       █
█    ▄▄▀▀                                               ▀▀▄▄   █
█▄▀▀▀                                                       ▀▀▀█
█                                                              █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

█▀▀▀▀▀▀▀▀▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█                                                              █
█        ▀                               ▀                     █
█       ▀                               ▀                      █
█      ▀                               ▀                       █
█    ▄▀                              ▄▀                        █
█  ▄▀                              ▄▀                          █
█▄▀                              ▄▀                            █
█                               ▀                              █
█                             ▄▀                              ▄█
█                           ▄▀                              ▄▀ █
█                         ▄▀                              ▄▀   █
█                        ▄                               ▄     █
█                       ▄                               ▄      █
█                      ▄                               ▄       █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█                                                              █
█                                                   ▄▄▄▄▄▀▀▀▀▀▀█
█                                            ▄▄▄▀▀▀▀           █
█                                        ▄▄▀▀                  █
█                                     ▄▀▀                      █
█                                   ▄▀                         █
█                                 ▄▀                           █
█                              ▄▀▀                             █
█                            ▄▀                                █
█                          ▄▀                                  █
█                       ▄▄▀                                    █
█                   ▄▄▀▀                                       █
█            ▄▄▄▄▀▀▀                                           █
█▄▄▄▄▄▄▄▀▀▀▀▀                                                  █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

---

slurp-file

Pay attention! Another useful utility is being shown here.

"Slurping" refers to loading an entire file into memory at one call.

> (slurp-file "/etc/passwd")
"root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
...
prince:1000:1000:♃ ,,,:/home/prince:/bin/csh
"

---

i-ching

> (i-ching t)

☰  heaven
☰  heaven
䷀  1  Ch'ien / The Creative

☱  lake
☵  water
䷮  47 K'un / Oppression (Exhaustion)

> (hexagram-text 1)

1.   Ch'ien / The Creative

     --------
     --------     above     Ch'ien The Creative, Heaven
     --------
     --------
     --------     below     Ch'ien The Creative, Heaven
     --------

The Judgement

     The Creative works sublime success,
     Furthering through perseverance.

The Image

     The movement of heaven is full of power.
     Thus the superior man makes himself strong and untiring.

The Lines

     Nine at the beginning means:
     Hidden dragon. Do not act.

     Nine in the second place means:
     Dragon appearing in the field.
     It furthers one to see the great man.

     Nine in the third place means:
     All day long the superior man is creatively active.
     At nightfall his mind is beset with cares.
     Danger. No blame.

     Nine in the fourth place means:
     Wavering flight over the depths.
     No blame.

()   Nine in the fifth place means:
     Flying dragon in the heavens.
     It furthers one to see the great man.

     Nine at the top means:
     Arrogant dragon will have cause to repent.

     When all the lines are nines, it means:
     There appears a flight of dragons without heads.
     Good fortune.

---

eval-in-emacs

For emacs users only. Enabling them to execute code in the slime
connected emacs from the lisp.

> (eval-in-emacs '(version))
"GNU Emacs 23.2.1 (x86_64-pc-linux-gnu, GTK+ Version 2.20.1)
 of 2010-12-11 on brahms, modified by Debian"

> (eval-in-emacs '(+ 1 2 3))
6

Useful for opening the editor on exising or new files.

> (eval-in-emacs '(progn (find-file "/tmp/foo123") nil))
NIL

Note that for EVAL-IN-EMACS to work you need to enable in
emacs, generally in the ~/.emacs file:

  (setq slime-enable-evaluate-in-emacs t)

---

draw-circle

> (bullseye)

                       ▄▄▄▄▀▀▀▀▀▀▀▀▀▀▀▄▄▄▄
                  ▄▄▄▀▀                   ▀▀▄▄▄
               ▄▄▀      ▄▄▄▀▀▀▀▀▀▀▀▀▀▀▄▄▄      ▀▄▄
             ▄▀    ▄▄▀▀▀                 ▀▀▀▄▄    ▀▄
           ▄▀    ▄▀      ▄▄▄▀▀▀▀▀▀▀▀▀▄▄▄      ▀▄    ▀▄
         ▄▀   ▄▀▀    ▄▀▀▀               ▀▀▀▄    ▀▀▄   ▀▄
       ▄▀   ▄▀    ▄▀▀    ▄▄▄▀▀▀▀▀▀▀▀▀▄▄▄    ▀▀▄    ▀▄   ▀▄
      ▄▀   ▄▀   ▄▀    ▄▀▀               ▀▀▄    ▀▄   ▀▄   ▀▄
     █   ▄▀   ▄▀    ▄▀    ▄▄▄▀▀▀▀▀▀▀▄▄▄    ▀▄    ▀▄   ▀▄   █
    ▄▀  ▄▀   ▄▀   ▄▀   ▄▄▀             ▀▄▄   ▀▄   ▀▄   ▀▄  ▀▄
   ▄▀   █   █   ▄▀   ▄▀    ▄▄▀▀▀▀▀▀▀▄▄    ▀▄   ▀▄   █   █   ▀▄
   █   █   ▄▀  ▄▀   ▄▀   ▄▀           ▀▄   ▀▄   ▀▄  ▀▄   █   █
  ▄▀  ▄▀   █   █   █   ▄▀    ▄▀▀▀▀▀▄    ▀▄   █   █   █   ▀▄  ▀▄
  █   █   █   █   ▄▀  ▄▀   ▄▀       ▀▄   ▀▄  ▀▄   █   █   █   █
  █   █   █   █   █   █   █   ▄▀▀▀▄   █   █   █   █   █   █   █
  █   █   █   █   █   █   █   █   █   █   █   █   █   █   █   █
  █   █   █   █   █   █   ▀▄   ▀▀▀   ▄▀   █   █   █   █   █   █
  █   █   ▀▄  ▀▄   █   █    ▀▄     ▄▀    █   █   ▄▀  ▄▀   █   █
   █   █   █   █   ▀▄   ▀▄    ▀▀▀▀▀    ▄▀   ▄▀   █   █   █   █
   █   ▀▄   █   █    █    ▀▄▄       ▄▄▀    █    █   █   ▄▀   █
    █   █   ▀▄   ▀▄   ▀▄▄    ▀▀▀▀▀▀▀    ▄▄▀   ▄▀   ▄▀   █   █
     █   █    █    ▀▄    ▀▄▄▄       ▄▄▄▀    ▄▀    █    █   █
     ▀▄   ▀▄   ▀▄    ▀▄      ▀▀▀▀▀▀▀      ▄▀    ▄▀   ▄▀   ▄▀
       █    █    ▀▄    ▀▀▄▄▄         ▄▄▄▀▀    ▄▀    █    █
        ▀▄   ▀▄    ▀▀▄      ▀▀▀▀▀▀▀▀▀      ▄▀▀    ▄▀   ▄▀
          ▀▄   ▀▀▄    ▀▀▀▄▄▄         ▄▄▄▀▀▀    ▄▀▀   ▄▀
            ▀▄    ▀▄▄       ▀▀▀▀▀▀▀▀▀       ▄▄▀    ▄▀
              ▀▄▄    ▀▀▀▄▄▄           ▄▄▄▀▀▀    ▄▄▀
                 ▀▄▄▄      ▀▀▀▀▀▀▀▀▀▀▀      ▄▄▄▀
                     ▀▀▄▄▄▄           ▄▄▄▄▀▀
                           ▀▀▀▀▀▀▀▀▀▀▀

---

draw-line

> (sunbeam)

█      ▄▀      ▄▀      ▄▀      ▄▀      ▄▀      ▄▀      ▄▀     ▄▀
█      █       █      ▄▀      █       █      ▄▀      ▄▀     ▄▀
█      █      █       █      █      ▄▀      █      ▄▀     ▄▀
█      █      █      █      █      ▄▀     ▄▀     ▄▀     ▄▀
█     █      █      █      █      █      █      █     ▄▀     ▄▀▀
█     █      █     ▄▀     █      █     ▄▀     ▄▀    ▄▀     ▄▀
█     █     █      █     █     ▄▀     █     ▄▀    ▄▀     ▄▀
█     █     █     █     █     ▄▀    ▄▀    ▄▀    ▄▀    ▄▀▀
█    █     █     █     █     █     █    ▄▀    ▄▀    ▄▀       ▄▀▀
█    █     █    ▄▀    █    ▄▀    ▄▀    ▄▀   ▄▀    ▄▀      ▄▀▀
█    █    █     █    █    ▄▀    █    ▄▀   ▄▀   ▄▄▀     ▄▄▀
█    █    █    █    █    ▄▀   ▄▀   ▄▀   ▄▀   ▄▀      ▄▀
█   █    █    █    █    █   ▄▀   ▄▀   ▄▀   ▄▀     ▄▀▀       ▄▄▀▀
█   █    █   ▄▀   █   ▄▀   ▄▀   █   ▄▀   ▄▀    ▄▄▀       ▄▄▀
█   █   █   ▄▀   █   ▄▀  ▄▀   ▄▀  ▄▀  ▄▀▀    ▄▀       ▄▀▀
█   █   █   █   █   █   ▄▀  ▄▀  ▄▀  ▄▀    ▄▀▀      ▄▀▀
█  █   █   █   █   █  ▄▀  ▄▀  ▄▀  ▄▀   ▄▄▀     ▄▄▀▀        ▄▄▀▀▀
█  █   █  ▄▀  █  ▄▀  ▄▀ ▄▀  ▄▀ ▄▄▀   ▄▀     ▄▄▀        ▄▄▀▀
█  █  █  ▄▀  █  ▄▀ ▄▀  ▄▀ ▄▀ ▄▀   ▄▀▀    ▄▄▀       ▄▄▀▀
█  █  █  █  █  █  ▄▀ ▄▀ ▄▀ ▄▀  ▄▄▀    ▄▀▀      ▄▄▀▀
█ █  █  █  █ ▄▀ ▄▀ ▄▀ ▄▀ ▄▀  ▄▀   ▄▄▀▀     ▄▄▀▀           ▄▄▄▀▀▀
█ █  █ ▄▀ █ ▄▀ ▄▀▄▀ ▄▀▄▀▀ ▄▀▀  ▄▄▀     ▄▄▀▀          ▄▄▀▀▀
█ █ █ ▄▀ █ ▄▀▄▀ █ ▄▀▄▀ ▄▄▀  ▄▄▀    ▄▄▀▀        ▄▄▄▀▀▀
█ █ █ █ █ █ █ ▄▀▄▀▄▀ ▄▀  ▄▀▀   ▄▄▀▀       ▄▄▀▀▀
██ █ █ █▄▀▄▀▄▀▄█▄▀▄▀▀ ▄▀▀  ▄▄▀▀     ▄▄▄▀▀▀             ▄▄▄▄▀▀▀▀▀
██ ██ █▄▀█▄▀▄█▀▄▄▀▄▄▀▀ ▄▄▀▀    ▄▄▀▀▀           ▄▄▄▄▀▀▀▀
███▄▀██▄█▀▄█▀▄▀▄▄▀ ▄▄▀▀  ▄▄▄▀▀▀       ▄▄▄▄▄▀▀▀▀
███████▄███▀█▀▀▄▄▀▀ ▄▄▀▀▀     ▄▄▄▄▀▀▀▀
██████████▀█▄▀█▄▄▀▀▀  ▄▄▄▄▀▀▀▀                ▄▄▄▄▄▄▄▄▄▀▀▀▀▀▀▀▀▀
███████████▀▀█▄▄▄▀▀▀▀▀      ▄▄▄▄▄▄▄▄▄▀▀▀▀▀▀▀▀▀
█████████▀███▄▄▄▄▄▄▀▀▀▀▀▀▀▀▀
██████████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

---

remember

A simple notebook of very special super secret important things to
entrust to the well-being and safe-keeping of a machine.

> (remember "I think,")
Noted.

> (remember "therefore")
Noted.

> (remember "I am.")
Noted.

> (remember)
I think,
therefore
I am.

---

fill-bitmap

> (sun)
                           ▄▄▄▄▄▄▄▄▄▄▄
                    ▄▄▄███████████████████▄▄▄
                ▄▄█████████████████████████████▄▄
              ▄███████████████████████████████████▄
           ▄█████████████████████████████████████████▄
         ▄█████████████████████████████████████████████▄
        █████████████████████████████████████████████████
      ▄███████████████████████████████████████████████████▄
     ███████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████
   ███████████████████████████████████████████████████████████
  ▄███████████████████████████████████████████████████████████▄
  █████████████████████████████████████████████████████████████
 ▄█████████████████████████████████████████████████████████████▄
 ███████████████████████████████████████████████████████████████
 ███████████████████████████████████████████████████████████████
 ███████████████████████████████████████████████████████████████
 ███████████████████████████████████████████████████████████████
 ███████████████████████████████████████████████████████████████
  █████████████████████████████████████████████████████████████
  █████████████████████████████████████████████████████████████
   ███████████████████████████████████████████████████████████
   ▀█████████████████████████████████████████████████████████▀
    ▀███████████████████████████████████████████████████████▀
     ▀█████████████████████████████████████████████████████▀
       ▀█████████████████████████████████████████████████▀
        ▀███████████████████████████████████████████████▀
          ▀███████████████████████████████████████████▀
            ▀▀█████████████████████████████████████▀▀
               ▀█████████████████████████████████▀
                  ▀▀█████████████████████████▀▀
                       ▀▀▀▀███████████▀▀▀▀

---

print-table

> (loop for args in '((:align :right) (:gap "$$") nil)
        do (apply #'print-table
                  (loop for x from 1 to 6
                        collect
                           (loop for x from 1 to 6
                                 collect (random-do (random 100000)
                                                    (random-element '(bull bear)))))
                  args)
           (terpri))

 BEAR   BEAR   BULL   BULL  87984  84947
 BEAR  69563  44895  29735   BEAR  85831
72832   BULL   BULL  77389  82439  86364
 BULL   BULL   BEAR   BULL   BULL   BULL
 BULL   BEAR   BEAR  73444   BEAR  43194
87523  33990  24603   BEAR  63915   BULL

 BEAR$$67880$$64999$$ BEAR$$66444$$88571
29536$$ BEAR$$28664$$ BEAR$$96143$$ BULL
 BEAR$$70373$$82057$$85997$$99603$$ 3351
47959$$ BEAR$$ BEAR$$73129$$ 8184$$ BULL
43649$$97104$$ BEAR$$ BEAR$$ BULL$$ BULL
 BULL$$ BULL$$ BEAR$$68957$$ BEAR$$ BEAR

65931  8108   72867  BULL   68808  34300
7998   87740  BEAR   BULL   BEAR   15545
55447  86670  BEAR   BULL   BULL   BULL
79437  BEAR   BEAR   43880  23451  BEAR
BULL   9323   75928  52182  BEAR   2799
BEAR   80488  BULL   65464  BULL   58910

Ugly, ain't it!

---

multiplication-table

> (multiplication-table)

 1   2   3   4   5   6    7    8    9   10   11   12   13   14   15   16
 2   4   6   8  10  12   14   16   18   20   22   24   26   28   30   32
 3   6   9  12  15  18   21   24   27   30   33   36   39   42   45   48
 4   8  12  16  20  24   28   32   36   40   44   48   52   56   60   64
 5  10  15  20  25  30   35   40   45   50   55   60   65   70   75   80
 6  12  18  24  30  36   42   48   54   60   66   72   78   84   90   96
 7  14  21  28  35  42   49   56   63   70   77   84   91   98  105  112
 8  16  24  32  40  48   56   64   72   80   88   96  104  112  120  128
 9  18  27  36  45  54   63   72   81   90   99  108  117  126  135  144
10  20  30  40  50  60   70   80   90  100  110  120  130  140  150  160
11  22  33  44  55  66   77   88   99  110  121  132  143  154  165  176
12  24  36  48  60  72   84   96  108  120  132  144  156  168  180  192
13  26  39  52  65  78   91  104  117  130  143  156  169  182  195  208
14  28  42  56  70  84   98  112  126  140  154  168  182  196  210  224
15  30  45  60  75  90  105  120  135  150  165  180  195  210  225  240
16  32  48  64  80  96  112  128  144  160  176  192  208  224  240  256

---

bullseye

> (bullseye :filled t)

                       ▄▄▄▄███████████▄▄▄▄
                  ▄▄▄███████████████████████▄▄▄
               ▄▄██████████▀▀▀▀▀▀▀▀▀▀▀██████████▄▄
             ▄███████▀▀▀                 ▀▀▀███████▄
           ▄██████▀      ▄▄▄█████████▄▄▄      ▀██████▄
         ▄█████▀▀    ▄█████████████████████▄    ▀▀█████▄
       ▄█████▀    ▄█████████▀▀▀▀▀▀▀▀▀█████████▄    ▀█████▄
      ▄█████▀   ▄██████▀▀               ▀▀██████▄   ▀█████▄
     █████▀   ▄██████▀    ▄▄▄███████▄▄▄    ▀██████▄   ▀█████
    ▄████▀   ▄█████▀   ▄▄███████████████▄▄   ▀█████▄   ▀████▄
   ▄█████   █████▀   ▄███████▀▀▀▀▀▀▀███████▄   ▀█████   █████▄
   █████   ▄████▀   ▄█████▀           ▀█████▄   ▀████▄   █████
  ▄████▀   █████   █████▀    ▄█████▄    ▀█████   █████   ▀████▄
  █████   █████   ▄████▀   ▄█████████▄   ▀████▄   █████   █████
  █████   █████   █████   █████▀▀▀█████   █████   █████   █████
  █████   █████   █████   █████   █████   █████   █████   █████
  █████   █████   █████   ▀███████████▀   █████   █████   █████
  █████   ▀████▄   █████    ▀███████▀    █████   ▄████▀   █████
   █████   █████   ▀█████▄    ▀▀▀▀▀    ▄█████▀   █████   █████
   █████▄   █████    ██████▄▄       ▄▄██████    █████   ▄█████
    █████   ▀█████▄   ▀███████████████████▀   ▄█████▀   █████
     █████    ██████▄    ▀█████████████▀    ▄██████    █████
     ▀█████▄   ▀██████▄      ▀▀▀▀▀▀▀      ▄██████▀   ▄█████▀
       ██████    ▀███████▄▄▄         ▄▄▄███████▀    ██████
        ▀█████▄    ▀▀███████████████████████▀▀    ▄█████▀
          ▀██████▄    ▀▀▀███████████████▀▀▀    ▄██████▀
            ▀██████▄▄       ▀▀▀▀▀▀▀▀▀       ▄▄██████▀
              ▀█████████▄▄▄           ▄▄▄█████████▀
                 ▀█████████████████████████████▀
                     ▀▀███████████████████▀▀
                           ▀▀▀▀▀▀▀▀▀▀▀

---

peace

> (peace)

    ▄▄▄▄▄
  ▄▀  █  ▀▄
 █    █    █
 █   ▄█▄   █
 ▀▄▄▀ █ ▀▄▄▀
   ▀▄▄█▄▄▀

---

turtle-graphics

> (turtle-race)

squares

  █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
  █                     █
  █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   █
  █                 █   █
  █▀▀▀▀▀▀▀▀▀▀▀▀▀█   █   █
  █             █   █   █
  █▀▀▀▀▀▀▀▀▀█   █   █   █
  █         █   █   █   █
  █▀▀▀▀▀█   █   █   █   █
  █     █   █   █   █   █
  █▀█   █   █   █   █   █
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

squares-rotated

               ▄
             ▄▀▀▄
           ▄▀▄   ▀▄
         ▄▀   ▀▄   ▀▄
       ▄▀ ▀▄    ▀▄   ▀▄
     ▄▀▄    ▀▄    ▀▄   ▀▄
   ▄█   ▀▄    ▀▄    ▀▄   ▀▄
  ▀▄▀▀   ▄▀    ▄▀    ▄▀   ▄▀
    ▀▄ ▄▀    ▄▀    ▄▀   ▄▀
      ▀▄   ▄▀    ▄▀   ▄▀
        ▀▄▀    ▄▀   ▄▀
          ▀▄ ▄▀   ▄▀
            ▀▄  ▄▀
              ▀█

triangle

  █▀▄▄
  █   ▀▀▄
  █      ▀▀▄▄
  █          ▀▀▄
  █             ▀▀▄▄
  █                 ▀▀▄
  █                 ▄▄▀▀
  █              ▄▀▀
  █          ▄▄▀▀
  █       ▄▀▀
  █   ▄▄▀▀
  █▄▀▀
  ▀

circle

        ▄▄▀▀▀▀▀▀▀▀▀▀▄▄
      ▄▀              ▀▄
    ▄▀                  ▀▄
   █                     █
  ▄▀                      █
  █                       ▀▄
  █                        █
  █                       ▄▀
  ▀▄                      █
   █                     █
    ▀▄                  ▄▀
      ▀▀▄            ▄▀▀
         ▀▀▄▄▄▄▄▄▄▀▀▀

spiral

            ▄▄▄▄▄▄▄▄▄▄
          ▄▀          ▀▀▄
        ▄▀               ▀▀▄
      ▄▀    ▄▄▀▀▀▀▀▀▀▄▄     █
    ▄▀    ▄▀           ▀▄   ▀▄
    █    █     ▄▄▄▄▄     ▀▄  ▀▄
   ▄▀   █    ▄▀     ▀▄    █   ▀▄
   █    █    █        █   █    ▀
   █    █    ▀        █   ▀▄   █
   █    ▀▄           ▄▀   █    █
    █     ▀▄       ▄█    ▄▀   █
    ▀▄▄     ▀▀▀▀▄▀▀     ▄█    █
       ▀▄▄            ▄▀      ▀
          ▀▄        ▄▀
            ▀▀▀▀▀▀▀▀

box-spiral

                     ▄▄▄
                    █   ▀▀▀▄▄
                   █         ▀▀▀▄▄▄
                  ▄▀  ▄▄▄▄         ▀▀▄▄▄
                  █  █    ▀▀▀▄▄▄        ▀▀▄▄▄
                 █  ▄▀          ▀▀▀▄▄▄       ▀▀▀▄▄
                ▄▀  █   ▄▄▄▄▄         ▀▀▀▀▄▄▄     ▀▀▀▄▄▄
                █  █   █     ▀▀▀▀▀▄▄▄▄       ▀▀▀▄▄▄     ▀▀▄▄▄
               █   █   █              ▀▀▀▀▀▄▄▄▄▄   ▀▀▀▄▄▄    ▀▀▄
              ▄▀  █   █  ▄▀▀▀▀▀▀▀▄▄▄▄▄▄▄        ▀▀▀▀▄   ▄▀    █
              █  ▄▀   █  █              ▀▀▀▀▀▀▄    █    █    █
             █   █   █   █   ▄▄▄▄▄▄▄▄▄▄▄▄    █    ▄▀   █    ▄▀
            ▄▀  ▄▀   █  ▄▀  █           ▄▀   █    █   ▄▀   ▄▀
            █   █   ▄▀  █   █   ▄▄▄▄▄▄  █   ▄▀   ▄▀   █    █
           █   █    █   █   █   █    █  █   █    █   █    █
          ▄▀  ▄▀   ▄▀  ▄▀   █   ▀    █  █   █   ▄▀  ▄▀   █
          █   █    █   █    █        █  █  ▄▀   █   █   ▄▀
         █   ▄▀   ▄▀   █    ▀▀▀▀▀▀▀▀▀▀  █  █   ▄▀  █    █
        ▄▀   █    █    █▄▄▄▄▄▄▄▄        █  █   █  ▄▀   █
        █   █     █▄▄▄▄         ▀▀▀▀▀▀▀▀█ ▄▀  █   █   █
       █    █▄▄▄       ▀▀▀▀▀▄▄▄▄▄         █   █  █   ▄▀
 ▀▀▀▄▄ ▀▀▀▄▄▄   ▀▀▀▀▄▄▄▄         ▀▀▀▀▀▄▄▄▄█  █  ▄▀  ▄▀
      ▀▀▀▄▄  ▀▀▀▄▄▄     ▀▀▀▀▄▄▄▄          ▀  █  █   █
           ▀▀▄▄▄   ▀▀▀▄▄▄       ▀▀▀▀▄▄▄▄    █  █   █
                ▀▀▄▄     ▀▀▀▄▄▄         ▀▀▀▀█ ▄▀  ▄▀
                    ▀▀▀▄▄      ▀▀▀▄▄▄         █  ▄▀
                         ▀▀▀▄▄       ▀▀▀▄▄▄  █   █
                              ▀▀▄▄▄        ▀▀█  █
                                   ▀▀▄▄        █
                                       ▀▀▀▄▄  ▄▀
                                            ▀▀█

star

                    █
                    █▄
                    █▀▄                  ▄▄
                    █ ▀▄               ▄▀█
                    █  ▀▄           ▄▀▀ █
                    █   ▀▄        ▄▀   █
                    █    ▀▄    ▄▀▀    █
   ▀▀█▀▀▄▄▄▄        █     ▀▄ ▄▀      █
      ▀▄▄   ▀▀▀▀▀▄▄▄█     ▄▀█       █
         ▀▄         █▀▀▀██▄▄█▄     █
           ▀▄▄      █▄▀▀     ▀█▀▀▀█▄▄▄
              ▀▄   ▄█         ▀▄ █    ▀▀▀▀▀▄▄▄▄
                ███ █          ▀█              ████▄
              ▄▀   ▀█          █▀▄    ▄▄▄▄▄▀▀▀▀
           ▄▀▀      █▀▄▄      █▄▄██▀▀▀
         ▄▀         █▄▄▄██▀▀▀█    ▀▄
      ▄▀▀   ▄▄▄▄▄▀▀▀█     ▀▄█      ▀▄
    ▄█▄▄▀▀▀▀        █      █ ▀▄     ▀▄
   ▀                █     █    ▀▄▄   ▀▄
                    █    █        ▀▄  ▀▄
                    █   █           ▀▄▄▀▄
                    █  █               ▀█▄
                    █ █                  ▀▄
                    ██
                    █
                    ▀

---

asdf-lisp-files

> (mapcar #'pathname-name (asdf-lisp-files :academy))

("packages" "help" "classic-utilities" "pretty-printing" "unicode" "randomness"
 "petals-around-the-rose" "math" "hilbert-space-filling-curve" "war" "drawing"
 "life" "nuts-and-bolts" "probability" "cellular-automata" "i-ching" "emacs" "remember"
 "turtle-graphics" "welcome")

---

sbcl-nuts-and-bolts

> (princ (run-program-to-string "echo" '("Is" "anyone" "out" "there" "?")))

Is anyone out there ?

;;; With the classic bsdgames installed...

> (princ (run-program-to-string "morse" '("code")))

 daw dit daw dit
 daw daw daw
 daw dit dit
 dit

> (princ (run-program-to-string "fortune" nil))

You're currently going through a difficult transition period called "Life."

---

with-output-to-data-file

For easily saving printed output of any of the functions.

> (with-output-to-data-file "happy.txt" (smile))
80 bytes written to "/emerald-city/academy/data/happy.txt"

---

git

> (princ (git '("version")))
git version 1.7.2.5

> (princ (git '("count-objects")))
958 objects, 3836 kilobytes

---

log

The entire project log file can now be saved to disk for further
perusal and distribution.

> (save-log)
79934 bytes written to "/emerald-city/academy/data/log.txt"

---

website

Prepare for launch...

10

9

8

7

6

... main engine start ...

5

4

3

2

1

.....liftoff

............booster separation

...................................orbit.

---

collect

> (collect 10 (random 10))
(7 8 9 0 5 7 3 1 2 8)

> (collect 10 (random-booleans 2))
((NIL T) (NIL T) (NIL NIL) (NIL NIL) (T T) (T NIL) (T NIL) (NIL NIL) (T NIL) (NIL NIL))

> (collect (random 10) (random 10))
(4 2)

---

count-unique

> (count-unique (random-booleans 100))  ; Your mileage may vary.
((T 44) (NIL 56))

> (count-unique (random-booleans 100 3))
((T 30) (NIL 70))

> (count-unique (collect 100 (random 10)))
((5 9) (7 15) (8 6) (2 13) (4 15) (0 11) (6 10) (9 10) (3 9) (1 2))

> (reduce #'+ (mapcar #'second *))
100

> (count-unique (collect 20 (random-element '(fe fi fo fum))))
((FO 5) (FI 5) (FE 3) (FUM 7))

---

hall-of-programmers

For a little competitive spirit.

---

contributors.txt

Thanks go out to the following for,

Brit Butler  - the shortest solution to the POWER-OF-TWO-P problem
Heow Goodman - PEACE, not high end German automobiles

---

comic-strip

> (with-comic-strip () (life))
 
 
 
 
 
 
 
                 ▄▄▄                             ▄█▄                            ▄▀▀▀▄
               ▄▀  █                            ▀▀ ▀▀                           ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
 
 
 
                  ▄                              ▄▄▄                             ▄▀▄
                ▄▀▀▀▄                           ▄▀▀▀▄                           █   █
                ▀▀ ▀▀                           ▀▀ ▀▀                           ▀▀ ▀▀
 
 
 
 
 
 
 
 
 
 
 
 
                                                                                  ▄
                 ▄█▄                            ▄▀▀▀▄                           ▄███▄
               ▄█▀ ▀█▄                         █     █                        ▄█▀   ▀█▄
                ▀▀ ▀▀                          ▀▀▀ ▀▀▀                         ▀█   █▀
 
 
 
 
 
 
 
 
 
 
 
 
                 ▄▄▄                             ▄█▄                            ▄▀▀▀▄
               ▄▀   ▀▄                         ▄▀▀▀▀▀▄                        ▄▄▀▄▄▄▀▄▄
              █   ▀   █                      ▄█▀     ▀█▄                     █ ▀     ▀ █
              ▀▄█   █▄▀                       ▀▄█   █▄▀                      ▀▀▄█   █▄▀▀
 
 
 
 
 
 
 
 
 
 
 
                  ▄                              ▄▄▄                              █
                ▄▀█▀▄                           ▄   ▄                            ▀▀▀
              ▄▄▀▄█▄▀▄▄                       ▄ ▀   ▀ ▄                      ▄ ▀     ▀ ▄
            ▄█ █▀ ▀ ▀█ █▄                   █▀   ▄▀▄   ▀█                  ▄█▀   ▄█▄   ▀█▄
             ▀█▄█   █▄█▀                    ▀▄▄ █   █ ▄▄▀                   ▀▄▄▀█▀ ▀█▀▄▄▀
                                               ▀     ▀                        ▀▀     ▀▀
 
 
 
 
 
 
 
 
 
 
                                                  ▄                              ▄▄▄
                 ▀█▀                             ███                             ▄ ▄
            ▄▄▄       ▄▄▄                   ▄█▄   ▄   ▄█▄                   ▀▀▀  ▀ ▀  ▀▀▀
           █ ▀   ▀▀▀   ▀ █                ▄█ ██   █   ██ █▄               █▀   █ ▀▀▀ █   ▀█
           ▀▀▄▀▀ ▄ ▄ ▀▀▄▀▀                 ▀▀▀▀ ▄   ▄ ▀▀▀▀                ▀▀  ▀█     █▀  ▀▀
             ▀▀▀     ▀▀▀                     ▀█       █▀                     ██▀     ▀██
 
 
 
 
 
 
 
 
 
 
                  █                              ▄▄▄                             ▄█▄
             ▄   ▀ ▀   ▄                          ▀                              ▀▀▀
           ▄▄█▄ ▄▄ ▄▄ ▄█▄▄                ▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄               ▄▄ ▄▀▀█▀█▀█▀▀▄ ▄▄
         ▄▀▀   ▄▀ █ ▀▄   ▀▀▄             ▄▀▀ ▀█ ▀ ▀ ▀ █▀ ▀▀▄             █ █  ▄ █ █ █ ▄  █ █
          ▀▀ ▄▀▀█   █▀▀▄ ▀▀               ▀ ▄▄▀ █▀ ▀█ ▀▄▄ ▀                ▄▄ ▀ ▀▀ ▀▀ ▀ ▄▄
             █ █     █ █                    ▀▀ ▀▀   ▀▀ ▀▀                   ▀▀▀▀▀   ▀▀▀▀▀
 
 
 
 
 
 
 
 
 
                                                  ▄
                 ▀▀▀                             ▄▀▄                             ▀█▀
               ▄ ▀ ▀ ▄                        ▄▄ ▄▄▄ ▄▄                      ▄▄▄██▄██▄▄▄
          ▄▄▄ █▀▀ ▀ ▀▀█ ▄▄▄               ▄█▄██ █   █ ██▄█▄               █▀    █ ▀ █    ▀█
         ▀ ▀    █ █ █    ▀ ▀               ▀▀  █▄   ▄█  ▀▀                ▀▄▄ ▄▄▄   ▄▄▄ ▄▄▀
          ▀██▀  ▀█▀█▀  ▀██▀               ▀  ▀ ▄▀▄ ▄▀▄ ▀  ▀                   █▄ █ █ ▄█
           ▀▀███     ███▀▀                 ▀   █▀   ▀█   ▀                    ██▄   ▄██
                                              ▀       ▀
 
 
 
 
 
 
 
 
                  ▄                              ▄▄▄                             ▄▀▄
                ▄▀▀▀▄                            ███                            █▄ ▄█
              █       █                      ▄▄█     █▄▄                  ▄   ▄█▀ ▀ ▀█▄   ▄
         ▄█▀  ▀  ▄▀▄  ▀  ▀█▄             █▀▀     ▄█▄     ▀▀█            ▄▀▀   ▀ ▄▀▀▀▄ ▀   ▀▀▄
          ▀▄ ▄▄▄█   █▄▄▄ ▄▀              ▀▀▀  █▄██ ██▄█  ▀▀▀             ▀█▄▄ ▀       ▀ ▄▄█▀
             ▄   ▀ ▀   ▄                    ▀▀ ▀▀   ▀▀ ▀▀                   ▄▀ ▄ ▀ ▀ ▄ ▀▄
             ▀▄ ▄   ▄ ▄▀                     ▀█▄     ▄█▀                     █▀█     █▀█
               ▀     ▀                         ▀     ▀                        ▀▀     ▀▀
 
 
 
 
 
 
 
                                                                                  ▄
                 ▄█▄                             ███                             █ █
                ▀ ▄ ▀                            ▄ ▄                             ▀ ▀
         ▄▄   █   ▀   █   ▄▄             ▄▄  ▄▄       ▄▄  ▄▄             ▄▄  ▄▄▄     ▄▄▄  ▄▄
        ▄▀▀   ▀▄▀███▀▄▀   ▀▀▄           █ ▀   ▀▄▀   ▀▄▀   ▀ █          ▄█ ▀  ▀▀▄     ▄▀▀  ▀ █▄
         ██▄▄▄         ▄▄▄██            ▀▄ ▄█▄    ▀    ▄█▄ ▄▀           ▀█▄█▀▀▄       ▄▀▀█▄█▀
            ▄▀ ▄▄   ▄▄ ▀▄                 ▀ ▄▀▀▄▄   ▄▄▀▀▄ ▀               ▀▄▄ ▀█▄   ▄█▀ ▄▄▀
            ▀█ ▀█   █▀ █▀                   ██  ▄▀ ▀▄  ██                  ▀▄ ▀█▄▀ ▀▄█▀ ▄▀
              ▀▀     ▀▀                       ▀▀     ▀▀                      ▀▀▀     ▀▀▀
 
 
 
 
 
 
 
                  ▄                               ▄                              ▄▄▄
                ▄█ █▄                           ██ ██                           █▄ ▄█
 
         ▄▄  ▄▀▄     ▄▀▄  ▄▄            ▄▄▄  ▄▀       ▀▄  ▄▄▄          ▄▄█   ▄▄       ▄▄   █▄▄
       █▀ █▄ ▀         ▀ ▄█ ▀█        ▄█▀▄▄ ▀ █       █ ▀ ▄▄▀█▄       █   ▄▀  ▀       ▀  ▀▄   █
       ▀▄  ▀▀▀█▄     ▄█▀▀▀  ▄▀         ▀█ ▀█▀▀▀▀     ▀▀▀▀█▀ █▀        ▀▄▄   ▀██▀     ▀██▀   ▄▄▀
         ▀▄▄██▀ ▀   ▀ ▀██▄▄▀             ▀█    ▄     ▄    █▀             ▀██             ██▀
           ▀▄▀▀  ▀ ▀  ▀▀▄▀                ▀ ▄ ▀ ▄   ▄ ▀ ▄ ▀                ▀   ▀     ▀   ▀
             ▀█▀▀   ▀▀█▀                     ██▀     ▀██                    ▀▄ █     █ ▄▀
 
 
 
 
 
 
 
 
 

---

input

> (read-from-keyboard)
⌨   Hello!
"Hello!"

> (read-number-from-keyboard)
Please enter a number.
⌨   Peachy!
Invalid entry. Please try again.
⌨   42
42

---

braille

> (print-in-braille "Hello, how are you? I wish you the best.")
⠓⠑⠇⠇⠕⠠⠀⠓⠕⠺⠀⠁⠗⠑⠀⠽⠕⠥⠹⠀⠊⠀⠺⠊⠎⠓⠀⠽⠕⠥⠀⠞⠓⠑⠀⠃⠑⠎⠞⠨

---

secrets

> (cesear-cypher)
Enter your message.
⌨   Beware the Ides of March.

"hkcgxk znk ojky ul sgxin."
20

> (cesear-cypher * 20)
"beware the ides of march."
6

> (caesar-cypher *greeting*)
"hvs wrsg ct aofqv vojs qcas."
12

> (values (caesar-cypher *response*))
"xv, zxbpxo, yrq klq dlkb."

---

print-heading

> (print-heading "   In the beginning...")

   In the beginning...
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

---

common-lisp

> (show-common-lisp-symbols)

functions
▀▀▀▀▀▀▀▀▀

*                                    +
-                                    /
/=                                   1+
1-                                   <
<=                                   =
>                                    >=
ABORT                                ABS
ACONS                                ACOS
ACOSH                                ADD-METHOD
ADJOIN                               ADJUST-ARRAY
ADJUSTABLE-ARRAY-P                   ALLOCATE-INSTANCE
ALPHA-CHAR-P                         ALPHANUMERICP
AND                                  APPEND
APPLY                                APROPOS
APROPOS-LIST                         AREF
ARITHMETIC-ERROR-OPERANDS            ARITHMETIC-ERROR-OPERATION
ARRAY-DIMENSION                      ARRAY-DIMENSIONS
ARRAY-DISPLACEMENT                   ARRAY-ELEMENT-TYPE
ARRAY-HAS-FILL-POINTER-P             ARRAY-IN-BOUNDS-P
ARRAY-RANK                           ARRAY-ROW-MAJOR-INDEX
ARRAY-TOTAL-SIZE                     ARRAYP
ASH                                  ASIN
ASINH                                ASSERT
ASSOC                                ASSOC-IF
ASSOC-IF-NOT                         ATAN
ATANH                                ATOM
BIT                                  BIT-AND
BIT-ANDC1                            BIT-ANDC2
BIT-EQV                              BIT-IOR
BIT-NAND                             BIT-NOR
BIT-NOT                              BIT-ORC1
BIT-ORC2                             BIT-VECTOR-P
BIT-XOR                              BLOCK
BOOLE                                BOTH-CASE-P
BOUNDP                               BREAK
BROADCAST-STREAM-STREAMS             BUTLAST
BYTE                                 BYTE-POSITION
BYTE-SIZE                            CAAAAR
CAAADR                               CAAAR
CAADAR                               CAADDR
CAADR                                CAAR
CADAAR                               CADADR
CADAR                                CADDAR
CADDDR                               CADDR
CADR                                 CALL-METHOD
CAR                                  CASE
CATCH                                CCASE
CDAAAR                               CDAADR
CDAAR                                CDADAR
CDADDR                               CDADR
CDAR                                 CDDAAR
CDDADR                               CDDAR
CDDDAR                               CDDDDR
CDDDR                                CDDR
CDR                                  CEILING
CELL-ERROR-NAME                      CERROR
CHANGE-CLASS                         CHAR
CHAR-CODE                            CHAR-DOWNCASE
CHAR-EQUAL                           CHAR-GREATERP
CHAR-INT                             CHAR-LESSP
CHAR-NAME                            CHAR-NOT-EQUAL
CHAR-NOT-GREATERP                    CHAR-NOT-LESSP
CHAR-UPCASE                          CHAR/=
CHAR<                                CHAR<=
CHAR=                                CHAR>
CHAR>=                               CHARACTER
CHARACTERP                           CHECK-TYPE
CIS                                  CLASS-NAME
CLASS-OF                             CLEAR-INPUT
CLEAR-OUTPUT                         CLOSE
CLRHASH                              CODE-CHAR
COERCE                               COMPILE
COMPILE-FILE                         COMPILE-FILE-PATHNAME
COMPILED-FUNCTION-P                  COMPILER-MACRO-FUNCTION
COMPLEMENT                           COMPLEX
COMPLEXP                             COMPUTE-APPLICABLE-METHODS
COMPUTE-RESTARTS                     CONCATENATE
CONCATENATED-STREAM-STREAMS          COND
CONJUGATE                            CONS
CONSP                                CONSTANTLY
CONSTANTP                            CONTINUE
COPY-ALIST                           COPY-LIST
COPY-PPRINT-DISPATCH                 COPY-READTABLE
COPY-SEQ                             COPY-STRUCTURE
COPY-SYMBOL                          COPY-TREE
COS                                  COSH
COUNT                                COUNT-IF
COUNT-IF-NOT                         CTYPECASE
DECF                                 DECLAIM
DECODE-FLOAT                         DECODE-UNIVERSAL-TIME
DEFCLASS                             DEFCONSTANT
DEFGENERIC                           DEFINE-COMPILER-MACRO
DEFINE-CONDITION                     DEFINE-METHOD-COMBINATION
DEFINE-MODIFY-MACRO                  DEFINE-SETF-EXPANDER
DEFINE-SYMBOL-MACRO                  DEFMACRO
DEFMETHOD                            DEFPACKAGE
DEFPARAMETER                         DEFSETF
DEFSTRUCT                            DEFTYPE
DEFUN                                DEFVAR
DELETE                               DELETE-DUPLICATES
DELETE-FILE                          DELETE-IF
DELETE-IF-NOT                        DELETE-PACKAGE
DENOMINATOR                          DEPOSIT-FIELD
DESCRIBE                             DESCRIBE-OBJECT
DESTRUCTURING-BIND                   DIGIT-CHAR
DIGIT-CHAR-P                         DIRECTORY
DIRECTORY-NAMESTRING                 DISASSEMBLE
DO                                   DO*
DO-ALL-SYMBOLS                       DO-EXTERNAL-SYMBOLS
DO-SYMBOLS                           DOCUMENTATION
DOLIST                               DOTIMES
DPB                                  DRIBBLE
ECASE                                ECHO-STREAM-INPUT-STREAM
ECHO-STREAM-OUTPUT-STREAM            ED
EIGHTH                               ELT
ENCODE-UNIVERSAL-TIME                ENDP
ENOUGH-NAMESTRING                    ENSURE-DIRECTORIES-EXIST
ENSURE-GENERIC-FUNCTION              EQ
EQL                                  EQUAL
EQUALP                               ERROR
ETYPECASE                            EVAL
EVAL-WHEN                            EVENP
EVERY                                EXP
EXPORT                               EXPT
FBOUNDP                              FCEILING
FDEFINITION                          FFLOOR
FIFTH                                FILE-AUTHOR
FILE-ERROR-PATHNAME                  FILE-LENGTH
FILE-NAMESTRING                      FILE-POSITION
FILE-STRING-LENGTH                   FILE-WRITE-DATE
FILL                                 FILL-POINTER
FIND                                 FIND-ALL-SYMBOLS
FIND-CLASS                           FIND-IF
FIND-IF-NOT                          FIND-METHOD
FIND-PACKAGE                         FIND-RESTART
FIND-SYMBOL                          FINISH-OUTPUT
FIRST                                FLET
FLOAT                                FLOAT-DIGITS
FLOAT-PRECISION                      FLOAT-RADIX
FLOAT-SIGN                           FLOATP
FLOOR                                FMAKUNBOUND
FORCE-OUTPUT                         FORMAT
FORMATTER                            FOURTH
FRESH-LINE                           FROUND
FTRUNCATE                            FUNCALL
FUNCTION                             FUNCTION-KEYWORDS
FUNCTION-LAMBDA-EXPRESSION           FUNCTIONP
GCD                                  GENSYM
GENTEMP                              GET
GET-DECODED-TIME                     GET-DISPATCH-MACRO-CHARACTER
GET-INTERNAL-REAL-TIME               GET-INTERNAL-RUN-TIME
GET-MACRO-CHARACTER                  GET-OUTPUT-STREAM-STRING
GET-PROPERTIES                       GET-SETF-EXPANSION
GET-UNIVERSAL-TIME                   GETF
GETHASH                              GO
GRAPHIC-CHAR-P                       HANDLER-BIND
HANDLER-CASE                         HASH-TABLE-COUNT
HASH-TABLE-P                         HASH-TABLE-REHASH-SIZE
HASH-TABLE-REHASH-THRESHOLD          HASH-TABLE-SIZE
HASH-TABLE-TEST                      HOST-NAMESTRING
IDENTITY                             IF
IGNORE-ERRORS                        IMAGPART
IMPORT                               IN-PACKAGE
INCF                                 INITIALIZE-INSTANCE
INPUT-STREAM-P                       INSPECT
INTEGER-DECODE-FLOAT                 INTEGER-LENGTH
INTEGERP                             INTERACTIVE-STREAM-P
INTERN                               INTERSECTION
INVALID-METHOD-ERROR                 INVOKE-DEBUGGER
INVOKE-RESTART                       INVOKE-RESTART-INTERACTIVELY
ISQRT                                KEYWORDP
LABELS                               LAMBDA
LAST                                 LCM
LDB                                  LDB-TEST
LDIFF                                LENGTH
LET                                  LET*
LISP-IMPLEMENTATION-TYPE             LISP-IMPLEMENTATION-VERSION
LIST                                 LIST*
LIST-ALL-PACKAGES                    LIST-LENGTH
LISTEN                               LISTP
LOAD                                 LOAD-LOGICAL-PATHNAME-TRANSLATIONS
LOAD-TIME-VALUE                      LOCALLY
LOG                                  LOGAND
LOGANDC1                             LOGANDC2
LOGBITP                              LOGCOUNT
LOGEQV                               LOGICAL-PATHNAME
LOGICAL-PATHNAME-TRANSLATIONS        LOGIOR
LOGNAND                              LOGNOR
LOGNOT                               LOGORC1
LOGORC2                              LOGTEST
LOGXOR                               LONG-SITE-NAME
LOOP                                 LOOP-FINISH
LOWER-CASE-P                         MACHINE-INSTANCE
MACHINE-TYPE                         MACHINE-VERSION
MACRO-FUNCTION                       MACROEXPAND
MACROEXPAND-1                        MACROLET
MAKE-ARRAY                           MAKE-BROADCAST-STREAM
MAKE-CONCATENATED-STREAM             MAKE-CONDITION
MAKE-DISPATCH-MACRO-CHARACTER        MAKE-ECHO-STREAM
MAKE-HASH-TABLE                      MAKE-INSTANCE
MAKE-INSTANCES-OBSOLETE              MAKE-LIST
MAKE-LOAD-FORM                       MAKE-LOAD-FORM-SAVING-SLOTS
MAKE-PACKAGE                         MAKE-PATHNAME
MAKE-RANDOM-STATE                    MAKE-SEQUENCE
MAKE-STRING                          MAKE-STRING-INPUT-STREAM
MAKE-STRING-OUTPUT-STREAM            MAKE-SYMBOL
MAKE-SYNONYM-STREAM                  MAKE-TWO-WAY-STREAM
MAKUNBOUND                           MAP
MAP-INTO                             MAPC
MAPCAN                               MAPCAR
MAPCON                               MAPHASH
MAPL                                 MAPLIST
MASK-FIELD                           MAX
MEMBER                               MEMBER-IF
MEMBER-IF-NOT                        MERGE
MERGE-PATHNAMES                      METHOD-COMBINATION-ERROR
METHOD-QUALIFIERS                    MIN
MINUSP                               MISMATCH
MOD                                  MUFFLE-WARNING
MULTIPLE-VALUE-BIND                  MULTIPLE-VALUE-CALL
MULTIPLE-VALUE-LIST                  MULTIPLE-VALUE-PROG1
MULTIPLE-VALUE-SETQ                  NAME-CHAR
NAMESTRING                           NBUTLAST
NCONC                                NINTERSECTION
NINTH                                NO-APPLICABLE-METHOD
NO-NEXT-METHOD                       NOT
NOTANY                               NOTEVERY
NRECONC                              NREVERSE
NSET-DIFFERENCE                      NSET-EXCLUSIVE-OR
NSTRING-CAPITALIZE                   NSTRING-DOWNCASE
NSTRING-UPCASE                       NSUBLIS
NSUBST                               NSUBST-IF
NSUBST-IF-NOT                        NSUBSTITUTE
NSUBSTITUTE-IF                       NSUBSTITUTE-IF-NOT
NTH                                  NTH-VALUE
NTHCDR                               NULL
NUMBERP                              NUMERATOR
NUNION                               ODDP
OPEN                                 OPEN-STREAM-P
OR                                   OUTPUT-STREAM-P
PACKAGE-ERROR-PACKAGE                PACKAGE-NAME
PACKAGE-NICKNAMES                    PACKAGE-SHADOWING-SYMBOLS
PACKAGE-USE-LIST                     PACKAGE-USED-BY-LIST
PACKAGEP                             PAIRLIS
PARSE-INTEGER                        PARSE-NAMESTRING
PATHNAME                             PATHNAME-DEVICE
PATHNAME-DIRECTORY                   PATHNAME-HOST
PATHNAME-MATCH-P                     PATHNAME-NAME
PATHNAME-TYPE                        PATHNAME-VERSION
PATHNAMEP                            PEEK-CHAR
PHASE                                PLUSP
POP                                  POSITION
POSITION-IF                          POSITION-IF-NOT
PPRINT                               PPRINT-DISPATCH
PPRINT-EXIT-IF-LIST-EXHAUSTED        PPRINT-FILL
PPRINT-INDENT                        PPRINT-LINEAR
PPRINT-LOGICAL-BLOCK                 PPRINT-NEWLINE
PPRINT-POP                           PPRINT-TAB
PPRINT-TABULAR                       PRIN1
PRIN1-TO-STRING                      PRINC
PRINC-TO-STRING                      PRINT
PRINT-NOT-READABLE-OBJECT            PRINT-OBJECT
PRINT-UNREADABLE-OBJECT              PROBE-FILE
PROCLAIM                             PROG
PROG*                                PROG1
PROG2                                PROGN
PROGV                                PROVIDE
PSETF                                PSETQ
PUSH                                 PUSHNEW
QUOTE                                RANDOM
RANDOM-STATE-P                       RASSOC
RASSOC-IF                            RASSOC-IF-NOT
RATIONAL                             RATIONALIZE
RATIONALP                            READ
READ-BYTE                            READ-CHAR
READ-CHAR-NO-HANG                    READ-DELIMITED-LIST
READ-FROM-STRING                     READ-LINE
READ-PRESERVING-WHITESPACE           READ-SEQUENCE
READTABLE-CASE                       READTABLEP
REALP                                REALPART
REDUCE                               REINITIALIZE-INSTANCE
REM                                  REMF
REMHASH                              REMOVE
REMOVE-DUPLICATES                    REMOVE-IF
REMOVE-IF-NOT                        REMOVE-METHOD
REMPROP                              RENAME-FILE
RENAME-PACKAGE                       REPLACE
REQUIRE                              REST
RESTART-BIND                         RESTART-CASE
RESTART-NAME                         RETURN
RETURN-FROM                          REVAPPEND
REVERSE                              ROOM
ROTATEF                              ROUND
ROW-MAJOR-AREF                       RPLACA
RPLACD                               SBIT
SCALE-FLOAT                          SCHAR
SEARCH                               SECOND
SET                                  SET-DIFFERENCE
SET-DISPATCH-MACRO-CHARACTER         SET-EXCLUSIVE-OR
SET-MACRO-CHARACTER                  SET-PPRINT-DISPATCH
SET-SYNTAX-FROM-CHAR                 SETF
SETQ                                 SEVENTH
SHADOW                               SHADOWING-IMPORT
SHARED-INITIALIZE                    SHIFTF
SHORT-SITE-NAME                      SIGNAL
SIGNUM                               SIMPLE-BIT-VECTOR-P
SIMPLE-CONDITION-FORMAT-ARGUMENTS    SIMPLE-CONDITION-FORMAT-CONTROL
SIMPLE-STRING-P                      SIMPLE-VECTOR-P
SIN                                  SINH
SIXTH                                SLEEP
SLOT-BOUNDP                          SLOT-EXISTS-P
SLOT-MAKUNBOUND                      SLOT-MISSING
SLOT-UNBOUND                         SLOT-VALUE
SOFTWARE-TYPE                        SOFTWARE-VERSION
SOME                                 SORT
SPECIAL-OPERATOR-P                   SQRT
STABLE-SORT                          STANDARD-CHAR-P
STEP                                 STORE-VALUE
STREAM-ELEMENT-TYPE                  STREAM-ERROR-STREAM
STREAM-EXTERNAL-FORMAT               STREAMP
STRING                               STRING-CAPITALIZE
STRING-DOWNCASE                      STRING-EQUAL
STRING-GREATERP                      STRING-LEFT-TRIM
STRING-LESSP                         STRING-NOT-EQUAL
STRING-NOT-GREATERP                  STRING-NOT-LESSP
STRING-RIGHT-TRIM                    STRING-TRIM
STRING-UPCASE                        STRING/=
STRING<                              STRING<=
STRING=                              STRING>
STRING>=                             STRINGP
SUBLIS                               SUBSEQ
SUBSETP                              SUBST
SUBST-IF                             SUBST-IF-NOT
SUBSTITUTE                           SUBSTITUTE-IF
SUBSTITUTE-IF-NOT                    SUBTYPEP
SVREF                                SXHASH
SYMBOL-FUNCTION                      SYMBOL-MACROLET
SYMBOL-NAME                          SYMBOL-PACKAGE
SYMBOL-PLIST                         SYMBOL-VALUE
SYMBOLP                              SYNONYM-STREAM-SYMBOL
TAGBODY                              TAILP
TAN                                  TANH
TENTH                                TERPRI
THE                                  THIRD
THROW                                TIME
TRACE                                TRANSLATE-LOGICAL-PATHNAME
TRANSLATE-PATHNAME                   TREE-EQUAL
TRUENAME                             TRUNCATE
TWO-WAY-STREAM-INPUT-STREAM          TWO-WAY-STREAM-OUTPUT-STREAM
TYPE-ERROR-DATUM                     TYPE-ERROR-EXPECTED-TYPE
TYPE-OF                              TYPECASE
TYPEP                                UNBOUND-SLOT-INSTANCE
UNEXPORT                             UNINTERN
UNION                                UNLESS
UNREAD-CHAR                          UNTRACE
UNUSE-PACKAGE                        UNWIND-PROTECT
UPDATE-INSTANCE-FOR-DIFFERENT-CLASS  UPDATE-INSTANCE-FOR-REDEFINED-CLASS
UPGRADED-ARRAY-ELEMENT-TYPE          UPGRADED-COMPLEX-PART-TYPE
UPPER-CASE-P                         USE-PACKAGE
USE-VALUE                            USER-HOMEDIR-PATHNAME
VALUES                               VALUES-LIST
VECTOR                               VECTOR-POP
VECTOR-PUSH                          VECTOR-PUSH-EXTEND
VECTORP                              WARN
WHEN                                 WILD-PATHNAME-P
WITH-ACCESSORS                       WITH-COMPILATION-UNIT
WITH-CONDITION-RESTARTS              WITH-HASH-TABLE-ITERATOR
WITH-INPUT-FROM-STRING               WITH-OPEN-FILE
WITH-OPEN-STREAM                     WITH-OUTPUT-TO-STRING
WITH-PACKAGE-ITERATOR                WITH-SIMPLE-RESTART
WITH-SLOTS                           WITH-STANDARD-IO-SYNTAX
WRITE                                WRITE-BYTE
WRITE-CHAR                           WRITE-LINE
WRITE-SEQUENCE                       WRITE-STRING
WRITE-TO-STRING                      Y-OR-N-P
YES-OR-NO-P                          ZEROP

everything else
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

&ALLOW-OTHER-KEYS                       &AUX
&BODY                                   &ENVIRONMENT
&KEY                                    &OPTIONAL
&REST                                   &WHOLE
**                                      ***
*BREAK-ON-SIGNALS*                      *COMPILE-FILE-PATHNAME*
*COMPILE-FILE-TRUENAME*                 *COMPILE-PRINT*
*COMPILE-VERBOSE*                       *DEBUG-IO*
*DEBUGGER-HOOK*                         *DEFAULT-PATHNAME-DEFAULTS*
*ERROR-OUTPUT*                          *FEATURES*
*GENSYM-COUNTER*                        *LOAD-PATHNAME*
*LOAD-PRINT*                            *LOAD-TRUENAME*
*LOAD-VERBOSE*                          *MACROEXPAND-HOOK*
*MODULES*                               *PACKAGE*
*PRINT-ARRAY*                           *PRINT-BASE*
*PRINT-CASE*                            *PRINT-CIRCLE*
*PRINT-ESCAPE*                          *PRINT-GENSYM*
*PRINT-LENGTH*                          *PRINT-LEVEL*
*PRINT-LINES*                           *PRINT-MISER-WIDTH*
*PRINT-PPRINT-DISPATCH*                 *PRINT-PRETTY*
*PRINT-RADIX*                           *PRINT-READABLY*
*PRINT-RIGHT-MARGIN*                    *QUERY-IO*
*RANDOM-STATE*                          *READ-BASE*
*READ-DEFAULT-FLOAT-FORMAT*             *READ-EVAL*
*READ-SUPPRESS*                         *READTABLE*
*STANDARD-INPUT*                        *STANDARD-OUTPUT*
*TERMINAL-IO*                           *TRACE-OUTPUT*
++                                      +++
//                                      ///
ARITHMETIC-ERROR                        ARRAY
ARRAY-DIMENSION-LIMIT                   ARRAY-RANK-LIMIT
ARRAY-TOTAL-SIZE-LIMIT                  BASE-CHAR
BASE-STRING                             BIGNUM
BIT-VECTOR                              BOOLE-1
BOOLE-2                                 BOOLE-AND
BOOLE-ANDC1                             BOOLE-ANDC2
BOOLE-C1                                BOOLE-C2
BOOLE-CLR                               BOOLE-EQV
BOOLE-IOR                               BOOLE-NAND
BOOLE-NOR                               BOOLE-ORC1
BOOLE-ORC2                              BOOLE-SET
BOOLE-XOR                               BOOLEAN
BROADCAST-STREAM                        BUILT-IN-CLASS
CALL-ARGUMENTS-LIMIT                    CALL-NEXT-METHOD
CELL-ERROR                              CHAR-CODE-LIMIT
CLASS                                   COMPILATION-SPEED
COMPILED-FUNCTION                       COMPILER-MACRO
CONCATENATED-STREAM                     CONDITION
CONTROL-ERROR                           DEBUG
DECLARATION                             DECLARE
DIVISION-BY-ZERO                        DOUBLE-FLOAT
DOUBLE-FLOAT-EPSILON                    DOUBLE-FLOAT-NEGATIVE-EPSILON
DYNAMIC-EXTENT                          ECHO-STREAM
END-OF-FILE                             EXTENDED-CHAR
FILE-ERROR                              FILE-STREAM
FIXNUM                                  FLOATING-POINT-INEXACT
FLOATING-POINT-INVALID-OPERATION        FLOATING-POINT-OVERFLOW
FLOATING-POINT-UNDERFLOW                FTYPE
GENERIC-FUNCTION                        HASH-TABLE
IGNORABLE                               IGNORE
INLINE                                  INTEGER
INTERNAL-TIME-UNITS-PER-SECOND          KEYWORD
LAMBDA-LIST-KEYWORDS                    LAMBDA-PARAMETERS-LIMIT
LEAST-NEGATIVE-DOUBLE-FLOAT             LEAST-NEGATIVE-LONG-FLOAT
LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT  LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT
LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT   LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT
LEAST-NEGATIVE-SHORT-FLOAT              LEAST-NEGATIVE-SINGLE-FLOAT
LEAST-POSITIVE-DOUBLE-FLOAT             LEAST-POSITIVE-LONG-FLOAT
LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT  LEAST-POSITIVE-NORMALIZED-LONG-FLOAT
LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT   LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT
LEAST-POSITIVE-SHORT-FLOAT              LEAST-POSITIVE-SINGLE-FLOAT
LONG-FLOAT                              LONG-FLOAT-EPSILON
LONG-FLOAT-NEGATIVE-EPSILON             MAKE-METHOD
METHOD                                  METHOD-COMBINATION
MOST-NEGATIVE-DOUBLE-FLOAT              MOST-NEGATIVE-FIXNUM
MOST-NEGATIVE-LONG-FLOAT                MOST-NEGATIVE-SHORT-FLOAT
MOST-NEGATIVE-SINGLE-FLOAT              MOST-POSITIVE-DOUBLE-FLOAT
MOST-POSITIVE-FIXNUM                    MOST-POSITIVE-LONG-FLOAT
MOST-POSITIVE-SHORT-FLOAT               MOST-POSITIVE-SINGLE-FLOAT
MULTIPLE-VALUES-LIMIT                   NEXT-METHOD-P
NIL                                     NOTINLINE
NUMBER                                  OPTIMIZE
OTHERWISE                               PACKAGE
PACKAGE-ERROR                           PARSE-ERROR
PI                                      PRINT-NOT-READABLE
PROGRAM-ERROR                           RANDOM-STATE
RATIO                                   READER-ERROR
READTABLE                               REAL
RESTART                                 SAFETY
SATISFIES                               SEQUENCE
SERIOUS-CONDITION                       SHORT-FLOAT
SHORT-FLOAT-EPSILON                     SHORT-FLOAT-NEGATIVE-EPSILON
SIGNED-BYTE                             SIMPLE-ARRAY
SIMPLE-BASE-STRING                      SIMPLE-BIT-VECTOR
SIMPLE-CONDITION                        SIMPLE-ERROR
SIMPLE-STRING                           SIMPLE-TYPE-ERROR
SIMPLE-VECTOR                           SIMPLE-WARNING
SINGLE-FLOAT                            SINGLE-FLOAT-EPSILON
SINGLE-FLOAT-NEGATIVE-EPSILON           SPACE
SPECIAL                                 SPEED
STANDARD                                STANDARD-CHAR
STANDARD-CLASS                          STANDARD-GENERIC-FUNCTION
STANDARD-METHOD                         STANDARD-OBJECT
STORAGE-CONDITION                       STREAM
STREAM-ERROR                            STRING-STREAM
STRUCTURE                               STRUCTURE-CLASS
STRUCTURE-OBJECT                        STYLE-WARNING
SYMBOL                                  SYNONYM-STREAM
T                                       TWO-WAY-STREAM
TYPE                                    TYPE-ERROR
UNBOUND-SLOT                            UNBOUND-VARIABLE
UNDEFINED-FUNCTION                      UNSIGNED-BYTE
VARIABLE                                WARNING

---

naked-repl

USE-NAKED-REPL will turn a SLIME REPL into a REPL able to execute function calls
without the outer set of parenthesis.

This has the effect of turning the REPL into a command line.

> (use-naked-repl)
Now using a naked repl.

> + 1 2
3

> cons 3 4
(3 . 4)

> help
BULLSEYE                     Draw a bullseye.
DRAW-CELLULAR-AUTOMATA       Draw an elementary cellular automata.
...

> use-naked-repl nil
No longer using a naked repl.

---

words

> (print-table (group (collect 50 (random-word)) 4))
funded         transvestism  Confucianisms  mucus
landlord's     nakeder       Jr's           deputies
uninitialized  Anglophiles   waistline      Truckee
morned         Erse's        Negro's        amplify
omniscient     Arrhenius's   syllogisms     tenancy's
gourmand's     conceive      Woolworth      carpus
exaggerate     Harper's      bankrupt       questionnaire
molehills      roué's        accordance     microfilming
look           crossword     vocation       unpromising
sewed          nip           sough          croupier's
recidivism's   Anatole's     credenza       atones
heavenly       Taegu's       Lucas          tiles
petty          choral

> (print-table (group (coerce (let ((start (random (length *words*)))) (subseq *words* start (+ start 200))) 'list) 5))
          misnomers          misogynist    misogynist's     misogynistic        misogynists
           misogyny          misogyny's        misplace        misplaced          misplaces
         misplacing             misplay       misplayed       misplaying           misplays
           misprint          misprint's      misprinted      misprinting          misprints
       mispronounce       mispronounced   mispronounces   mispronouncing   mispronunciation
 mispronunciation's   mispronunciations    misquotation   misquotation's      misquotations
           misquote           misquoted       misquotes       misquoting            misread
         misreading         misreadings        misreads     misrepresent  misrepresentation
misrepresentation's  misrepresentations  misrepresented  misrepresenting      misrepresents
            misrule            misruled        misrules        misruling               miss
             missal            missal's         missals           missed             misses
          misshapen             missile       missile's        missilery        missilery's
           missiles             missing         mission        mission's       missionaries
         missionary        missionary's       missioned       missioning           missions
            missive           missive's        missives         misspell         misspelled
        misspelling       misspelling's    misspellings        misspells           misspelt
           misspend         misspending       misspends         misspent           misstate
          misstated        misstatement  misstatement's    misstatements          misstates
         misstating             misstep       misstep's       misstepped        misstepping
           missteps                mist          mist's          mistake          mistake's
           mistaken          mistakenly        mistakes        mistaking             misted
             mister            mister's         misters          mistier           mistiest
            mistily             mistime        mistimed         mistimes          mistiming
          mistiness             misting       mistletoe      mistletoe's            mistook
      mistranslated            mistreat      mistreated      mistreating       mistreatment
     mistreatment's           mistreats        mistress       mistress's         mistresses
           mistrial          mistrial's       mistrials         mistrust         mistrusted
        mistrustful         mistrusting       mistrusts            mists              misty
            mistype            mistypes       mistyping    misunderstand   misunderstanding
 misunderstanding's   misunderstandings  misunderstands    misunderstood             misuse
           misuse's             misused         misuses         misusing               mite
             mite's               miter         miter's          mitered           mitering
             miters               mites        mitigate        mitigated          mitigates
         mitigating          mitigation    mitigation's          mitosis          mitosis's
               mitt              mitt's          mitten         mitten's            mittens
              mitts                 mix           mixed            mixer            mixer's
             mixers               mixes          mixing             mixt            mixture
          mixture's            mixtures          mizzen         mizzen's         mizzenmast
       mizzenmast's         mizzenmasts         mizzens         mnemonic          mnemonics
        mnemonics's                moan          moan's           moaned            moaning

---

bugout

BUGOUT is used to insert printouts at various points in developing code.

BUGOUTs are never left in code, but rather, inserted at select points
while iteratively developing to see the state of variables at those
points.

> (let ((a 1) (b 2)) (bugout a b :foo (+ a b)))

>>>  A 1  B 2  :FOO  (+ A B) 3

The above BUGOUT macro expanded into

  (FORMAT T "~%>>>  A ~S  B ~S  :FOO  (+ A B) ~S~2%" A B (+ A B))

---

breakout

BREAKOUT is like BUGOUT, but signals a BREAK with the select variables
being the arguments to this BREAK. This allows for easily inserting
breakpoints that give readouts of variables and also further access
from within the SLIME debugger backtrace to these variables.

---

flatten

Pay Attention!! A classic utility is being introduced here!

FLATTEN takes trees of CONSes and returns all the non-NIL leaves.

> (flatten '(1 nil 2))
(1 2)

> (flatten '(1 (2 (3))))
(1 2 3)

> (flatten '(1 (2 (3) (4 (5 6)))))
(1 2 3 4 5 6)

Yes, fellow acadamians, Lisp supports trees out of the box!

---

read-lisp-file

> (read-lisp-file "/emerald-city/academy/war.lisp")
((IN-PACKAGE :ACADEMY)
 (DEFUN WAR ()
   "Global Thermonuclear War"
   (FORMAT T "A strange game. The only winning move is not to play.~%")))

This commit demonstrates the method of using a GENSYM for the
EOF-VALUE for READ.

---

show-all-used-common-lisp-symbols

For listing all the symbols in a particular package that come from the CL package.

> (show-all-used-common-lisp-symbols :academy)

functions
▀▀▀▀▀▀▀▀▀

*                    +                       -                     /
/=                   1+                      1-                    <
<=                   =                       >                     >=
ABS                  ADJUST-ARRAY            AND                   APPLY
AREF                 ARRAY-DIMENSIONS        ASSOC                 ASSOC-IF
ATAN                 BOUNDP                  BREAK                 CAR
CASE                 CDDDR                   CDR                   CHAR
CHAR-CODE            CHAR-NAME               CHAR-UPCASE           CHAR=
CHARACTER            CODE-CHAR               COERCE                CONCATENATE
COND                 CONS                    CONSP                 COS
COUNT                DECF                    DEFMACRO              DEFPACKAGE
DEFPARAMETER         DEFSTRUCT               DEFUN                 DEFVAR
DESTRUCTURING-BIND   DIGIT-CHAR-P            DIRECTORY-NAMESTRING  DO
DOCUMENTATION        DOTIMES                 ECASE                 ELT
EQ                   EQL                     EQUAL                 EQUALP
ERROR                EVENP                   EVERY                 FBOUNDP
FILE-LENGTH          FILE-POSITION           FIND                  FIND-SYMBOL
FIRST                FLET                    FLOOR                 FORCE-OUTPUT
FORMAT               FRESH-LINE              FUNCALL               FUNCTION
GENSYM               GET-UNIVERSAL-TIME      GETHASH               HANDLER-CASE
IDENTITY             IF                      IN-PACKAGE            INCF
INTERSECTION         KEYWORDP                LABELS                LAMBDA
LENGTH               LET                     LET*                  LIST
LISTP                LOGAND                  LOGBITP               LOGCOUNT
LOOP                 MACROLET                MAKE-ARRAY            MAKE-HASH-TABLE
MAKE-LIST            MAKE-STRING             MAP                   MAPCAR
MAX                  MEMBER                  MINUSP                MOD
MULTIPLE-VALUE-BIND  NOT                     NREVERSE              NTH
NTHCDR               NULL                    OR                    PARSE-INTEGER
PLUSP                POSITION                PRIN1                 PRINC
PRINC-TO-STRING      PROBE-FILE              PROG1                 PROGN
PUSH                 QUOTE                   RANDOM                READ
READ-FROM-STRING     READ-LINE               READ-SEQUENCE         REDUCE
REMOVE-DUPLICATES    REMOVE-IF               REMOVE-IF-NOT         REST
RETURN               REVERSE                 ROUND                 SECOND
SET                  SETF                    SIN                   SORT
STEP                 STRING                  STRING-DOWNCASE       STRING<
SUBSEQ               SYMBOL-FUNCTION         SYMBOL-NAME           SYMBOLP
TAN                  TERPRI                  THIRD                 TYPEP
UNLESS               VALUES                  VECTOR                WARN
WHEN                 WITH-INPUT-FROM-STRING  WITH-OPEN-FILE        WITH-OUTPUT-TO-STRING
WITH-SLOTS           WRITE-CHAR              WRITE-STRING          ZEROP

everything else
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

&BODY        &KEY                &OPTIONAL  &REST
*READ-EVAL*  *STANDARD-OUTPUT*   NUMBER     PARSE-ERROR
PI           SEQUENCE            STREAM     SYMBOL
T            UNDEFINED-FUNCTION

---

add :INPUT argument to RUN-PROGRAM-TO-STRING

> (with-input-from-string (stream "foo") (run-program-to-string "cat" nil :input stream))
"foo"

---

spelling

> (spellcheck "Is that a snarfle is see yonder?")
("snarfle")

> (spellcheck-docstrings :academy)

SPELLCHECK-DOCSTRINGS : spelllling
...

---

faq.txt

How can I join the academy?

Membership is earned.

---

compliments

> (compliment)
You are so eloquent.

---

pedantic-if

IFs with no else clause or a NIL else clause should always be replaced
with a WHEN.

Adhering to style has concrete advantages. The advantage is that it
decreases the mental effort required for a human to parse and
understand the code. In this case, if adhered to, every IF you see
will always have an else clause. You can count on it. Ignore this
style and every time you see an IF you wont know until you read
further in the code. A definite advantage and valuable.

Here we shadow the standard IF with our own that warns when we violate
these style rules.

> (defun foo (a) (if (eq a :foo) :baz))
; in: DEFUN FOO
;     (ACADEMY::IF (EQ ACADEMY::A :FOO) :BAZ)
;
; caught WARNING:
;   A single legged IF should be replaced with a WHEN.
;
; compilation unit finished
;   caught 1 WARNING condition
FOO

> (foo :foo)
:BAZ

> (foo 123)
NIL

> (if :foo :baz nil)
WARNING: An if's else of NIL should be replaced with a WHEN.

This commit demonstrates

  * Shadowing core CL functionality with our own cooked up versions.
  * Using the optional SUPPLIED-P-PARAMETER to distinguish between a
    supplied NIL and no argument.

---

factorial

> (print-table (loop for x from 1 to 64 collect (list x (factorial x))))

1   1
2   2
3   6
4   24
5   120
6   720
7   5040
8   40320
9   362880
10  3628800
11  39916800
12  479001600
13  6227020800
14  87178291200
15  1307674368000
16  20922789888000
17  355687428096000
18  6402373705728000
19  121645100408832000
20  2432902008176640000
21  51090942171709440000
22  1124000727777607680000
23  25852016738884976640000
24  620448401733239439360000
25  15511210043330985984000000
26  403291461126605635584000000
27  10888869450418352160768000000
28  304888344611713860501504000000
29  8841761993739701954543616000000
30  265252859812191058636308480000000
31  8222838654177922817725562880000000
32  263130836933693530167218012160000000
33  8683317618811886495518194401280000000
34  295232799039604140847618609643520000000
35  10333147966386144929666651337523200000000
36  371993326789901217467999448150835200000000
37  13763753091226345046315979581580902400000000
38  523022617466601111760007224100074291200000000
39  20397882081197443358640281739902897356800000000
40  815915283247897734345611269596115894272000000000
41  33452526613163807108170062053440751665152000000000
42  1405006117752879898543142606244511569936384000000000
43  60415263063373835637355132068513997507264512000000000
44  2658271574788448768043625811014615890319638528000000000
45  119622220865480194561963161495657715064383733760000000000
46  5502622159812088949850305428800254892961651752960000000000
47  258623241511168180642964355153611979969197632389120000000000
48  12413915592536072670862289047373375038521486354677760000000000
49  608281864034267560872252163321295376887552831379210240000000000
50  30414093201713378043612608166064768844377641568960512000000000000
51  1551118753287382280224243016469303211063259720016986112000000000000
52  80658175170943878571660636856403766975289505440883277824000000000000
53  4274883284060025564298013753389399649690343788366813724672000000000000
54  230843697339241380472092742683027581083278564571807941132288000000000000
55  12696403353658275925965100847566516959580321051449436762275840000000000000
56  710998587804863451854045647463724949736497978881168458687447040000000000000
57  40526919504877216755680601905432322134980384796226602145184481280000000000000
58  2350561331282878571829474910515074683828862318181142924420699914240000000000000
59  138683118545689835737939019720389406345902876772687432540821294940160000000000000
60  8320987112741390144276341183223364380754172606361245952449277696409600000000000000
61  507580213877224798800856812176625227226004528988036003099405939480985600000000000000
62  31469973260387937525653122354950764088012280797258232192163168247821107200000000000000
63  1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000
64  126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000

---

safety

Common lisp's READ function parses a stream of characters and returns
lisp objects.

Now, by object, I'm not talking Object Orientated Programming (OOP),
but rather one of the many different types of things that lisp can
work with such as strings, numbers, and lists (well, really 'cons'
cells but that is to be described elsewhere).

With no arguments, READ reads from the keyboard:

> (read)
2.718    <- you type this in
2.718    <- what READ returns after converting to a lisp object

So READ parsed the stream of characters '2' '.' '7' '1' '8' and
returned the floating point number 2.718.

> (read)
foo
FOO

READ parsed the characters 'f' 'o' 'o' and returned the symbol FOO.

> (read)
"foo"
"foo"

> (read)
(we love lisp)
(WE LOVE LISP)

You get the idea.

Now, how the READ function does this is with the use of a thing called
a 'readtable' which contains all the rules for how to deal with
characters it is trying to parse.

In the standard readtable, the character sequence '#' followed by '.'
causes the reader to EVALuate the results of calling READ on the rest
of the sequence of characters.

Clear? Hmm....

> (read)
(+ 1 2)
(+ 1 2)

The reader parses '(' '+' ' ' '1' ' ' '2' ')' into the list (+ 1 2).

> (read)
 #.(+ 1 2)
3

Note that the extra space above before the '#' is so that git doesn't
think the line is a comment and remove it.

The reader read '#' followed by '.' and then recursively called itself
to READ the sequence of characters '(' '+' ' ' '1' ' ' '2' ')' into
the list (+ 1 2) and then called EVAL on this list to get the result,
3.

> (read )
(+ #.(+ 1 2) 4)
(+ 3 4)

> (read)
 #.(+ #.(+ 1 2) 4)
7

Now, this is all fine and dandy and useful *except* when this behavior
is not desirable. One very common case is when reading things from a
user or some other source where you do not have complete control as
this functionality allows for running *anything* in the system via
this input stream of characters.

BAD BAD things can happen if you do not account for this.

> (defun my-moon-weight? ()
    (format t "What is your weight in pounds?~%")
    (let ((weight (read)))
      (format t "On the moon you would weigh ~F pounds.~%" (/ weight 6))))
MY-MOON-WEIGHT?

> (my-moon-weight?)
What is your weight in pounds?
165
On the moon you would weight 27.5 pounds.

This function does not check the validity of the input but that seems
OK because at least it will error out pretty quickly on bad input.

> (my-moon-weight?)
What is your weight in pounds?
one cheeseburger
ERROR: Argument X is not a NUMBER: ONE

All seems OK, but now see...

> (defun boo () (princ "Mwaaahhaahaa!!")
BOO

> (my-moon-weight?)
What is your weight in pounds?
 #.(boo)
Mwaaahhaahaa!!

So the user has been able to run arbitrary code from this simple
little function, which might have been happily linked to a web page or
something open to the world. Oops.

The standard readtable has a variable *READ-EVAL* which controls
whether or not the sequence '#' '.' works or errors. Note that the
default is T.

This commit introduces SAFE-READ, which is a shortcut for binding
*READ-EVAL* to NIL.

> (safe-read)
 #.(boo)
ERROR: can't read #. while *READ-EVAL* is NIL

The academy will always use SAFE-READ when reading from the keyboard
or anywhere that we do not have complete control of both the
horizontal and the vertical.

---

phonetic-alphabet

> (string-to-phonetic-alphabet "academy")
(ALFA CHARLIE ALFA DELTA ECHO MIKE YANKEE)

---

apple-ii-disks

> (show-apple-disk-catalog)
Catalog of DOS disk "/emerald-city/academy/vintage/prisoner.dsk".
HELLO        APPLESOFT-BASIC
CAT          INTEGER-BASIC
EDU-WARE     APPLESOFT-BASIC
TONES        BINARY
PR.BEGIN     APPLESOFT-BASIC
PR.SQ1       APPLESOFT-BASIC
PR.VILLAGE   APPLESOFT-BASIC
PR.SCHOOL    APPLESOFT-BASIC
...

> (show-apple-disk-file "PR.CHURCH")
PR.CHURCH APPLESOFT-BASIC
1  ZZ=FRE(0) : POKE -16368,0
2  ONERR GOTO 32000
9  GOTO 1000
300  TEXT  : INVERSE  : L3%=3 : L4%=23 : H3%=4 : H4%=7 : GOSUB 395 : RETURN
310  NORMAL  : POKE 32,16 : POKE 33,21 : POKE 34,15 : POKE 35,18 : HOME  : RETURN
350  FOR I3=1 TO 2500 : NEXT I3 : RETURN
395  T1%=L4%-L3%+1 : VTAB H3% : FOR I3=H3% TO H4% : HTAB L3% : PRINT SPC(T1%) : PRINT  : NEXT I3 : RETURN
400  GOSUB 500 : GOSUB 310 : INPUT IP$ : IP$=IP$+" " : A$=LEFT$ (IP$,1) : RETURN
500  GOSUB 300 : INVERSE  : VTAB 4
501  A%=21 : IF LEN(TP$)<22 THEN HTAB 3 : PRINT TP$ : RETURN
503  IF MID$(TP$,A%,1)<>" " THEN A%=A%-1 : GOTO 503
505  HTAB 3 : PRINT LEFT$ (TP$,A%-1) : TP$=MID$(TP$,A%+1,LEN(TP$)-A%) : GOTO 501
650  GOSUB 400 : IF A$="N" THEN T2%=T2%+1
651  RETURN
655  GOSUB 400 : IF A$<>"N" THEN T2%=T2%+1
656  RETURN
1000  GOSUB 10000
1003  TP$="WILL YOU MAKE A 5 CREDIT CONTRIBUTION TO OUR CHURCH?" : GOSUB 500 : GOSUB 310 : INPUT IP$ : IF LEFT$ (IP$,1)<>"Y" THEN ID%=ID%+5 : GOTO 1008
1005  IF CR%>4 THEN CR%=CR%-5
1008  IF MR% THEN TP$="I UNDERSTAND YOU'VE GOTTEN YOURSELF INTO SOME TROUBLE, MY SON" : GOSUB 500 : GOSUB 350 : TP$="PLEASE FEEL FREE TO TALK ABOUT IT IF YOU WILL" : GOSUB 500 : GOTO 1013
1010  TP$="GREETINGS, MY CHILD. SHALL WE HAVE A CHAT?" : GOSUB 500
1011  GOSUB 310 : INPUT IP$ : IF LEFT$ (IP$,1)="N" THEN TP$="AS YOU WISH. IF YOU NEED SOMEONE TO TALK TO, I AM HERE" : GOSUB 500 : GOSUB 350 : GOTO 1020
1012  TP$="DON'T WORRY. ALL IS KEPT IN CONFIDENCE IN THESE CHAMBERS" : GOSUB 500 : CT%=ID%
1013  GOSUB 2000
1015  IF NOT(PS%(4)) AND ID%-CT%>10+INT(RND(1)* 20) THEN PS%(4)=PS%(4)+1 : TP$="TO COMFORT YOU IN THESE TIMES I AM GIVING YOU THIS CROSS" : GOSUB 500 : GOSUB 350
1020  TP$="REMAIN STRONG, MY CHILD" : GOSUB 500
1030  TEXT  : NORMAL  : PRINT  : PRINT CH$
1035  CALL 520"PR.VILLAGE"
1999  END
2000  TP$="" : T1%=0 : GOSUB 310 : INPUT IP$ : IP$=IP$+"   " : FOR I=1 TO LEN(IP$)-2 : A$=MID$(IP$,I,3) : IF A$="WHO" OR A$="WHA" OR A$="WHE" OR A$="HOW" OR A$="WHY" OR A$="?  " THEN T1%=1 : GOTO 2010
2003  IF A$="ESC" OR A$="OFF" OR A$="LEA" OR A$="RUN" OR A$="PRI" OR A$="OUT" THEN T1%=2 : GOTO 2010
2004  IF A$="FUC" OR A$="SHI" OR A$="ASS" OR A$="BAS" OR A$="BIT" OR A$="DAM" THEN T1%=3 : GOTO 2010
2005  IF MR% AND (A$="MUR" OR A$="KIL" OR A$="COU" OR A$="GIR") THEN T1%=4 : GOTO 2010
2006  IF A$="BYE" THEN T1%=5 : GOTO 2010
2007  IF A$=RC$ THEN T1%=6 : GOTO 2010
2008  IF A$="ELP" THEN T1%=7 : GOTO 2010
2009  NEXT I : GOTO 2013
2010  I=I+2 : NEXT I
2013  T1%=T1%+1 : ON T1% GOTO 2100,2200,2300,2400,2500,2600,2700,2800
2020  GOSUB 500 : T1%=0 : GOTO 2000
2100  IF MR% AND INT(RND(1)* 2) THEN ON INT(RND(1)* 3)+1 GOSUB 15001,15002,15003 : GOTO 2020
2103  ON INT(RND(1)* 11)+1 GOSUB 11001,11002,11003,11004,11005,11006,11007,11008,11009,11010,11011 : GOTO 2020
2200  ON INT(RND(1)* 6)+1 GOSUB 12001,12002,12003,12004,12005,12006 : ID%=ID%+1 : GOTO 2020
2300  ID%=ID%+3 : IF ID%>400 AND INT(RND(1)* 1.1) THEN 3000
2303  ON INT(RND(1)* 4)+1 GOSUB 13001,13002,13003,13004,13005 : GOTO 2020
2400  TP$="FOUL LANGUAGE WILL NOT WIN YOU FRIENDS" : ID%=ID%-1 : GOTO 2020
2500  GOTO 3000
2600  RETURN
2700  POP  : NORMAL  : PRINT  : PRINT CH$
2703  CALL 520"PR.LOSE"
2800  TP$="I AM HERE TO HELP YOU" : GOTO 2020
3000  TP$="YOU ARE INDEED IN TROUBLE. I MAY BE ABLE TO HELP YOU. ARE YOU INTERESTED?" : GOSUB 400 : IF A$="N" THEN TP$="AS YOU WISH. BUT PLEASE CONSIDER MY OFFER" : GOSUB 500 : GOTO 2000
3003  TP$="PLEASE CONSIDER CAREFULLY. HAVE YOU EVER ESCAPED FROM THE ISLAND?" : GOSUB 400 : IF A$="Y" THEN TP$="YOU KNOW YOU HAVEN'T" : GOSUB 500 : GOTO 3005
3004  TP$="I KNOW YOU HAVEN'T" : GOSUB 500
3005  GOSUB 350 : TP$="WHAT ARE YOU ESCAPING FROM, TRULY?" : GOSUB 400 : TP$="BUT THINK. HAVE YOU NOT ALWAYS BEEN A PRISONER?" : GOSUB 400 : IF A$="N" THEN TP$="OH? TRY TO REMEMBER THE LAST TIME YOU WHERE TRULY, TRULY FREE" : GOSUB 500 : GOSUB 350
3008  TP$="WHO ARE THE PRISONERS AND WHO ARE THE KEEPERS?" : GOSUB 400 : TP$="MEN ARE NOT PRISONERS OF FATE, BUT OF THEIR MINDS" : GOSUB 500 : GOSUB 350
3010  TP$="HAVE YOU NOT YET REALIZED THERE IS NO PHYSICAL ESCAPE?" : GOSUB 500 : GOSUB 350 : TP$="YOU HAVE ALWAYS BEEN HERE AND WILL ALWAYS BE HERE" : GOSUB 500 : GOSUB 350
3013  TP$="HOWEVER, THERE IS A FORM OF ESCAPE, IF YOU ARE WILLING" : GOSUB 500 : GOSUB 350 : TP$="IT IS AN ESCAPE FROM THE BONDAGE OF THIS ENSLAVING SOCIETY" : GOSUB 500 : GOSUB 350
3015  TP$="WOULD YOU CONSIDER JOINING THE PRIESTHOOD?" : GOSUB 400 : IF A$="N" THEN TP$="WON'T YOU RECONSIDER? ANY OTHER PATH MUST SEEM FRUITLESS" : GOSUB 400 : IF A$="N" THEN TP$="WELL, THE OFFER STANDS" : GOSUB 500 : GOTO 2000
3018  T2%=0 : TP$="LET US SEE IF YOU PASS THE TEST" : GOSUB 500 : GOSUB 350 : TP$="DO YOU USE TRADITIONAL APPROACHES TO PROBLEMS?" : GOSUB 650
3020  TP$="DO YOU BELIEVE LEARNING SHOULD BE PRACTICAL?" : GOSUB 650
3021  TP$="DO YOU PRIZE THE INDIVIDUAL ABOVE THE STATE?" : GOSUB 655
3023  TP$="DO YOU MEASURE SUCCESS BY ECONOMIC MEANS?" : GOSUB 650
3025  TP$="DO YOU FEEL THAT MANY ARTISTS ARE WEIRD OR IMMORAL?" : GOSUB 650
3026  TP$="DO YOU THINK SOME CORRUPTION IN GOVERNMENT IS INEVITABLE?" : GOSUB 655
3027  TP$="DO YOU THINK GOOD WORKS ARE MORE IMPORTANT THAN RELIGOUS BELIEFS?" : GOSUB 655
3028  TP$="DO YOU BELIEVE THAT PEOPLE SHOULD CONFORM TO SOCIAL EXPECTATIONS?" : GOSUB 650
3030  TP$="DO YOU JUDGE PEOPLE AND EVENTS MORALISTICALLY?" : GOSUB 650
3033  ID%=ID%+5* T2% : IF T2%<7 THEN TP$="I AM SORRY. YOU HAVE NOT YET LEARNED" : GOSUB 500 : GOSUB 350 : GOTO 2000
3035  TP$="GOOD. YOU PASS THE TESTS. NOW YOU MUST PROVE YOUR COMMITMENT" : GOSUB 500 : GOSUB 350 : TP$="YOU MUST DEMONSTRATE THAT YOU HAVE ESCAPED YOUR PREVIOUS LIFE" : GOSUB 500 : MR%=0
3040  GOSUB 310 : INPUT IP$ : IP$=IP$+"  " : FOR I=1 TO LEN(IP$)-2 : A$=MID$(IP$,I,3) : IF A$=RC$ THEN T2%=0
3045  NEXT I : IF NOT(T2%) THEN GOTO 30000
3048  TP$="YOU HAVE NOT YET PROVED. ARE YOU STILL INTERESTED?" : GOSUB 400 : IF A$="N" THEN TP$="ARE YOU SURE?" : GOSUB 400 : IF A$="Y" THEN TP$="I AM SORRY. LIFE WILL BE HARD FOR YOU" : GOSUB 500 : GOSUB 350 : TP$="YOUR CRIMES ARE ABSOLVED" : GOSUB 500 : GOTO 2000
3050  TP$="OFFER PROOF THAT YOU HAVE GIVEN UP YOUR PAST" : GOSUB 500 : GOTO 3040
10000  TEXT  : HOME  : FLASH  : FOR I=1 TO 24 : PRINT SPC(40) : NEXT I : GOSUB 300 : VTAB 1 : FOR I=1 TO 23 : HTAB 12 : PRINT "   " : NEXT I : GOSUB 310 : TEXT  : RETURN
11001  TP$="A SMOOTH SEA NEVER MADE A SKILLFUL SAILOR" : RETURN
11002  TP$="HE WHO WOULD LEAP MUST MAKE A LONG RUN" : RETURN
11003  TP$="NOTHING IS EASY TO THE UNWILLING" : RETURN
11004  TP$="A HARD BEGINNING MAKES A GOOD ENDING" : RETURN
11005  TP$="I UNDERSTAND" : RETURN
11006  TP$="PLEASE, CONTINUE" : RETURN
11007  TP$="GO ON. A FRIENDLY EAR CAN RELIEVE A TROUBLED MIND" : RETURN
11008  TP$="I HEAR YOU" : RETURN
11009  TP$="I SEE" : RETURN
11010  TP$="THE TRUTH SHALL SET YOU FREE" : RETURN
11011  TP$="DON'T BE AFRAID TO CONFIDE IN ME. NO MAN IS AN ISLAND" : RETURN
12001  TP$="LIFE HAS NO ANSWERS ;  ONLY MORE QUESTIONS" : RETURN
12002  TP$="WHO WOULD KNOW BETTER?" : RETURN
12003  TP$="SEARCH YOURSELF FOR THE TRUTH" : RETURN
12004  TP$="WE ENTER THE WORLD KNOWING ALL WE NEED TO KNOW" : RETURN
12005  TP$="ANSWERS ARE A PRISON FOR ONESELF" : RETURN
12006  TP$="ANSWERS MAY BE FOUND IN THE GOOD BOOK" : RETURN
13001  TP$="THE ABSENT SHALL NOT BE MADE HEIR" : RETURN
13002  TP$="EVERY EXIT IS BUT AN ENTRY SOMEWHERE ELSE" : RETURN
13003  TP$="MAN IS BORN FREE BUT EVERYWHERE HE IS IN CHAINS" : RETURN
13004  TP$="HE THAT IS DISCONTENTED IN ONE PLACE IS SELDOM HAPPY IN ANOTHER" : RETURN
13005  TP$="ONLY HE WHO TAKES CARE OF YOU CAN SET YOU FREE" : RETURN
15001  TP$="CONFESS YOUR SINS" : RETURN
15002  TP$="GUILT SHOULD NOT BE KEPT BOTTLED UP" : RETURN
15003  TP$="ARE YOU SURE THERE ISN'T SOMETHING ELSE YOU WOULD LIKE TO TALK ABOUT?" : RETURN
30000  POP  : NORMAL  : PRINT  : PRINT CH$
30003  CALL 520"PR.LOSE"
32000  T1%=PEEK(222) : CALL 1002 : IF T1%=5 OR T1%=6 OR T1%=7 OR T1%=13 THEN RESUME
32003  NORMAL  : TEXT  : PRINT  : PRINT CH$
32005  IF T1%=255 THEN CALL 520"PR.SAVE"
32008  CALL 520"PR.ERR"

---