| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
1.1 リストについて 1.2 リストに関する諸定義
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
((mplus) $A 2) |
これは式A+2を意味するが、MAXIMA階層では中置表記でA+2と
なっている。
(* 訳者注: 中置表記(infix notation)とは、この例の"+"の様に二つ引数の間に配置される 演算子の表記の事である。詳しくは"色々な演算子"のinfixの項を参照されたい。 *) |
MAXIMAは次の例で示されるリストも持つ。
[1, 2, 7, x+y] |
((mlist) 1 2 7 ((mplus) $X $Y )) |
((mlist simp) 1 2 7 ((mplus simp) $X $Y)) |
(* 訳者注: MaximaはCommon Lispで記述される為、扱うデータは基本的にリストや原子である。 ここで注意する事は演算子がリストの先頭に置かれ、リストのS式に近いものとなる。 但し,+、-等のLISPの演算子を利用するのでは無く、例えば、Maximaでの和(+)は (mplus)と云う風にリストで演算子を表現する。その為、Maxima内部では、演算子の 部分が0、それ以降の成分に1,2,...と番号が振られる。ここでSUBSTPARTを用いれば、 成分の入れ換えが行え、この入れ換えは関数の引数に留まらず、演算子自体の入れ替 えも可能となる。これは内部表現を上手く利用して、成分を入れ替える為である。 *) |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(C1) DELETE(SIN(X),X+SIN(X)+Y); (D1) Y + X |
(C1) PUT(%E,'TRANSCENDENTAL,'TYPE);
(D1) TRANSCENDENTAL
(C2) PUT(%PI,'TRANSCENDENTAL,'TYPE)$
(C3) PUT(%I,'ALGEBRAIC,'TYPE)$
(C4) TYPEOF(EXP) := BLOCK([Q],
IF NUMBERP(EXP)
THEN RETURN('ALGEBRAIC),
IF NOT ATOM(EXP)
THEN RETURN(MAPLIST('TYPEOF, EXP)),
Q : GET(EXP, 'TYPE),
IF Q=FALSE
THEN ERRCATCH(ERROR(EXP,"is not numeric.")) ELSE Q)$
(C5) TYPEOF(2*%E+X*%PI);
X is not numeric.
(D5) [[TRANSCENDENTAL, []], [ALGEBRAIC, TRANSCENDENTAL]]
(C6) TYPEOF(2*%E+%PI);
(D6) [TRANSCENDENTAL, [ALGEBRAIC, TRANSCENDENTAL]]
|
例: MAKELIST(CONCAT(X,I),I,1,6)で[X1,X2,X3,X4,X5,X6]が生成される。 MAKELIST(X=Y,Y,[A,B,C])で[X=A,X=B,X=C]が生成される。 |
例えば、MEMBER(B,F(A,B,C));-> TRUE。
(* 訳者注:"成分の順序を逆にするが、その成分自身を逆にしない"とは次の状態を 意味する:
(C1) a1:[[1,2,3],[4,5],6]; (D1) [[1, 2, 3], [4, 5], 6] (C2) b1:reverse(a1); (D2) [6, [4, 5], [1, 2, 3]] (C3) a1[1]; (D3) [1, 2, 3] (C4) a1[2]; (D4) [4, 5] (C5) a1[3]; (D5) 6 (C6) b1[1]; (D6) 6 (C7) b1[2]; (D7) [4, 5] (C8) b1[3]; (D8) [1, 2, 3] |
*)
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |