Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

uLispの"let"と"let*"の違い

uLispの"let"と"let*"の違い

実際のところ

letはローカル変数を定義する関数です。
ただ、uLispにおいては関数定義の外に結果を出す場合にもエラーを吐かれます。

(defun tst ()
  (let ((a 7)
        (b a))
    (print a) (print b)))

実行すると

uLisp 2.7 
1213> (defun tst ()   (let ((a 7)         (b a))     (print a) (print b)))
tst

1187> (tst)
Error: 'a' undefined

こういう場合は"let*"を使い、事前に定義済みの変数を参照できるようにします。

(defun tst (a)
  (let *((a 7)
        (b a))
    (print a) (print b)))
1186> (defun tst ()   (let* ((a 7)         (b a))     (print a) (print b)))
tst

1187> (tst)

7 
7 
7