#:g1: atomとnullにpがないのは何故かを考える

Posted 2020-11-08 07:03:01 GMT

Lispの述語(predicate)の名前の末尾には大抵pが付いていて、これが一つのLisp文化を形成していたりもしますが、atomnullには、末尾には何故かpがついていません。
方言によっては、整合性を持たせるためにatompや、nullpとしているものもありますが、大抵は、歴史的理由として、そのままatomや、nullを継承することが多いようです。

そんな日々でしたが、atomnullにpが付かなかった理由の仮説を思い付きました。

pが付かなかった仮説: atomnullPropositional Expressions として記述する気でいたから説

Recursive Functions of Symbolic Expressionsand Their Computation by Machine, Part Iや、LISP I Programmer's manualには、 Propositional Expressionsというものが、述語とならんで解説されていますが、いまでいうブーリアンを返す式です(複合可)。

b.Propositional Expressions and Predicates. 

A propositional expression is an expression whose possible values are T(for truth) and F(for falsity). We shall assume that the reader is familiar with the propositional connectives ∧(“and”),∨(“or”), and¬(“not”). Typical propositional expressions are:

x < y (x < y)∧(b = c) x is prime

ここで注目したいのは、x is primeという形式ですが、atomや、nullはこの形式にぴったりではありませんか。

flat[x] = [x is null → x;
           x is atom → list[x];
           T → append[flat[car[x]];
                       flat[cdr[x]]]]

——と記述するのであればpは不要です。

しかし、残念ながら以降の文献にはis形式は登場せず用例の解説も皆無です。
predp[x]という述語形式に吸収されてしまったのか、もしくは記法としての整合性がなかったのか……。

さらには、同文献中にatom[x]の用例が解説されており、当初はx is atom形式だった、という痕跡もなく、いまいち説得力もありません。

まとめ

is形式の謎の解明が俟たれます。


HTML generated by 3bmd in LispWorks Personal Edition 7.1.2

comments powered by Disqus