Just to be clear -- I like JSL and spend about 50 hours a week with it. But it has also brough me the most frustration of any programming language that I've used, although most of that frustration was learning how to deal with a dynamically scoped language.
And the inconsistent / annoying things in JSL are usually a result of some amount of backwards-compatibility, such as Summarize()
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize( exg = By( :sex ), exm = Mean( :height ) );
Eval List( {exg, Round( exm, 1 )} );
That is a function that does the funky with it's arguments.
Also, why do platforms get a Report() message, but graph builder needs a Report() function call:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gbp = Graph Builder( Variables( X( :height ), Y( :weight ) ), Elements( Points( X, Y ), Smoother( X, Y ) ) );
gb = Report( gbp )[Graph Builder Box( 1 )];
vs.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Grocery Purchases.jmp" );
obj = dt << Association Analysis( Item( :Product ), ID( :Customer ID ) );
r = obj << Report;
t = r[Outline Box( 1 )] << Get Title;
Show( t );
Jordan