Audacity Nyquist(Lisp言語) 四則演算
四則演算を試す
C言語などで関数を考える場合、引数と戻り値をイメージしていくが、Lispでは少々違う。
Nyquistでテスト
下記はCommon Lisp(clisp)とNyquist(print)でテストしてみた。
| 式 | 評価 Common Lisp | 評価 Nyquist | メモ |
| (+ 1 2) | 3 | 3 | |
| (+ 1 2 3) | 6 | 6 | |
| (+ 1/3 1/3 1/3) | 1 | 無反応分数無理? | 分数計算得意 |
| (+ 2/3 1/2) | 7/6 | 無反応分数無理? | |
| (+ 0.3 0.3 0.3) | 0.90000004 | 0.900000 | Common誤差出る |
| (- 2 1) | 1 | 1 | |
| (- 3 2 1) | 0 | 0 | |
| (* 2 3) | 6 | 6 | |
| (* 2 3 4) | 24 | 24 | |
| (/ 4 2) | 2 | 2 | |
| (/ 4 2 2) | 1 | 1 | |
| (/ 4 3) | 4/3 | 1 | 分数になる Nyquist? |
| (/ 4 3.0) | 1.3333333 | 1.3333333 | 書き方で少数にできる |
| (+(* 2 2)(* 2 3)) | 10 | 10 | |
| (< 1 2) | T | 下記参照 | true |
| (> 1 2) | NIL | 下記参照 | NIL |
| (<= 1 2) | T | 下記参照 | true |
| (>= 1 2) | NIL | 下記参照 | Null |
| (= 1 1) | T | 下記参照 | true |
| (/= 1 1) | NIL | 下記参照 | NIL |
| (atom 1) | T | 無反応 | |
| (atom 'Japan) | T | 無反応 | クオートでシンボル化 |
| (rem 8 3) | 2 | 2 | 剰余 |
| (expt 3.0 2) | 9.0 | 9.0 | 3^2 小数にすること |
| (log 100 10) | 2 | 無反応 | |
| (sqrt 2.0) | 1.4142135 | 1.414214 | 小数にすること |
| (sqrt -1.0) | #C(0 1.0) | 無反応 | 複素数(実数 虚数) |
| (sin 1.0) | 0.84147096 | 0.84147096 | ラジアン |
| (1+ 2) | 3 | 3 | インクリメント |
| (1- 2) | 1 | 1 | デクリメント |
| (max 1 2 3 4) | 4 | 4 | |
| (min 4 3 2 1) | 1 | 1 |
他にもいろいろ使える関数はある。 上記比較演算子の場合、Audacityでは以下のように書かないとポップアップには表示されない。 下記はifを使って条件分岐させている。 基本的な書き方はCommon Lispの書き方でおおむね通用する。
(if (= 3 3)(print "T")(print "NIL"))
記述内容は、以下のようになっている。
(if 条件式 真の場合に評価する式 偽の場合に評価する式)
3と3が同じかどうか比較し、同じであればT、違えばNILが表示される。