variables, symbols and namesin JSL, what is the difference between a variable, a "symbol" and a "name"?
var=Expr(1+2);
Name Expr(var); // return the expression which is stored in the name "var" - so var is a name?
Clear Symbols(var); // how can I clear a "symbol" if it's actually a "name"
Automation and ScriptingRe: variables, symbols and namesHm, names are more than just variables.
e.g. If a name is followed by (), it's considered to be a function:
https://www.jmp.com/support/help/en/19.0/#page/jmp/rules-for-resolving-names.shtml
And to clear or delete it, again one has to consider it to be a symbol:
f = function({}, print(hello));
Delete Symbols(f);
is empty(f)Re: variables, symbols and namesHow to create a name:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
x = Expr(sex);
Show(Type(Name Expr(x)),x);
x = Parse("sex");
Show(Type(Name Expr(x)),x);<BR /><BR />x = Parse(":sex");<BR />Show(Type(Name Expr(x)),x);
x = As Name("sex");
Show(Type(Name Expr(x)),x);
Show(x[5])Re: variables, symbols and namesMaybe better:
names default to here(1);
x=1;
Clear Symbols(x);
Name Expr(x);
Name Expr(y);
x is a variable, better: a symbol
(can be cleared via clear symbols())
In Name expr(x), JMP takes thy NAME "x" [how knows if it's a symbol!], applies the rules: https://www.jmp.com/support/help/en/19.0/#page/jmp/rules-for-resolving-names.shtml , finds out that x is a symbol in the here namespace and returns the expression stored in this symbol.
In Name expr(y), JMP takes thy NAME "y", applies the rules: https://www.jmp.com/support/help/en/19.0/#page/jmp/rules-for-resolving-names.shtml , doesn't find anything and returns the name.
Up to now, I thought,
names default to here(1);
means:
store the names in the here namespace.
But actually, names cannot be stored, they are just names?
So it is:
Look up the names in the here namespace - [and if you don't specify a namespace, I will store the symbols there].
Who cares? Maybe understanding the original logic helps to better follow the logic ...
and if name expr() gets an expression as an argument that is different from a simple name, it just returns the expression?
always?