From: Tim Bradshaw on
On 2010-04-15 15:03:21 +0100, Raffael Cavallaro said:

> On a more practical note, Tim, you might want to pick up a copy of
> Wolfram's magnum opus _A New Kind Of Hygiene_ where he shows you how to
> use cellular automata to do explicit renaming.

Heh, I was given a second-and copy of that (well, not that, but another
book of a similar name) by someone who had found it unreadable, and,
well, it's sad really. All that work, and to what end?

From: fortunatus on
On Apr 15, 11:28 am, Tim Bradshaw <t...(a)tfeb.org> wrote:
> ...  All that work, and to what end?

Cellular automata are clearly important for your clothing problem. In
fact here is the solution:

A1K4D2J3F5K3S6L3D3K2M1F2K5E2J4A2S3K4D2J5F4K6A3J2S2K1D2L1F0

Now construct your T-shirt. Wear it proudly around town, don't worry
if it seems barely visible, we know it's there.

<Your slaves at work!>
From: Pillsy on
On Apr 14, 5:13 pm, Tim Bradshaw <t...(a)tfeb.org> wrote:
[...]
> I mean, if you think CL has problems with macro hygene, you ought to
> see Mathematica.  And hygene problems are some minute fraction of the
> ailments it suffers from.

It's sort of amazing, isn't it? It's like the language was
intentionally designed to thwart any attempts to have a hygienic
macro. You don't have quasi-quotation, and the various things you can
try to use like an ersatz form of quasi-quotation simply don't work
right. The built-in scoping operators like Module, Function and
RuleDelayed will "helpfully" rewrite their body forms in a bogus
attempt to automatically enforce hygiene and/or fake lexical scoping.
And that's just the stuff that's blatantly broken, and leaves aside
more subtly broken bits like the gensyms that aren't actually
gensyms.

Nine times out of ten, the best you can do in a "macro" (they're
closer to FEXPRs, but whatever) is something like this:

Attributes[FakeTable] = {HoldAll}

FakeTable[expr_, {var_, rangeArgs__}] :=
Function[Block[{var = #}, expr]

It'll work just like a limited version of Table in most circumstances.
The exceptions will provide you with hours of fun.

Really, the fact the various Hold* attributes look like they could be
used to implement control structures macro-style is a trap. WRI wants
to punish you for knowing Lisp. It's the only explanation.

Cheers,
Pillsy
From: Robert Dodier on
On Apr 14, 3:13 pm, Tim Bradshaw <t...(a)tfeb.org> wrote:

> the kind of tinkering-with-applied-maths that I do in my spare time

Well, if you're interested, give Maxima a try ---
if you have problems with the language itself, there is
some hope it can be revised: you only have to convince
about a half dozen people (a dozen at the outside) that
it's a good idea. Much simpler than revising either a
commercial product or something defined by a bureaucracy.

The opinions of well-informed outsiders are very valuable
to Maxima. Feel free to join the party.

FWIW

Robert Dodier
From: Tim Bradshaw on
On 2010-04-16 23:50:16 +0100, Robert Dodier said:

>
> Well, if you're interested, give Maxima a try ---
> if you have problems with the language itself, there is
> some hope it can be revised: you only have to convince
> about a half dozen people (a dozen at the outside) that
> it's a good idea. Much simpler than revising either a
> commercial product or something defined by a bureaucracy.

Is Maxima essentially the same thing as Macsyma?

I would try it if I was more serious, but for my casual use
Mathematica's interface is actually quite good - it reminds me a lot of
the Symbolics presentation system in a way, though it is not as easy to
use.

(So yes, in case it's not clear, I was just whining in the original article...)