2009-07-17 20 views
14

Ho lavorato su problemi su Project Euler e alcune delle soluzioni che altre persone hanno pubblicato utilizzano un triplo at-sign, ad esempio "@@@". Nel browser della Guida per v7, trovo una voce per @@ (che dice che è la versione infissa di 'Applica') ma nessuna per @@@. Cosa significa?In Mathematica, che cosa significa @@@?

EDIT: Ecco un esempio, che credo di poter postare senza violare lo spirito del Project Euler:

bloc[n_, f_][t_] := {f @@@ #, #~Tr~f} & /@ Join @@ Partition[t, {n, n}, 1]; 

risposta

20

Come altri hanno notato, @@@ è, tecnicamente, stenografia per Apply con un terzo argomento opzionale, come spiegato in profondità nello documentation for Apply.

Ma mi piace pensare a

f @@@ {{a,b}, {c,d}, {e,i}} 

come abbreviazione di

f @@#& /@ {{a,b} {c,d}, {e,i}} 

In altre parole, prendere una funzione di puro (abbreviazione: ...#...&) che fa un Apply (scorciatoia: @@) a un elenco di argomenti e Map (stenografia: /@) su un elenco di tali elenchi di argomenti. Il risultato è

{f[a,b], f[c,d], f[e,i]} 
+0

Ho dovuto eseguirlo in alcuni modi prima che avesse senso! Ma hai ragione, sembra l'interpretazione più naturale. – Eric