[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bep] learning lisp: if, and, cond



井上です。

TAKAHASHI Naoto <ntakahas@...> writes:

> 上の書き方でいいんですが、もし明示的に nil を返したいのなら、そのまま
> nil と書けばいいんですよ。もちろん nil もS式です。たとえば
> 
> (defun meaningless (arg) nil)
> 
> とすると、何を引数に与えても nil を返す無意味関数 meaningless が定義で
> きます。
> 
> もし仮にR高橋版 fact を、明示的に nil 返すように書き変えるなら、
> 
> (defun fact(n)
>   (if (and (integerp n) (>= n 1))
>       (if (= n 1)
>           1
>         (* n (fact (- n 1))))
>     nil))
> 
> ですね。

私はR高橋さんの答えを読んだときに、「あれ?条件が成立しないときのnil
は?」と思ったのですが、よくよく考えると条件が成立しない→if内で最後に
評価された式の値がnilなので、それでいいということか、と感心してしまい
ました。きっと自分ならなにも考えずにnilと書いただろうと思います。

-- 
                    Koichi Inoue, ARGV
                    E-Mail: inoue@...
                    ICQ UIN: 74900690