Re:A Tour of Go - Real examples of interfaces and concurrency
by owlpic on Friday June 22, 2012 @12:33PM
(#4147489)
"The power of structural regexps combined with proper Undo/Redo is also great - rather than pipe something through sed or awk, I'll often iteratively build up an expression or set of expressions that perform some particular one-off transformation, rewinding and retrying as necessary."
It would be interesting to see examples of this.
Much of the power of Lisp comes from the fact that the result of executing an S-expression is also an executable S-expression itself, so programs that write programs become trivial.
This property is true of acme too - we execute text with a middle-button click or drag, and the command that's executed can produce more text, which is itself executable text.
Thus I can extend the functionality of acme by writing tiny shell scripts that print useful commands. I can run a command that produces a list of stuff, use structural regexps to transform that stuff into an acme command, then execute that to transform something else.
The power of structural regexps combined with proper Undo/Redo is also great - rather than pipe something through sed or awk, I'll often iteratively build up an expression or set of expressions that perform some particular one-off transformation, rewinding and retrying as necessary.
I could go on!
Acme certainly isn't perfect, but it is wonderful.