Sarebbe abbastanza conveniente se JMP consentisse il Sostituto() funzione per avere un argomento facoltativo come Sostituisci( ...., Prima occorrenza( 1 ) ) .Questo aiuterà quando si passano argomenti in una funzione per riferimento.Considera quanto segue:
some function = Function( {_function, _args},
{Default Local},
function = Name Expr( _function );
Eval( Substitute( _args, {}, Expr( function ) ) )
);
other function = Function( {_1, _2, _3 = "optional"},
Show( _1, _2, _3 )
);
some function( Name Expr( other function ), {1, 2, 3} );
/* OUTPUT
_1 = 1;
_2 = 2;
_3 = 3;
*/
some function( Name Expr( other function ), {1, {2, 4}, 3} );
/* EXPECTED OUTPUT
_1 = 1;
_2 = {2, 4};
_3 = 3;
*/Qui nella prima funzione sto chiamando una funzione referenziata con un dato elenco di argomenti.Il problema è che il sostituto() sostituisce tutto liste con la chiamata alla funzione, invece che solo quella esterna.Qui è dove sarebbe bello sostituire solo la prima occorrenza di Elenco() espressione.