[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

# 88. Error and warning messages

この章は いくつかのエラーメッセージやエラーから復帰する方法についての詳細情報を提供します。

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 88.1 Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.1 apply: no such "list" element

このエラーメッセージの共通の原因は、 要素番号が `< 1`か `> length(list)`のリストの要素にアクセスしようと 鍵括弧演算子 (`[ ]`)を使うことです。

Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.2 argument must be a non-atomic expression

これは通常 1つ以上の(訳注: 原文はmore than one)要素からなるリストや集合、他の何かが期待されたことを意味します。 このエラーメッセージの1つの起こりうる原因は以下の型の生成です:

    (%i1) l:[1,2,3];
    (%o1)                       [1, 2, 3]
    (%i2) append(l,4);
    append: argument must be a non-atomic expression; found 4
     -- an error. To debug this try: debugmode(true);

リストに変数や数を追加する正しい方法は最初にそれらを要素1つのリストでラップすることです:

    (%i1) l:[1,2,3];
    (%o1)                       [1, 2, 3]
    (%i2) append(l,[4]);
    (%o2)                     [1, 2, 3, 4]

Categories: Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.3 assignment: cannot assign to <function name>

Maximaはいくつかの割り当て演算子をサポートします。 関数を定義しようとする時には、`:=`を使わなければいけません。

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.4 expt: undefined: 0 to a negative exponent.

このメッセージは古典的なゼロ除算エラーを通知します。

Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.5 incorrect syntax: , is not a prefix operator

これは、コンマ (`,`)で始まるコマンドか、別のコンマが直接後に続くコンマが原因です。

Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.6 incorrect syntax: Illegal use of delimiter )

このエラーの共通の理由は、括弧を開くことなしに閉じたり、コンマが直接先行する閉じ括弧です。

Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.7 loadfile: failed to load <filename>

このエラーメッセージは通常、ファイルは存在するが読み込めないことを示します。 もしファイルが存在していて可読なら、このエラーメッセージに関して別の可能性があります: Maximaは高速化のためパッケージをネイティブバイナリファイルにコンパイルできます。 もしファイルをコンパイルした後にシステム上の何かがバイナリと非互換にするような方法で バイナリを変更したら、ファイルはもはやロードできなくなります。 Maximaは通常、パッケージから生成するバイナリファイルを 以下のようにタイプした後印字される名前のフォルダ内の `binary`と名付けられたフォルダの中に置きます:

    (%i1) maxima_userdir;
    (%o1)                 /home/gunter/.maxima

もしこのディレクトリがなければ、maximaはパッケージをコンパイルしなければいけない時すぐにそれを再度作ります。

Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.8 makelist: second argument must evaluate to a number

`makelist`は2番目の引数に刻まれる変数名を期待します。 今回、未定義の変数の名前の代わりにmaximaが他の何か、多分リストかリストの名前を見つけました。

Categories: Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.9 Only symbols can be bound

このエラーのもっともありえる原因は ループカウンタとして知られる数値の数や変数を使おうとしたことにありました。

Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.10 operators of arguments must all be the same

このエラーメッセージが現れる1つのありえる理由は等式をリストに追加するために `append`を使おうとしようとしたことです:

    (%i1) l:[a=1,b=2,c=3];
    (%o1)                 [a = 1, b = 2, c = 3]
    (%i2) append(l,d=5);
    append: operators of arguments must all be the same.
     -- an error. To debug this try: debugmode(true);

等式をリストに追加するために最初に要素1つのリストにラップしなくてはいけません:

    (%i1) l:[a=1,b=2,c=3];
    (%o1)                 [a = 1, b = 2, c = 3]
    (%i2) append(l,[d=5]);
    (%o2)             [a = 1, b = 2, c = 3, d = 5]

Categories: Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.11 Out of memory

普通Lispは、少なくとも1つのスタックとユーザーオブジェクトを含むヒープを含むいくつかのタイプのメモリを扱います。 メモリの枯渇を避けるにはいくつかの手法が役に立つかもしれません:

- 可能なら、通常の最善解はよりメモリ効率がよいアルゴリズムを使うことです。
- 関数をコンパイルすると、必要なメモリの総量を劇的に減ることがあります。
- 固定長のタイプの配列はリストよりメモリ効率がいいかもしれません。
- もし maximaが sbcl上で走っているなら、 sbclのメモリ制限が 現在の問題を解くには低すぎる値に設定されているかもしれません。 この場合、コマンドラインオプション `--dynamic-space-size <n>`を使うと sbclにヒープを `n`メガバイト確保するように命令できます。 しかし、 sbclはいくつかの異なるタイプのメモリを扱わなければならなくて、 なので利用可能な物理メモリの半分ぐらいまでしか確保できないことに注意してください。 また、 32-bitプロセスは 物理メモリに 2GBまでしかアクセスできないことに注意してください。

Categories: Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.12 part: fell off the end

`part()`が `n`より少ない項目を持つ何かの中の `n`番目の項目をアクセスするのに使われました。

Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.13 undefined variable (draw or plot)

maximaが値を知らない変数を含んでいたので関数が描画できませんでした。

どの変数がわからないのか見つけるためには、 描画コマンドの名前 (`draw2d`, `plot2d`や似たようなもの)を 既存の関数名と衝突しない適当な名前(例えば `ddraw2d`)で一時的に置き換えて maximaに描画コマンドがなんのパラメータを見ているのか印字させることが時々役に立ちます。

    (%i1) load("draw")$
    (%i2) f(x):=sin(omega*t);
    (%o2) f(x) := sin(omega t)
    (%i3) draw2d(
            explicit(
              f(x),
              x,1,10
            )
          );
    draw2d (explicit): non defined variable
     -- an error. To debug this try: debugmode(true);
    (%i4) ddraw2d(
            explicit(
              f(x),
              x,1,10
            )
          );
    (%o4) ddraw2d(explicit(sin(omega t), x, 1, 10))

Categories: Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.1.14 VTK is not installed, which is required for Scene

これは、VTKが実際にインストールされていないかー maximaが見つけられないかー 以下の maximaコマンドを入力した時の出力の名前のディレクトリへの書き込みアクセスができないか を意味します:

    (%i1) maxima_tempdir;
    (%o1)                         /tmp

Categories: Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 88.2 Warning messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.2.1 Encountered undefined variable <x> in translation

関数をコンパイルしましたが、変数 `x`の型がわかりませんでした。 これはコンパイルされたコマンドが、 maximaがこの変数に関して提供するすべての柔軟性を保持する追加のコードを含むことを意味します。 もし `x`が変数名を意味しなくてコマンドへの名前付きオプションを意味するなら、 名前オプションの前にシングルクォート (`'`)をつけることでこの問題を解決するでしょう。

Error messages

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 88.2.2 Rat: replaced <x> by <y> = <z>

浮動小数点数は、最大数が普通は十分大きなものですが、依然制限はあります。 無害に見える例でこの制限が小さすぎることを示すよい例はとして、 Wilkinson's Polynomial, Rump多項式、そして正確な1/10は2進数の浮動小数点で表現できないという事実があります。 それゆえに、 浮動小数点エラーが徐々に大きくなったり、項が互いに打ち消し合うことを妨げるあちこちの場所で、 maximaはデフォルトでそれらを正確な分数に置き換えます。 `ratprint`, `ratepsilon`, `bftorat`, `fpprintprec`, `rationalize`も参照してください。

Warning messages

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by 市川雄二 on October, 5 2017 using texi2html 1.76.