Có ai thông thạo ngọng giải thích cho tôi câu chuyện cười này được không? Tôi đã đọc một số ngôn ngữ lập trình chức năng và biết rằng CAR / CDR có nghĩa là Nội dung của Đăng ký Địa chỉ / Giảm dần nhưng tôi vẫn không thực sự hiểu sự hài hước.
Có ai thông thạo ngọng giải thích cho tôi câu chuyện cười này được không? Tôi đã đọc một số ngôn ngữ lập trình chức năng và biết rằng CAR / CDR có nghĩa là Nội dung của Đăng ký Địa chỉ / Giảm dần nhưng tôi vẫn không thực sự hiểu sự hài hước.
Câu trả lời:
Trong Lisp, một phần tử danh sách liên kết được gọi là CONS. Nó là một cấu trúc dữ liệu có hai yếu tố, được gọi là CAR và CDR vì lý do lịch sử. (Một số lập trình viên Lisp thông thường thích đề cập đến chúng bằng cách sử dụng các hàm FIRST và REST, trong khi những người khác thích CAR và CDR vì chúng rất phù hợp với các phiên bản đã được soạn sẵn như (CADR x) ≡ (CAR (CDR x)).
Trò đùa là một sự bắt chước của những miếng dán cản mà bạn đôi khi thấy trên những chiếc xe cũ nát với câu nói "Chiếc xe khác của tôi là Porsche / BMW / v.v.".
Câu trả lời của tôi cho câu nói đùa này luôn là "CAR khác của tôi là CADR. CDR hoàn toàn không phải là CAR."
(rplacd a (car a))
nó rõ ràng sẽ không. :) LISP thông thường không phải là Haskell. Nhưng cảm ơn vì lời giải thích. +1.
car
is first
". :)
Vâng, chắc chắn là một trò đùa lập dị.
Những cái tên đến từ IBM 704, nhưng đó không phải là trò đùa.
Trò đùa là (xấu) chơi chữ "chiếc xe khác của tôi là một ___." Nhưng trò đùa là về đệ quy.
Khi bạn lặp / thao tác / chọn / gọi / thêm trong lisp, bạn sử dụng kết hợp car (phần tử đầu tiên trong danh sách) và cdr (phần còn lại của danh sách) để tung các hàm.
Vì vậy, bạn đã có một chiếc ô tô, nhưng chiếc xe khác của bạn là cdr của bạn bởi vì bạn luôn có thể nhận được một chiếc ô tô từ cdr vì cdr luôn có nhiều phần tử hơn (trong đệ quy). Hiểu rồi? Cười chưa?
Có thể bạn sẽ phải học ngọng để thực sự cười khúc khích một chút, hoặc không. Tất nhiên, đến lúc đó, bạn có thể sẽ thấy mình tự nhiên cười khúc khích mà không rõ lý do vì:
Lisp làm cho bạn bị rối.
// Đến từ Scheme
Lược đồ có rất ít cấu trúc dữ liệu, một trong số chúng là một tuple : '(first . second)
. Trong trường hợp này, car
là phần tử đầu tiên và cdr
là phần tử thứ hai. Cấu trúc này có thể được mở rộng để tạo danh sách, cây và các cấu trúc khác.
Trò đùa không vui lắm.
(first . second)
. Danh sách này '(first second)
được làm bằng hai tuples, như thế này:(cons first (cons second null))