[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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_variable
if (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
[ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は3月 16, 2025にtexi2html 5.0を用いて生成されました。