私はScheme、Racket、Clojureの式(ここでClojureを使用)(and true '())
は()
と評価し、(and '() true)
はtrue
と評価しました。これは、空のリストだけでなく、任意のリストに対しても当てはまります。 ブール値とリストの論理和
しかし、GNU CLISPやEmacs Lispの
、(and t '())
は
nil
に評価し、
(and '() t)
も
nil
に評価されますが、
(and t '(1 2 3))
は
(1 2 3)
に評価し、
(and '(1 2 3) t)
は
t
に評価されます。
ここでは何が起こっていますか?
しかし、SchemeとRacketでは '(null? '())'は真です。 Clojureでは、 '(nil? '())'は本当に間違っています。 –
@clementi Scheme and Racketでは、 'null'は' '()と同じ値ですが、真実であり、(2) '()'や ''()'として出力します。 CLとelispでは、 'nil'は' '()と同じ値ですが、(1)偽です。(2) '()'ではなく 'nil'として出力します。 –
@clementiは私の答えを更新しました。 alexisはまさに正しいです。 –