Next: Functions and Variables for Display, Previous: Introduction to Command Line, Up: Command Line [Contents][Index]
__は、現在評価中の入力式です。
すなわち、入力式 exprが評価されている間、 __は exprです。
__は、入力が整理されたり評価されたりする前に入力式に割り当てられます。
しかし表示される時、__の値は(評価はされませんが)整理されます。
batchと loadは __を認識します。
batchが処理するファイル内では、
__は対話プロンプトでのそれと同じ意味になります。
loadが処理するファイル内では、
__は対話プロンプトやバッチファイルの中で直前に入力された入力式にバインドされています;
__は処理中のファイル内の入力式にはバインドされません。
特に、 load (filename)が対話プロンプトからコールされた時、
__は、ファイルが処理されている間、
load (filename)にバインドされます。
例:
(%i1) print ("I was called as", __);
I was called as print(I was called as, __) 
(%o1)              print(I was called as, __)
(%i2) foo (__);
(%o2)                     foo(foo(__))
(%i3) g (x) := (print ("Current input expression =", __), 0);
(%o3) g(x) := (print("Current input expression =", __), 0)
(%i4) [aa : 1, bb : 2, cc : 3];
(%o4)                       [1, 2, 3]
(%i5) (aa + bb + cc)/(dd + ee + g(x));
                            cc + bb + aa
Current input expression = -------------- 
                           g(x) + ee + dd
                                6
(%o5)                        -------
                             ee + dd
_は直前の入力式です。
(例えば、%i1, %i2, %i3, …)
_は、入力が整理されたり評価されたりする前に、入力式に割り当てられます。
しかし、
_の値は、表示される時(評価はされませんが)整理されます。
batchと loadは _を認識します。
batchが処理するファイル内では、
_は対話プロンプトでのそれと同じ意味になります。
loadが処理するファイル内では、
_は、対話プロンプトやバッチファイルの中で、直前に入力された入力式にバインドされます;
_は処理中のファイル内の入力式にはバインドされません。
例:
(%i1) 13 + 29; (%o1) 42 (%i2) :lisp $_ ((MPLUS) 13 29) (%i2) _; (%o2) 42 (%i3) sin (%pi/2); (%o3) 1 (%i4) :lisp $_ ((%SIN) ((MQUOTIENT) $%PI 2)) (%i4) _; (%o4) 1 (%i5) a: 13$ (%i6) b: 29$ (%i7) a + b; (%o7) 42 (%i8) :lisp $_ ((MPLUS) $A $B) (%i8) _; (%o8) b + a (%i9) a + b; (%o9) 42 (%i10) ev (_); (%o10) 42
%はMaximaが直前に計算した出力式です。
(例えば、 %o1, %o2, %o3, …)
出力の表示には無関係です。
batchと loadは%を認識します。
batchが処理するファイル内では、
%は対話プロンプトでのそれと同じ意味になります。
loadが処理するファイル内では、
%は、対話プロンプトやバッチファイルの中で、直前に計算された出力式にバインドされます;
%は、処理中のファイル内の出力式にはバインドされません。
合成文、すなわちblock, lambda,
もしくは(s_1, ..., s_n)の中で、 %%は前の文の値です。
合成文の最初の文もしくは合成文の外側では%%は未定義です。
%%は、batchや loadで認識され、
対話プロンプトでのそれと同じ意味になります。
%も参照してください。
例:
以下の二つの例は同じ結果になります。
(%i1) block (integrate (x^5, x), ev (%%, x=2) - ev (%%, x=1));
                               21
(%o1)                          --
                               2
(%i2) block ([prev], prev: integrate (x^5, x),
               ev (prev, x=2) - ev (prev, x=1));
                               21
(%o2)                          --
                               2
合成文は他の合成文を含むかもしれません。
文が単文か合成文かに関係なく、
%%は前の文の値です。
(%i3) block (block (a^n, %%*42), %%/6);
                                 n
