Next: , Previous:   [Contents][Index]

32 Runtime Environment


32.1 Introduction for Runtime Environment

maxima-init.macは、Maximaがスタートする時自動的にロードされるファイルです。 自分のMaxima環境をカスタマイズするために maxima-init.macを使うことができます。 maxima-init.macは、もし存在するなら、 関数file_searchが検索する任意のディレクトリで大丈夫ですが、 通常は、 maxima_userdirで名付けらたディレクトリの中に置かれます。

これは、maxima-init.macファイルの例です:

setup_autoload ("specfun.mac", ultraspherical, assoc_legendre_p);
showtime:all;

この例では、setup_autoloadは、Maximaに もし関数(ultraspherical, assoc_legendre_p)のいずれかがコールされて、まだ定義されていなかったら、 指定されたファイル(specfun.mac)をロードするように命じます。 このように、関数をコールする前にファイルをロードすることを覚えておく必要はありません。

showtime: allは、Maximaにshowtime変数を設定することを命じます。 maxima-init.macファイルは、 他の任意の割り当てやMaxima文を含むことができます。


32.2 Interrupts

ユーザーは、時間のかかる計算を^C (control-C)文字で止めることができます。 デフォルトの動作は、計算を止めて、別のユーザープロンプトを印字することでです。 この場合、止められた計算の再開することはできません。

もし

:lisp (setq *debugger-hook* nil)

を実行することによって、 Lisp変数*debugger-hook*nilに設定されているなら、 ^Cを受け取ると、Maximaは、Lispデバッガに入り、 ユーザーは、Lisp環境を検査するためにデバッガを使うことができます。 止められた計算は、Lispデバッガの中で、 continueを入力することで、再開することができます。 (計算を完了まで走らせる以外に) LispデバッガからMaximaに戻る方法は、 Lispのバージョンそれぞれで異なります。

Unixシステム上では、文字^Z (control-Z)は、 Maximaが完全に止まるようにし、 制御は、シェルスクリプトに戻ります。 fgコマンドは、Maximaが 止められた点から再開するようにします。


32.3 Functions and Variables for Runtime Environment

宣言: feature

Maximaは、システムフィーチャと数学式に適用されるフィーチャの、 2つの異なるタイプのフィーチャを理解します。 See also システムフィーチャについての情報に関しては、statusも参照してください。 数学的フィーチャについての情報に関しては、 featuresfeaturepも参照してください。

featureそれ自身は、関数名でも変数名でもありません。

関数: featurep (a, f)

現在のデータベースの中の事実に基づいて オブジェクトaが フィーチャfを持つかどうか を決定しようとします。 もしそうなら、trueを返し、そうでなければfalseを返します。

featurepは、 ffの否定も確立できない時は、 falseを返すことに注意してください。

featurepは、引数を評価します。

declarefeaturesも参照してください。

(%i1) declare (j, even)$
(%i2) featurep (j, integer);
(%o2)                           true
システム変数: maxima_tempdir

maxima_tempdirは、Maximaが一時的なファイルを生成するディレクトリを 指名します。 特に、プロットのための一時ファイルが maxima_tempdirに生成されます。

maxima_tempdirの初期値は、 もしMaximaが置くことができるなら、ユーザーのホームディレクトリです; そうでなければ、Maximaは適切なディレクトリについて推量します。

maxima_tempdirは、ディレクトリを指名する文字列に割り当てられます。

システム変数: maxima_userdir

maxima_userdirは、 Maximaが、MaximaやLispファイルを見つけるために検索するディレクトリを指名します。 (Maximaは、他のディレクトリも検索します; file_search_maximafile_search_lispは、完全なリストです。)

maxima_userdirの初期値は、 もしMaximaが置くことができなら、 ユーザーのホームディレクトリのサブディレクトリです; そうでなければ、Maximaは適切なディレクトリについて推量します。

maxima_userdirは、ディレクトリを指名する文字列に割り当てられます。 しかしながら、 maxima_userdirへの割り当ては、自動的には file_search_maximafile_search_lispを変えません; それらの変数は、別々に変更しなければいけません。

関数: room ()
関数: room (true)
関数: room (false)

Maximaの記憶装置とスタックマネージメントの状態の描写を印字します。 roomは、同じ名前のLisp関数をコールします。

  • room ()は、適度の描写を印字します。
  • room (true)は、言葉数の多い描写を印字します。
  • room (false)は、簡潔な描写を印字します。
関数: sstatus (keyword, item)

keywordがシンボルfeatureの時、itemがシステムフィーチャのリスト上に追加されます。 sstatus (keyword, item)が実行された後、 status (feature, item)trueを返します。 もしkeywordがシンボルnofeatureなら、 itemはシステムフィーチャのリストから削除されます。 これはパッケージ作者が、搭載したフィーチャの追跡をするのに役に立つかもしれません。

