| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
get_struct_name, get_element_names, get_element_at, put_element_at:: 構造体 s に対する操作
文字列 (get_struct_name), 文字列のリスト (get_element_names), オブジェクト (get_element_at), オブジェクト (put_element_at)
構造体
文字列
オブジェクト
get_struct_name(s) は, 構造体 s の名前を戻す.
get_element_names(s) は, 構造体のメンバーの名前のリストを戻す.
get_element_at(s,key) は構造体 s のメンバー key の値を戻す.
put_element_at(s,key,obj) は構造体 s のメンバー key の値を obj に設定する.
[219] struct point { x, y, color};
[220] P = newstruct(point);
{0,0,0}
[221] P->x = 10$ P->y=5$ P->color="red"$
[222] get_element_names(P);
[x,y,color]
[223] put_element_at(P,"color","blue");
blue
[224] P->color;
bule
@ref{newstruct}, @ref{struct}
ChangeLog
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
mapat:: pos に対する map 関数
オブジェクト
整数
オブジェクト
map 関数は 0 番目の引数に対してしか動作しないが, mapat
関数は指定した番号の引数に対して map 関数を実行する.
mapat(fname,0,A0,A1,...) は
map(fname,A0,A1,...) に等価である.
[219] mapat(deg,1,x^2+y^3+x+y,[x,y]); [2,3] [220] mapat(subst,1,x+y+z,[x,y,z],2); [y+z+2,x+z+2,x+y+2]
@ref{map}
ChangeLog
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
list:: list を生成する.
リスト
オブジェクト
[219] list(1,2,3); [1,2,3] [220] list(1,2,[3,4]); [1,2,[3,4]]
@ref{cons}
ChangeLog
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
assoc:: 連想リストをつくる
List
List
List
下の例では A に動物の名前が,
B に足の本数が入っている.
assoc(A,B) で動物と足の本数をペアにしたリストを生成する.
[1192] A=["dog","cat","snake"]; [dog,cat,snake] [1193] B=[4,4,0]; [4,4,0] [1194] assoc(A,B); [[dog,4],[cat,4],[snake,0]]
@ref{cons}, @ref{append}
ChangeLog
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
set_secure_flag, set_secure_mode:: 関数の実行権限を設定する. (web サービス用)
整数
文字列
整数
set_secure_flag, set_secure_mode は
asir を web サーバ等で公開するために加えられた関数.
set_secure_flag で公開する関数を指定する.
secure_mode が 1 の場合は set_secure_flag で指定された
関数しか実行できない.
関数の実行途中では secure_mode が 0 となっているので,
任意の関数を実行できる.
またエラーの時等は, secure_mode は 1 に自動的に復帰する.
ただし def は実行できない.
公開する関数では, その処理中は任意の関数が実行できるので,
security に十分注意した実装をする必要がある.
set_secure_flag は, fname の secure flag を m
にする.
公開する命令は 1 に設定する.
secure_mode が 1 となり,
公開された関数しか実行できなくなる.
quit 等も実行できないので注意.
timer の引数として secure_flag を設定していない関数を
指定して実行してもエラーが表示されない.
このときは, ctrl("error_in_timer",1) を実行しておく.
[1194] set_secure_flag("print_input_form_",1);
1
[1195] set_secure_flag("fctr",1);
1
[220] set_secure_mode(1);
1
[1197] fctr((x-1)^3);
[[1,1],[x-1,3]]
[1198] fctr(shell("ls"));
evalf : shell not permitted
return to toplevel
@ref{timer}
ChangeLog
set_secure_flag, set_secure_mode は asir を
web サーバ等で公開するために加えられた関数.
sm1 の同様な関数 RestrictedMode で採用された方法を用いている.
つまり, set_secure_flag で公開する関数を指定する.
secure_mode が 1 の場合は set_secure_flag で指定された
関数しか実行できない.
v関数の実行途中では secure_mode が 0 となっているので,
任意の関数を実行できる.
CGI_ASIR_ALLOW 環境変数で公開するコマンドを指定する.
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
initialize_static_variableif (1) {
module abc;
static A;
A=1;
endmodule;
} else { };
end$
を t.rr とするとき,
[6] load("./t.rr");
1
internal error (SEGV)
となる.
t.rr を
if (1) {
module abc;
static A;
localf initA;
localf foo;
def initA() {
A=1;
}
initA();
def foo() {
return A;
}
endmodule;
} else { };
end$
とすると正しく初期化される.
ChangeLog
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
functionたとえば f{1,2}(x,y) は f を x について一階偏微分, y について 2階偏微分したもの.
[1915] function f(x,y);
[1916] F=f(f(x,y),y)$
[1917] diff(F,y);
f{1,0}(f(x,y),y)*f{0,1}(x,y)+f{0,1}(f(x,y),y)
[1918] vtype(f(p,q));
2
[1919] deg(diff(F,y),f{0,1}(x,y));
1
@xref{vtype} @xref{diff}
ChangeLog
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は10月 28, 2025にtexi2html 5.0を用いて生成されました。