(%o3)                         7 a
合成文の中ではブレイクプロンプトで%%の値を検査することができます。
ブレイクプロンプトは break関数を実行することで開きます。
例えば、以下の例で%%;を入力すると、42が出力されます。
(%i4) block (a: 42, break ())$ Entering a Maxima break point. Type 'exit;' to resume. _%%; 42 _
i番前の出力式の値。
すなわち、計算される次の式をn番目の出力とすると
%th (m)は、(n - m)番目の出力です。
batchとloadは%thを認識されます。
batchが処理するファイル内では、
%thは、対話プロンプトでのそれと同じ意味になります。
loadが処理するファイル内では、
%thは、対話プロンプトやバッチファイルの中で、直前に計算された出力式にバインドされます;
%thは、処理中のファイル内の出力式にはバインドされません。
例:
batchファイルの中でとか、出力式のグループを参照する時%thは役立ちます。
この例はsを最後の5つの出力式の和に設定します。
(%i1) 1;2;3;4;5; (%o1) 1 (%o2) 2 (%o3) 3 (%o4) 4 (%o5) 5 (%i6) block (s: 0, for i:1 thru 5 do s: s + %th(i), s); (%o6) 15
関数名や変数名の前置としての?は、
名前が、Maximaの名前ではなくLispの名前であることを意味します。
例えば、?roundは、Lisp関数ROUNDを意味します。
この点に関して更に知るにはLisp and Maximaを参照してください。
表記? word (空白を空けて単語が続くクエスチョンマーク)は
describe("word")と同値です。
クエスチョンマークは入力ラインの先頭になければいけません;
そうでなければドキュメンテーションのリクエストとして認識されません。
describeも参照してください。
表記?? word(空白を空けて単語が続く??)は
describe("word", inexact)と同値です。
クエスチョンマークは入力行の先頭になければいけません;
そうでなければドキュメンテーションのリクエストとして認識されません。
describeも参照してください。
デフォルト値: %i
incharはユーザーが入力した式のラベルの前置です。
Maximaは、
incharとlinenumを連結することで、
入力式それぞれのラベルを自動的に構成します。
incharは単一文字である必要はなく、
任意の文字列もしくはシンボルを割り当てられます。
Maximaは内部的に前置の最初の文字だけを考慮するので、
前置inchar, outchar, linecharは異なる最初の文字を持たなければいけません。
そうでなければkill(inlables)のようないくつかのコマンドは期待通りに動きません。
labelsも参照してください。
例:
(%i1) inchar: "input";
(%o1)                         input
(input2) expand((a+b)^3);
                     3        2      2      3