statusも参照してください。

関数: status (feature)
関数: status (feature, item)

いくつかのシステム依存のフィーチャの存在と不在についての情報を返す。

  • status (feature)は、システムフィーチャのリストを返します。 これらは、Lispのバージョン、オペレーティングシステムのタイプなどを含みます。 リストは、1つのLispタイプからもう1つに変わるかもしれません。
  • status (feature, item)は、 もしitemstatus (feature)が返す項目のリスト上にあるなら、 trueを返し、そうでなければ、falseを返します。 statusは、引数itemをクォートします。 クォート-クォート演算子''は、クォーテーションに優先されます。 名前が、ハイフンのように特殊文字を含むフィーチャは、 文字列引数として与えられなければいけません。例えば、 status (feature, "ansi-cl")

sstatusも参照してください。

変数featuresは、 数式に適用される フィーチャのリストを含みます。 もっと情報を知るには、featuresfeaturepを参照してください。

関数: system (command)

別のプロセスとしてcommandを実行します。 コマンドは実行のためデフォルトのシェルに渡されます。 systemは、オペレーティングシステムすべてではサポートされませんが、 一般にUnixとUnixライクな環境では存在します。

_hist.outが、 xgraphを使ってバーグラフとしてプロットしたい頻度のリストだと仮定します。

(%i1) (with_stdout("_hist.out",
           for i:1 thru length(hist) do (
             print(i,hist[i]))),
       system("xgraph -bar -brw .7 -nl < _hist.out"));

プロットをバックグラウンドで(Maximaに制御を戻すように)させるようにし、終了した後、一次ファルを削除するようにするためには、以下のようにします:

system("(xgraph -bar -brw .7 -nl < _hist.out;  rm -f _hist.out)&")
関数: time (%o1, %o2, %o3, …)

出力行%o1, %o2, %o3, …を計算するために使った 時間のリストを秒で返します。 返された時間は、内部計算時間のMaximaの概算であって、経過時間ではありません。 timeは、出力行変数にだけ適用されます; 他の変数に関して、timeunknownを返します。

Maximaに出力行それぞれに計算時間と経過時間を印字させるには、 showtime: trueを設定してください。

関数: timedate ()
関数: timedate (T)

引数なしのtimedate()は現在時刻と日付を表す文字列を返します。 文字列は、フォーマットYYYY-MM-DD HH:MM:SS[+|-]ZZ:ZZを持ちます。 ここで、欄は、年、月、日、時、分、秒、時間と分のタイムゾーンオフセットです。

timedate(T)は フォーマットYYYY-MM-DD HH:MM:SS[+|-]ZZ:ZZの文字列として 時刻Tを返します。 Tabsolute_real_timeが返すような 1990年1月1日の真夜中以来の秒数として解釈されます。

例:

引数なしのtimedate()は現在時刻と日付を表す文字列を返します。

(%i1) d : timedate ();
(%o1)                      2010-06-08 04:08:09+01:00
(%i2) print ("timedate reports current time", d) $
timedate reports current time 2010-06-08 04:08:09+01:00

引数ありのtimedateは引数を表す文字列を返します。

(%i1) timedate (0);
(%o1)                      1900-01-01 01:00:00+01:00
(%i2) timedate (absolute_real_time () - 7*24*3600);
(%o2)                      2010-06-01 04:19:51+01:00
関数: absolute_real_time ()

協定世界時で1900年1月1日の深夜以来の 秒数を返します。 戻り値は整数です。

elapsed_real_timeelapsed_run_timeも参照してください。

例:

(%i1) absolute_real_time ();
(%o1)                      3385045277
(%i2) 1900 + absolute_real_time () / (365.25 * 24 * 3600);
(%o2)                   2007.265612087104
関数: elapsed_real_time ()

Maximaがもっとも最近スタートしたか再スタートして以来の (1秒の小数を含む)秒数を返します。 戻り値は浮動小数点数です。

absolute_real_timeelapsed_run_timeも参照してください。

例:

(%i1) elapsed_real_time ();
(%o1)                       2.559324
(%i2) expand ((a + b)^500)$
(%i3) elapsed_real_time ();
(%o3)                       7.552087
関数: elapsed_run_time ()

Maximaがもっとも最近スタートしたか再スタートして以来 Maximaが計算に費やした (1秒の小数を含む)秒数の概算を返します。 戻り値は浮動小数点数です。

absolute_real_timeelapsed_real_timeも参照してください。

例:

(%i1) elapsed_run_time ();
(%o1)                         0.04
(%i2) expand ((a + b)^500)$
(%i3) elapsed_run_time ();
(%o3)                         1.26

Next: , Previous:   [Contents][Index]