2014/01/18
■ [z80][xlisp]自作Z80 CP/Mマシン(38)
引き続き XLISPのメモ。
一応動くようになり、簡単なプログラムを動かしていると if関数がおかしいことに気づきました、 例えば (if t 1 2) を評価させるとエラーになってしまいます。
付属のドキュメントを見ると if関数は (if <texpr> <expr1> [ <expr2> ]) で <txpr>は条件式、 <expr1>は真の時に評価で必須、 <expr2>は偽の時に評価で省略可となっています。
また、 (if t (1)(2)) のように引数をリストにするとエラーになりませんでした。
XLISP version 1.1 > (if t 1 2) error: bad argument type <- エラーになる (if t 1 2) > (if t (1)(2)) 1 <- こちらは1が返ってくる
LISPと言えば emacsなんで、 scratchで試してみると、、
(if t 1 2) 1 <- 1が返ってくる (if t (1)(2)) Lisp error: (invalid-function 1) <- こっちでエラーになる
やっぱりおかしいようです。
(環境は CP/M Z80 HI-TECH C ver3.09でコンパイル)