パソコン活用研究PCマニアック道(FORTRAN,COBOL,PL/I,PASCAL,LISP,LOGO,PROLOG,APL,PERL,SQL)

四則演算


アトムとリストでは、Lispの特長であるアトムとリストについて触れました。Lispらしさという点からいうと、リスト処理
をとりあげるのが本来の順序でしょうが、今回は他のプログラム言語からの入門者がなじみやすいように、あえて
一番Lispらしさの薄い四則演算についてまとめてみます。Lispらしさが薄いとは言っても、腐ってもLisp。Lispらしさ
を堪能するには十分でしょう。


1 加算 + PLUS

加算の関数は+またはPLUSです。両方とも使えるLISPもあれば、どちらか一方のみしか使えないLISP
もあります。xl304winでは+しか使えません。YoolwはPLUSと+の両方が使えます。

xl304winの場合  (+ 3 4)    結果 7
Yoolwの場合   (PLUS 1 8)  結果 9

古いLisp処理系では、+, PLUSの引数は2個となっていましたが、最近のLispは2個以上の引数が使えるよう
です。xl304winもYoolwも2個以上の引数が使えます。例えば以下のようです。
(+ 2 5 5) と記述すると、2+5+5と計算され、結果は12となります。
これは(+ 2 (+ 5 5)) と記述しても同じです。

xl304winでの実行例
XLISP-PLUS version 3.04
Portions Copyright (c) 1988, by David Betz.
Modified by Thomas Almy and others.
> (+ 2 5 5)
12
> (+ 2 (+ 5 5))
12
>


2 減算、乗除算

減算、乗算、除算の例をあげます。

書式 処理結果
減算 (- x y) または
(DIFFERENCE x y)
x - y
乗算 (* x y) または
(TIMES x y)
x * y
除算 (/ x y) または
(QUOTIENT x y)
x/y

除算の結果の表示はLispによって異なり、(/ 7 3) とすると、xl304winでは、7/3と分数で表示し、
Yoolwでは、2.33333と少数で表示します。

引数が2個以上の場合は、加算と同じで、
(- 3 4 5) は 3-4-5
(* 2 3 4) は 2*3*4
(/ 12 3 6)は 12÷3÷6
という処理になります。

xl304winの実行例
XLISP-PLUS version 3.04
Portions Copyright (c) 1988, by David Betz.
Modified by Thomas Almy and others.
> (- 3 4 5)
-6
> (* 2 3 4)
24
> (/ 12 3 6)
2/3
>

3 四則演算応用例
では、応用例を少し考えてみましょう。とは言ってもすぐに理解できると思いますが。

処理内容 プログラム記述例
(3+4)*(5-2) (* (+ 3 4) (- 5 2))
(5+5)3 (* (+ 5 5) (+ 5 5) (+ 5 5))

xl304winの実行例
XLISP-PLUS version 3.04
Portions Copyright (c) 1988, by David Betz.
Modified by Thomas Almy and others.
> (* (+ 3 4) (- 5 2))
21
> (* (+ 5 5) (+ 5 5) (+ 5 5))
1000



4 その他の演算

Lispによっては、以下のような演算が用意されています。

書式 処理結果
REMAINDER (REMAINDER x y) x÷y の余りを求める 
DIVIDE (DIVIDE x y) x÷yの商と余りをドット表記のリストで返す
ADD1 (ADD1 x) x+1を返す
SUB1 (SUB1 x) x-1を返す
ABS (ABS x) xの絶対値を返す



Yoolwでの実行例も掲載しておきます。



 

TopPage


 

inserted by FC2 system