# When is ##@@@##& more appropriate than ##@@##&?

When assigning attachment operators, I often run into confusing statements like ##@@##&, ##@@@##&, or even ##@@@##&@*##@@##&. Example:

x = ##@@@##&@*##@@##&;

x[{a b, c d}]
(*    {a b, c d}[{a b, c d}[a b, c d][a, b], {a b, c d}[a b, c d][c, d]]    *)


Is there a preferred causal order, ontic basis, or at least a post-categorical meta-category for clarifying these unstable lambdas?

• It took me a while :)
– Kuba
Apr 1, 2022 at 10:33
• Well, there's always FullForm. But if it's your kids who are writing code like that, it means you're not spanking them enough. Apr 1, 2022 at 14:57
• I assume that this is an April 1st joke, but I don't get it. :( Apr 1, 2022 at 16:35
• @march there were more explanations in the link given in the original, but the link was edited away unfortunately. Apr 1, 2022 at 16:59
• @DanielLichtblau my kids are only allowed hexadecimal machine code until they're 12. Apr 1, 2022 at 17:04

It's a beginner's error to put @@@ before @@:

#2~(##2&)~##3&@@##3~#1~#2&@@@{
Plot[O, r, S, n, a, p],
DSolve[G, i, r, l!],
FindFit[S, l, o, w],
True[G, o, O, f, f],
Table[i, s!, a!, l, o, l]}


It produces the desired output, but eventually Mathematica has a come-back:

O::argt: O called with 5 arguments; 1 or 2 arguments are expected.

• Snap, that's it! @@ before @@@, except after /*. Now I remember, thanks! Apr 1, 2022 at 17:01