2010/08/08

(append '() 'a) ; -> a

gauche で (append '() 1) を評価した結果が 1 になるのはなんとなく納得いかないなぁ...
これを見て私もまんまと「え、なんでだろう?」と思いました。
shiro: R5RSでそう規定されてます RT: @yujiorama: gauche で (append '() 1) を評価した結果が 1 になるのはなんとなく納得いかないなぁ... http://bit.ly/atJY60
で、実際 R5RS を見てみたら、そう書いてありました。そらそうですね。
shiro: appendは正式なリスト同士の演算じゃないんですね。むしろペアに対する演算の一種と考えた方がすっきりする。consやlist*の仲間。 http://bit.ly/9eMywh
@valvallow いや、一貫してるでしょう。 リストの最後 (null) を次のリストに置き換えた形にするものと考えれば。
ここまで読んでもピンと来ませんでしたorz
下記のように append を自分で書いてみてようやくわかりました。。orz (append '() 'a) ; -> a なのは当然の結果ですね。


プログラミングGauche

0 件のコメント:

コメントを投稿