(%o2)               b  + 3 a b  + 3 a  b + a
(input3)
デフォルト値: []
infolistsはMaximaに関する情報リストすべての名前のリストです。
これらは以下の通りです:
labelsすべてのバインドされた%i, %o, %tラベル
values:や::や関数バインドが生成する、
ユーザー変数であって、Maximaオプションやスイッチでない、
すべてのバインドされたアトム
functionsarrays:, ::, または:=が生成するすべての宣言配列と未宣言配列
macros::=が生成したすべてのユーザー定義マクロ関数
myoptions(それらが後にデフォルト値に再設定されようがされまいが) ユーザーが再設定したすべてのオプション
rulestellsimp, tellsimpafter, defmatch,
またはdefruleが生成するすべてのユーザー定義パターンマッチングと整理規則
aliasesalias, ordergreat, orderless関数が生成するか、
declareを使ってアトムをnounとして宣言することで生成された、
ユーザー定義エーリアスを持つすべてのアトム
dependenciesgradefsgradef関数が生成するユーザー定義の導関数を持つすべての関数
propsdeclare関数で確立されるプロパティはもちろん、
atvalueやmatchdeclareなどが確立するプロパティで、
上で述べたもの以外の任意のプロパティを持つすべてのアトム
let_rule_packages特別パッケージdefault_let_rule_packageに加えて
すべてのユーザー定義let規則パッケージ 
(default_let_rule_packageは、
ユーザーが陽に設定していない時使われる規則パッケージの名前です。)
引数a_1, …, a_nからすべてのバインド(値、関数、配列、ルール)を解除します。
引数a_kはシンボルか配列要素を取り得ます。
a_kが配列要素の時、killは配列の他の要素には影響することなくその要素をアンバインドします。
いくつかの特殊な引数が認識されます。
例えば、kill (inlabels, functions, allbut (foo, bar))のように、異なる引数の種類が組み合わされます。
kill (labels)はそれまでに作られた入力、出力、中間式のラベルすべてをアンバインドします。
kill (inlabels)は incharの現在の値で始まる入力ラベルのみをアンバインドします。
同様に、
kill (outlabels)は outcharの現在の値で始まる出力ラベルのみをアンバインドし、
kill (linelabels)は linecharの現在の値で始まる中間式ラベルのみをアンバインドします。
kill (n)(nは整数)は入力、出力ラベルの最近のn個をアンバインドします。
kill ([m, n])は入力、出力ラベルmからnまでをアンバインドします。
kill (infolist)は infolistの中のすべての項目をアンバインドします。
ここで、infolistは(values, functions, arraysのような)
infolistsの中の任意の項目です。
infolistsも参照してください。
kill (all)はinfolistsのすべての項目をアンバインドします。
kill (all)はグローバル変数をデフォルト値にリセットしません;
この点に関してはresetを参照してください。
kill (allbut (a_1, ..., a_n))は、
a_1, ..., a_nを除いて
すべてのinfolistsの中のすべての項目をアンバインドします。
kill (allbut (infolist))は
infolist(infolistはvalues, functions, arraysなど)
上の項目を除いてすべての項目をアンバインドします。
バインドされたプロパティによって使われたメモリは、すべてのシンボルがプロパティからアンバインドされるまで解放されません。 特に、シンボルの値によって使われているメモリを解放するには、 シンボルそのもののアンバインドだけでなく、バインドされた値を表示する出力ラベルをアンバインドします。
killは引数をクォートします。
引数を評価するにはクォートクォート演算子''を使います。
kill (symbol)はシンボルのすべてのプロパティをアンバインドします。
対照的に、関数remvalue, remfunction, remarray,
remruleは特定のプロパティをアンバインドします。
kilは常に、たとえ引数がバインドされていなくても、doneを返します。
symbolで始まる入力、出力、中間式ラベルのリストを返します。
symbolは、inchar, outchar, もしくはlinecharの値が典型的です。
ラベル文字はパーセント記号ありでもあしでもかまいませんので、
例えば、iと%iは同じ結果になります。
もしsymbolで始まるラベルがなければ、labelsは空のリストを返します。
関数labelsは引数をクォートします。
引数を評価するにはクォートクォート演算子''を使います。
例えば,
labels (''inchar)は、現在の入力ラベル文字で始まる入力ラベルを返します。
変数labelsは入力、出力、中間式ラベルのリストです。
inchar, outchar, もしくはlinecharが再定義されても、以前のラベルすべてを含みます。
デフォルトで、Maximaはそれぞれのユーザー入力式の結果を表示し、結果に出力ラベルが与えられます。
入力を;(セミコロン)の代わりに$(ドル記号)で終了することで、出力表示は抑制されます。
出力ラベルが構成され、結果にバインドされますが、表示されません。
ラベルは表示された出力ラベルと同じ方法で参照できます。
%や%%, %thも参照してください。
いくつかの関数では中間式ラベルが生成されることがあります。
フラグprogrammodeは
solveや他の関数が式のリストを返す代わりに中間式ラベルを生成するかどうかを制御します。
ldisplayのようないくつかの他の関数は常に中間式ラベルを生成します。
デフォルト値: %t
linecharは
Maximaが生成する中間式のラベルの前置です。
Maximaは(もし表示されるなら)
linecharとlinenumを連結することで
中間式それぞれのラベルを構成します。
linecharは単一文字である必要はなく、
任意の文字列もしくはシンボルを割り当てられます。
Maximaは内部的に
前置の最初の文字だけを考慮するので、
前置inchar, outchar, linecharは異なる最初の文字を持たなければいけません。
そうでなければ kill(inlables)のようないくつかのコマンドは期待通りに動きません。
中間式は表示されるかもしれませんし、表示されないかもしれません。
programmodeとlabelsも参照してください。
入力出力式の現在のペアの行番号。
デフォルト値: []
myoptionsはユーザーが再設定したオプションすべてのリストです。
初期値に再設定されたか否かに関わらずです。
デフォルト値: false
nolabelsはtrueであれば、
入力と出力結果のラベル(それぞれ%iと%o)は表示されますが、
ラベルは結果にバインドされず、labelsリストにも追加されません。
ラベルは結果にバインドされないので、
ガーベッジコレクションは結果が使ったメモリを回復することができます。
そうでなければ、入力と出力の結果のラベルは結果にバインドされ、labelsリストに追加されます。
中間式ラベル(%t)はnolabelsに影響されません;
nolabelsがtrueでもfalseでも、中間式ラベルはバインドされ、labelsリストに追加されます。
デフォルト値: false
optionsetがtrueの時、Maximaは、Maximaオプションが再設定されるといつでも、メッセージを表示します。
もしユーザーがあるオプションの綴りが怪しく、割り当てた変数が本当にオプション変数か確認したいなら便利です。
例:
(%i1) optionset:true; assignment: assigning to option optionset (%o1) true (%i2) gamma_expand:true; assignment: assigning to option gamma_expand (%o2) true
デフォルト値: %o
outcharはMaximaが計算した式のラベルの前置です。
outcharとlinenumを連結することで、
Maximaは計算された式それぞれのラベルを自動的に構成します。
outcharは、単一文字である必要はなく、
任意の文字列もしくはシンボルを割り当てられます。
Maximaは内部的に前置の最初の文字だけを考慮するので、
前置inchar, outchar, linecharは異なる最初の文字を持たなければいけません。
そうでなければ、kill(inlables)のようないくつかのコマンドは期待通りに動きません。
labelsも参照してください。
例:
(%i1) outchar: "output";
(output1)                    output
(%i2) expand((a+b)^3);
                     3        2      2      3
