何が問題なのでしょうか? Formula() の式の問題注意 - JMP がクラッシュします!!!
Names Default To Here( 1 );
f = Function( {},
/* .... */
ID = Associative Array( {{Name Expr(), 1}, {Expr(), 2}, {Function(), 3}}, 0 );<BR />/* .... */
);
f();
リストからfunction() を削除するとエラーが修正されます。
連想配列を外側の関数から取り出すと、エラーが修正されます。
[編集] これが役立つ理由:
式の部分の参照テーブルとして - Head()とType() によって識別されます。
myID = ID[Expr(function())]; // expected: 3
code = Expr(g = function ({x},1));
Head(Arg(code,2)); // function()
myID = ID[Head(Arg(code,2))]; // expected: 3自動化とスクリプトRe: ここで何が問題なのですか?確かに JMP を圧倒します。JMP セッションを終了する新しい高速な方法を発明したのです......
これは JMP サポートに送る必要があります。このようなことは起こるはずがありません。
Re: ここで何が問題なのですか?もう一つあります:
注意 - JMP がクラッシュします!!!
x = Expr(Function());
Show(name Expr(x) == Expr(Function()));
Print("not dead");
f = function({arg},
name Expr(arg) == Expr(Function()))関数外では、x とFunction()の比較は OK です。
関数内では、JMP はコマンドを検出するとすでにクラッシュします。fを呼び出す必要はありません。
Re: ここで何が問題になっていますか?JMP サポート (TS-00166834) から:
別の関数内で不正な関数を使用すると JMP がクラッシュするという既知の問題があります。
つまり、根本的な原因は
注意 - JMP がクラッシュします!!!
f = Function( {}, Expr(Function()));
...とても無邪気な表情をしています。
関数定義が不正です。しかし、これは「整形式」のJSL式です。
@joseph_morgan / JSL を使用して効率的で堅牢なアプリケーションを開発する (EU 2018 415) 。
したがって、JMP がこれに対処できないのは驚きです。
関数内の関数はJMP Expr() の奇妙さを思い出させます。誰か説明できますか? / @ErraticAttack 。
つまり、ユーザーだけでなく、JMPでも式が異なる階層に現れると問題が発生します。Insert Into: Flatten(0|1)や@Substitute First OccurenceがJMPの助けになるかもしれませんね。

JMP サポートからの提案:
クラッシュを防ぐには、他にもいくつか方法があります。一つは、内部関数内で中括弧 ({}) を必須引数として指定することです。もう一つは、内部関数内で「Function」という単語の後ろの括弧を削除することです。
残念ながら、上記のアプリケーションケースには役立ちません。
Re: ここで何が問題なのですか?回避策:
f = Function( {},
/* .... */
ID = Associative Array( {{"Name Expr()", 1}, {"Expr()", 2}, {"Function()", 3}}, 0 );
/* .... */
);
f();
code = Expr(g = function ({x},1));
myID=ID[Char(Head(Arg(code,2)))]
でもちょっと「痛い」です…

Re: ここで何が問題なのですか?私はこちらの方がずっと好きです:
f = Function( {},
/* .... */
Eval (Eval Expr(ID = Associative Array( {{Name Expr(), 1}, {Expr(Parse("Expr()")), 2}, {Expr(Parse("Function()")), 3}}, 0 )));
/* .... */
);
f;
code = Expr(g = function ({x},1));
myID=ID[Head(Arg(code,2))];
それは動作しません。eval exprの後は、以前とほぼ同じになります...
... おお!
注意: Expr() はEval Expr を生き残れないため、保護する必要があります。
Re: ここで何が問題なのですか?-
Re: 何が問題なのでしょうか? Formula() の式の問題実はこのバグレポートを数日前に提出したばかりです!関数内でExpr(Function())を使用するとクラッシュすることがわかりました。私はこれを
Substitute(my_expr, Expr(Function()), Expr(Method()))
しかし、代わりにExpr(Function)を使用することで取得できました。
あなたの問題の場合、文字列を解析したくない場合は、次のような別の解決策があります。
y = Function({head_key},
ID = Associative Array( EvalList({{Name Expr(), 1}, {Expr(), 2}, EvalList({Head(Expr(Function({},1))), 3})}), 0 );
ID[NameExpr(head_key)]
);
Show(y(Expr(Function())));まだ「きれい」とは言えませんが。
Re: 何が問題なのでしょうか? Formula() の式の問題Head(Expr(Function()))
ニース!
私のEval( ... Parse( ... よりはるかに優れています。特にJosephの
