>> The best choice in terms of meaning seems to be "^", but we
>>already dismissed that for ergonomic reasons.
>
>Perhaps a variant?
Hmm. Lemme free-associate for a minute...
define square(x) ^{x*x}
too small. Make it bigger:
define square(x) /\{x*x}
weird and hard to type. Maybe something more subtle:
define square(x) ^^{x*x}
not much more prominent and too arbitrary. If we're gonna be arbitrary anyway:
define square(x) ** {x*x}
it stands out, but what's the rationale otherwise? (also will confuse FORTRAN programmers). How about going back to mathematics? If |foo| means "value of foo", then how about:
define square(x) |{x*x}|
except that closing v-bar will got lost when there's a big block. Put it in front maybe:
define square(x) ||{x*x}
looks like "or" (or concat depending on your native language). If we're talking about *value*, how about:
define square(x) ${x*x}
it bit culturally specific, maybe, but then I've always been a fan of cultural imperialism; shell programmers will like it, anyway.
Nothing perfect yet.