(output2)           b  + 3 a b  + 3 a  b + a
(%i3)
入力、出力、中間式を表示します。再計算はしません。
playbackはラベルにバインドされた式表示するだけです;
(printやdescribeで表示されたテキストやエラーメッセージなど)他の出力は表示されません。
labelsも参照してください。
playbackは引数をクォートします。
引数を評価するにはクォートクォート演算子''を使います。
playbackは常にdoneを返します。
playback ()(引数なし)は今までに生成された入力、出力、中間式すべてを表示します。
たとえ計算時に$終端子で出力が抑制されていても、
出力式は表示されます。
playback (n)は最近のn個の式を表示します。
入力、出力、中間式それぞれを1と数えます。
playback ([m, n])は
m番目からn番目までの入力、出力、中間式を表示します。
playback ([m])は playback ([m, m])と同値です;
これは普通、入力と出力の式のペアを1つ表示します。
playback (input)は今までに生成された入力式をすべて表示します。
playback (slow)は式の間でポーズし、ユーザーが
enterを入力するのを待ちます。
これは demoと似たような振る舞いです。
playback (slow)は、saveやstringoutと関連して、
役立つ式を取り出すために2次記憶ファイルを生成するときに便利です。
playback (time)はそれぞれの式の計算時間を表示します。
playback (grind)は入力式を grind関数と同じ形式で表示します。
出力式は grindオプションで影響を受けません。
grindを参照してください。
例えば、playback ([5, 10], grind, time, slow)のように、
引数を組み合わせられます。
デフォルト値: _
promptは、demo関数やplayback (slow)モード、
(breakで呼び出された)Maximaブレイクループのプロンプトシンボルです。
Maximaセッションを終了します。
関数は、quitではなく、quit();もしくはquit()$として呼び出さなければいけないことに注意してください。
長い計算を中断するには control-Cをタイプしてください。
デフォルトの動作では Maximaプロンプトに戻ります。
もし*debugger-hook*がnilなら、
control-CはLispデバッガを開きます。
debuggingも参照してください。
expr_1, …, expr_nを表示し、
コンソールから式1つを読み込み、評価された式を返します。
式はセミコロン;もしくはドル記号$で終了します。
readonlyも参照してください。
(%i1) foo: 42$ 
(%i2) foo: read ("foo is", foo, " -- enter new value.")$
foo is 42  -- enter new value. 
(a+b)^3;
(%i3) foo;
                                     3
