LISP Scheme Part7
■ このスレッドは過去ログ倉庫に格納されています
0238デフォルトの名無しさん
NGNG>(if (null? r))は、はじめの最初のループでしか意味をもちません。
考え方の前提がおかしいんじゃないか?
appendの'()を否定するって事は、リストの終端(空リスト)も
#fであるべきという事か?
意味的に (null? r)という述語は、「始めの最初のループかどうか」
ではなくて、「リストの終端(空リスト)かどうか」を示してると思うんだが。
>appendの引数を、最低1つにするという
>まあ、内部構造からすると自然なことをどうしてしないのか?
リストが0個の場合でも、それは「空リスト」と言って、
リストにとっては1つの形態として自然だから。
'(a b c) => '(a . (b . (c ())))
(length '(a b c)) => 3 (length '()) => 0
(length '())でも#fを返せというのか?
これを他の言語のデータ型に例えるとするなら、C言語の文字列かな。
文字列の長さをstrlenで調べて0が返されても、
実際には終端文字分の長さがあるのと同じ理屈。strlen("\0") => 0
"\0"は特別な値ではなく、あくまでも文字列の一部。
>(+ a b c NIL) => (+ a (+ b c NIL)) => (+ a (+ b (+ c NIL))) => (+ a (+ b (+ c (+ NIL))))
>したがって(+ NIL) => 0 となります。分かっているとおもいますが、、
(+ NIL) => Error: variable nil is not bound.
これで何を判れと?
もしかしてドット対の事を言ってるの?
■ このスレッドは過去ログ倉庫に格納されています