LISPに精通している人なら誰でもこの冗談を私に説明できますか?私は関数型プログラミング言語についていくつか読んだことがありますが、CAR / CDRがアドレス/デクリメントレジスタの内容を意味することを知っていますが、それでもユーモアがよくわかりません。
LISPに精通している人なら誰でもこの冗談を私に説明できますか?私は関数型プログラミング言語についていくつか読んだことがありますが、CAR / CDRがアドレス/デクリメントレジスタの内容を意味することを知っていますが、それでもユーモアがよくわかりません。
回答:
Lispでは、リンクされたリスト要素はCONSと呼ばれています。これは、歴史的な理由でCARとCDRと呼ばれる2つの要素を持つデータ構造です。(一部のCommon Lispプログラマーは、FIRST関数とREST関数を使用してそれらを参照することを好む一方で、CARやCDRのような他のプログラマーは、(CADR x)≡(CAR(CDR x))などの構成済みバージョンによく適合します。
冗談は、「私のもう1台の車はポルシェ/ BMW /その他です」と言って、ときどき古い車に見られるバンパーステッカーのパロディです。
(rplacd a (car a))
それが明らかにしない後ではありません。:) Common LISPはHaskellではありません。しかし、説明をありがとう。+1。
car
はfirst
」はどうですか。:)
はい、間違いなくオタクのジョークです。
名前はIBM 704から来ていますが、それは冗談ではありません。
冗談は、「私の他の車は___だ」という(悪い)冗談です。しかし、冗談は再帰についてです。
lispでループ、操作、選択、呼び出し、その他を行う場合、car(リストの最初の要素)とcdr(リストの残りの要素)の組み合わせを使用して関数を操作します。
だからあなたは車を持っていますが、cdrは常に(再帰的に)より多くの要素なので、あなたは常にcdrから車を得ることができるので、あなたの他の車はあなたのcdrです。それを得る?もう笑う?
あなたはおそらく実際に少し笑うためにlispを学ばなければならないでしょう。もちろん、そのときまでに、明らかな理由もなくランダムに笑っていることに気付くでしょう。
Lispはあなたを大げさにします。
// Schemeから来る
Schemeにはデータ構造がほとんどありません'(first . second)
。そのうちの1つはタプルです:。この場合、car
は最初の要素で、cdr
は2番目の要素です。この構成を拡張して、リスト、ツリー、およびその他の構造を作成できます。
冗談はあまり面白くない。
(first . second)
。リストは'(first second)
このように、2つのタプルで作られて(cons first (cons second null))