(%o3)                         (b + a)
expr_1, …, expr_nを表示し、
コンソールから式を1つ読み込み、
式を(評価せずに)返します。
式はセミコロン;もしくはドル記号$で終了します。
readも参照してください。
例:
(%i1) aa: 7$
(%i2) foo: readonly ("Enter an expression:");
Enter an expression: 
2^aa;
                                  aa
(%o2)                            2
(%i3) foo: read ("Enter an expression:");
Enter an expression: 
2^aa;
(%o3)                            128
多くのグローバル変数やオプション、いくつかの他の変数をデフォルト値に再設定します。
resetは Lispリスト*variable-initial-values*上の変数を処理します。
Lispマクロdefmvarは(他の動作の間に)このリストに変数を置きます。
すべてではありませんが多くのグローバル変数やオプションがdefmvarによって定義されており、
また、defmvarで定義されたいくつかの変数はグローバル変数でもオプションでもありません。
デフォルト値: false
showtimeがtrueの時、出力式と一緒に計算時間と経過時間を表示します。
計算時間は常に記録されており、
showtimeがfalseの時でも、
timeやplaybackで計算時間を表示することができます。
timerも参照してください。
Maximaの下のLispシステムに入ります。(to-maxima)でMaximaに戻ります。
例:
関数を定義し、Maximaの下のLispシステムに入ります。 定義をプロパティリスト上で検査します。そして、関数定義を抽出し、因数分解し、 変数$resultに格納します。 変数はMaximaに戻った後、Maximaで使うことができます。
(%i1) f(x):=x^2+x;
                                  2
(%o1)                    f(x) := x  + x
(%i2) to_lisp();
Type (to-maxima) to restart, ($quit) to quit Maxima.
MAXIMA> (symbol-plist '$f)
(MPROPS (NIL MEXPR ((LAMBDA) ((MLIST) $X) 
                             ((MPLUS) ((MEXPT) $X 2) $X))))
MAXIMA> (setq $result ($factor (caddr (mget '$f 'mexpr))))
((MTIMES SIMP FACTORED) $X ((MPLUS SIMP IRREDUCIBLE) 1 $X))
MAXIMA> (to-maxima)
Returning to Maxima
(%o2)                         true
(%i3) result;
(%o3)                       x (x + 1)
初期値: []
valuesは(Maximaのオプションやスイッチではなく)バインドされたユーザー変数すべてのリストです。
リストは、:や::でバインドされたシンボルを含みます。
もし変数の値がコマンドkillや, remove, remvalueで削除されたら、
変数はvaluesから削除されます。
ユーザー定義関数のリストに関しては functionsを参照してください。
例:
最初、valuesはシンボルa, b, cを示しますが、
dも―それは値にバインドされていません―ユーザー関数fも示しません。
値は変数から削除されます。valuesは空のリストです。
(%i1) [a:99, b::a-90, c:a-b, d, f(x):= x^2];
                                           2
(%o1)              [99, 9, 90, d, f(x) := x ]
(%i2) values;
(%o2)                       [a, b, c]
(%i3) [kill(a), remove(b,value), remvalue(c)];
(%o3)                   [done, done, [c]]
(%i4) values;
(%o4)                          []
Next: Functions and Variables for Display, Previous: Introduction to Command Line, Up: Command Line [Contents][Index]