Hacker News new | ask | show | jobs
by rogpeppe1 5107 days ago
I've been using acme for a long time (previously vi was my editor of choice). One property of acme that I think isn't so obvious is the way that text becomes higher-order, in the same kind of way that S-expressions in Lisp are higher-order.

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.

1 comments

"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.