Does anyone know what does the author mean by “Also this enables me to write a Question-Asking macro for dryads wake without going totally insane.” in the homoiconity section? Does it do something more than you’d implement in other languages with something like a function:
where Choice : (ResponseText, Message?, [Actions])
Where’s the big issue here and how does homoiconity solve it?
At the basis your function definition and his macro are not that different. Though the macro does not seems to be recursive and can’t really take a list of possible ResponseText, Message?, Actions it still has the upside of “fitting” with the rest of the language. For some (Choose choice action …) it still is better than (Choose ‘((choice . action) …)), e.g. it’s just nicer to read, but some times it has deep implications such as hiding the implementing structures, association list vs tree vs heap vs whatever. He may be very happy about it but the example is just strange.