Bu şakayı bana lisp konusunda iyi bilen biri açıklayabilir mi? İşlevsel programlama dilleri hakkında biraz okuma yaptım ve CAR / CDR'nin Adres / Azaltma Kaydı İçeriği anlamına geldiğini biliyorum ama yine de mizahı gerçekten anlamıyorum.
Bu şakayı bana lisp konusunda iyi bilen biri açıklayabilir mi? İşlevsel programlama dilleri hakkında biraz okuma yaptım ve CAR / CDR'nin Adres / Azaltma Kaydı İçeriği anlamına geldiğini biliyorum ama yine de mizahı gerçekten anlamıyorum.
Yanıtlar:
Lisp'te, bağlantılı bir liste öğesine CONS denir. Tarihsel nedenlerden dolayı CAR ve CDR olarak adlandırılan iki unsurlu bir veri yapısıdır. (Bazı Common Lisp programcıları, İLK ve DİNLENME işlevlerini kullanarak bunlara başvurmayı tercih ederken, diğerleri (CADR x) ≡ (CAR (CDR x)) gibi önceden oluşturulmuş sürümlere iyi uydukları için CAR ve CDR'yi severler.
Şaka, bazen dövülmüş eski arabalarda gördüğünüz "Benim diğer arabam bir Porsche / BMW / vb." Diyen tampon etiketlerinin bir parodisidir.
Benim tepkisi bu şaka için her zaman "Benim diğer OTOMOBİL bir CADR olduğunu. CDR hiç bir CAR değildir." Olmuştur
(rplacd a (car a))
açıkça olmayacak. :) Yaygın LISP, Haskell değildir. Ama açıklama için teşekkürler. +1.
car
DİR first
". :)
Evet, kesinlikle bir inek şakası.
İsimler IBM 704'ten geliyor ama şaka bu değil.
Şaka, "diğer arabam bir ___" üzerine (kötü) kelime oyunu. Ama şaka özyineleme hakkındadır.
Lisp'de döngü / manipüle / seç / çağır / daha çok yaptığınızda, işlevler arasında hokkabazlık yapmak için car (listedeki ilk öğe) ve cdr (listenin geri kalanı) kombinasyonunu kullanırsınız.
Yani bir arabanız var, ancak diğer arabanız sizin cdr'niz çünkü cdr her zaman (özyinelemede) daha fazla öğe olduğundan her zaman bir cdr'den bir araba alabilirsiniz. Anla? Güldün mü?
Aslında biraz kıkırdamak ya da kıkırdatmak için muhtemelen lisp öğrenmeniz gerekecek. Elbette, o zamana kadar, muhtemelen kendinizi hiçbir neden olmadan rastgele kıkırdarken bulacaksınız, çünkü:
Lisp sizi huysuzlaştırır.
// Şema geliyor
Planı bunlardan biri başlık olur, çok az veri yapılarını vardır: '(first . second)
. Bu durumda, car
birinci unsurdur ve cdr
ikinci unsurdur . Bu yapı, listeler, ağaçlar ve diğer yapıları oluşturmak için genişletilebilir.
Şaka pek komik değil.
(first . second)
. Liste '(first second)
şu şekilde iki (cons first (cons second null))