2

この質問は本当に議論の余地があります。プログラムか何かでバグに遭遇したに違いないと思います。PicoLispと onOff の動作をまだ探している場合は、こちらをご覧ください。




これは起こるはずですか?

: (show NIL)
NIL NIL
-> NIL
: (onOff)
-> T
: (show NIL)
T T
-> T
: (=T NIL)
-> T
: 

(onOff sym ..) -> flg

Logical negates the VAL's of all argument symbols sym. Returns the
new value of the last symbol.
  • シンボル名を明示的に渡すべきではありませんか?
  • 最後のシンボルの値を返すのはなぜですか?
4

2 に答える 2

1

onOff これは、マクロを使用した PicoLisp 実装のバグです。

onOff関数のパラメータは次のとおりです。(onOff var ..) -> flg

varとさらに多くの変数を取り、それらを論理的に否定します (true は false になり、false は true になります)。私は、onOff マクロが単一の引数リストを取ることに賭けても構わないと思っています。これは、引数が指定されていない場合、その引数のリストが空であることを意味します。つまり、関数に指定されたシンボルは NIL です。

マクロが太字になっているのは、そこに問題があるためです。マクロを使用すると、引用符なしでシンボルを渡すことができます。そのため、onOffマクロは正しくないコードを生成しています。

于 2009-10-31T00:44:04.327 に答える
0

これはニシンで、バグはありませんでした。すみません、HN間違い電話です。また、現在は最も自由度の高いオープン ソース ライセンスである MIT (X11) ライセンスの下にあります。

于 2015-06-11T20:44:17.293 に答える