Lisp プログラムの質問です。自分のプログラムではエラーが出ます。どこが間違っているでしょうか?
(1) 6歳から14歳の子は3000円を,15歳から21歳の子は5000円 をもらえて,これ以外の年齢の人はもらえないと決まって いるとする.年齢 xを引数として, x歳の子がもらえるお年玉の額を返す関数.ifを組み合わせて作る.
実行例 > (otoshidama 3) 0
(otoshidama 10) 3000
(otoshidama 18) 5000
(otoshidama 30) 0
自分のプログラム
(defun otoshidama (x) (if (<= x 5) 0 (if (=< x 21) (if (>= x 15) 5000 3000 ) 0)))
(2)リストy が(品目1 金額1 ... 品目 n 金額n) の形式になっている時,品目xの金額pをみつけて, pが予算z以内ならzからpを引いた金額を返す. pが予算zを超えていれば, yosan-overを返す.品目xがリストになければ,not-found を返す.
実行例
(setq y0 '(ateishoku 450 bteishoku 400 cteishoku 380)) (ATEISHOKU 450 BTEISHOKU 400 CTEISHOKU 380)
(kaimono 'bteishoku y0 1000) 600
(kaimono 'ateishoku y0 400) YOSAN-OVER
(kaimono 'tendon y0 1000) NOT-FOUND
自分のプログラム
( defun kaimono (x y z)
(let (y)
(if(=< x z) x-z 'yosan-over )))
よろしくお願いします。