ใครมีความเชี่ยวชาญด้านเสียงกระเพื่อมช่วยอธิบายเรื่องตลกนี้ให้ฉันฟังได้ไหม ฉันได้อ่านภาษาโปรแกรมที่ใช้งานได้แล้วและรู้ว่า CAR / CDR หมายถึงเนื้อหาของที่อยู่ / ทะเบียนการลด แต่ฉันยังไม่เข้าใจอารมณ์ขันจริงๆ
ใครมีความเชี่ยวชาญด้านเสียงกระเพื่อมช่วยอธิบายเรื่องตลกนี้ให้ฉันฟังได้ไหม ฉันได้อ่านภาษาโปรแกรมที่ใช้งานได้แล้วและรู้ว่า CAR / CDR หมายถึงเนื้อหาของที่อยู่ / ทะเบียนการลด แต่ฉันยังไม่เข้าใจอารมณ์ขันจริงๆ
คำตอบ:
ใน Lisp องค์ประกอบรายการที่เชื่อมโยงเรียกว่า CONS เป็นโครงสร้างข้อมูลที่มีสององค์ประกอบเรียกว่า CAR และ CDR ด้วยเหตุผลทางประวัติศาสตร์ (โปรแกรมเมอร์ Common Lisp บางคนชอบอ้างถึงพวกเขาโดยใช้ฟังก์ชัน FIRST และ REST ในขณะที่คนอื่น ๆ เช่น CAR และ CDR เพราะเข้ากันได้ดีกับเวอร์ชันที่เตรียมไว้ล่วงหน้าเช่น (CADR x) ≡ (CAR (CDR x))
เรื่องตลกคือการล้อเลียนสติกเกอร์กันชนที่บางครั้งคุณเห็นในรถเก่า ๆ ที่ทุบตีพูดว่า "รถอีกคันของฉันคือปอร์เช่ / BMW / ฯลฯ "
คำตอบของฉันที่มีต่อเรื่องตลกนี้คือ "รถคันอื่นของฉันคือ CADR CDR ไม่ใช่ CAR เลย"
(rplacd a (car a))
นั้นจะไม่ปรากฏอย่างชัดเจน :) LISP ทั่วไปไม่ใช่ Haskell แต่ขอบคุณสำหรับคำอธิบาย +1.
car
คืออะไรfirst
" :)
ใช่เรื่องตลกเกินบรรยาย
ชื่อนี้มาจาก IBM 704 แต่นั่นไม่ใช่เรื่องตลก
เรื่องตลกคือ (ไม่ดี) เล่นสำนวนที่ "รถคันอื่นของฉันคือ ___ แต่เรื่องตลกเกี่ยวกับการเรียกซ้ำ
เมื่อคุณวน / จัดการ / เลือก / เรียกใช้ / เพิ่มเติมในเสียงกระเพื่อมคุณจะใช้การรวมกันของรถยนต์ (องค์ประกอบแรกในรายการ) และ cdr (ส่วนที่เหลือของรายการ) เพื่อเล่นกลฟังก์ชั่น
คุณมีรถแล้ว แต่รถอีกคันของคุณคือ cdr เพราะคุณสามารถรับรถจาก cdr ได้ตลอดเวลาเนื่องจาก cdr มีองค์ประกอบมากกว่า (ในการเรียกซ้ำ) เสมอ รับหรือไม่ หัวเราะยัง?
คุณอาจจะต้องเรียนรู้เสียงกระเพื่อมที่จะหัวเราะเบา ๆ จริง ๆ หรือไม่ แน่นอนว่าในตอนนั้นคุณอาจพบว่าตัวเองหัวเราะเบา ๆ โดยไม่มีเหตุผลชัดเจนเนื่องจาก:
เสียงกระเพื่อมทำให้คุณวนเวียน
// มาจากโครงการโครงการมีโครงสร้างข้อมูลน้อยมากหนึ่งในนั้นคือสิ่งอันดับ:
'(first . second)
ในกรณีนี้car
เป็นองค์ประกอบแรกและcdr
เป็นองค์ประกอบที่สอง โครงสร้างนี้สามารถขยายเพื่อสร้างรายการต้นไม้และโครงสร้างอื่น ๆ
เรื่องตลกไม่ตลกมาก
(first . second)
ล รายการ'(first second)
ประกอบด้วยสองสิ่งต่อไปนี้:(cons first (cons second null))