Thanks for the quiz, James - a great one!
I set up a LISPy environment and copied the LISP code as closely as
possible, using Ruby procs, arrays and strings. Closer than James, even - I
use setf and let, although I didn't make "defmacro" :) I did, however,
manage to make the Ruby code "splash bucket wizard" equivalent to
"splash('bucket', 'wizard')".
Find it here: http://www.dave.burt.id.au/ruby/lisperati.rb
Cheers,
Dave
D:\Docs\ruby>irb
irb(main):001:0> require 'lisperati'
(YOU ARE IN THE LIVING_ROOM OF A WIZARDS HOUSE. THERE IS A WIZARD SNORING
LOUDLY ON THE COUCH. THERE IS A DOOR GOING WEST FROM HERE. THERE IS A
STAIRWAY GOING UPSTAIRS FROM HERE. YOU SEE A WHISKEY_BOTTLE ON THE FLOOR.
YOU SEE A BUCKET ON THE FLOOR.)
=> true
irb(main):002:0> pickup bucket
=> (YOU ARE NOW CARRYING THE BUCKET)
irb(main):003:0> walk west
=> (YOU ARE IN A BEAUTIFUL GARDEN. THERE IS A WELL IN FRONT OF YOU. THERE IS
A DOOR GOING EAST FROM HERE. YOU SEE A FROG ON THE FLOOR. YOU SEE A CHAIN ON
THE FLOOR.)
irb(main):004:0> inventory[]
=> (BUCKET)