Кіріспе
Lisp бағдарламалау тіліндегі құрылым. Компьютерлік бағдарламалауда CAR (car) /k//ɑr//audio=en us car.ogg/ және CDR (cdr) ('/k//ʌ//d//ər//audio=US Lisp CDR2.ogg/ немесе '/k//ʊ//d//ər//audio=US Lisp CDR.ogg/) – Lisp бағдарламалау тілінде енгізілген cons ұяшықтарындағы (немесе "атомдық емес S өрнектеріндегі") бастапқы операциялар. Cons ұяшығы екі көрсеткіштен тұрады; car операциясы бірінші көрсеткішті, ал cdr операциясы екінші көрсеткішті шығарады. Осылайша, (car (cons x y)) өрнегі x-ке, ал (cdr (cons x y)) өрнегі y-ке тең болады. Cons ұяшықтары жеке тізбекті тізімдерді (ағаштар және басқа күрделі құрылымдар емес) іске асыру үшін қолданылғанда, car операциясы тізімнің бірінші мүшесін қайтарады, ал cdr тізімнің қалған бөлігін қайтарады. Осы себепті, бұл операциялар кейде "бірінші" және "қалған" немесе "бас" және "құйрық" деп аталады.
In computer programming, CAR (car) /k//ɑr//audio=en us car. ogg/ and CDR (cdr) ('/k//ʌ//d//ər//audio=US Lisp CDR2. ogg/ or '/k//ʊ//d//ər//audio=US Lisp CDR. ogg/) are primitive operations on cons cells (or "non atomic S expressions") introduced in the Lisp programming language. A cons cell is composed of two pointers; the car operation extracts the first pointer, and the cdr operation extracts the second. Thus, the expression (car (cons x y)) evaluates to x, and (cdr (cons x y)) evaluates to y. When cons cells are used to implement singly linked lists (rather than trees and other more complicated structures), the car operation returns the first element of the list, while cdr returns the rest of the list. For this reason, the operations are sometimes given the names first and rest or head and tail.
Композициялар
Автомобиль және cdr композицияларына қысқа да, белгілі бір деңгейде айтылатын, бірдей формадағы атаулар берілуі мүмкін. Lisp-те (cadr '(1 2 3)) өрнегі (car (cdr '(1 2 3))) өрнегімен тең; оның мәні 2-ге тең. Сол сияқты, (caar '((1 2) (3 4))) (кейде /k//eɪ//ɑr/ деп айтылады) (car (car '((1 2) (3 4)))) өрнегімен бірдей; оның мәні 1-ге тең. Көптеген Lisp жүйелері, мысалы Common Lisp және Scheme, автомобиль және cdr функцияларының екіден төртке дейінгі композицияларының барлық вариацияларын жүйелі түрде анықтайды.
Басқа компьютерлік тілдер
Көптеген тілдер (әсіресе функционалдық тілдер мен функционалдық парадигманың ықпалындағы тілдер) бірден байланысты тізімді негізгі дерек құрылымы ретінде пайдаланады және "car" мен "cdr" сияқты бастапқы функциялар немесе функцияларды ұсынады. Бұлар әртүрлі атаулармен белгіленеді: "бірінші" және "қалған", "бас" және "құйрық" және т.б. Дегенмен, Lisp-те "cons" жасушасы тек байланысты тізімдерді ғана емес, сонымен қатар жұптар мен ішкі жұптар құрылымдарын құру үшін де қолданылады, яғни "cons" жасушасының "cdr" бөлігі міндетті түрде тізім болуы керек емес. Осы жағдайда, көптеген басқа тілдер әртүрлі бастапқы функцияларды ұсынады, себебі олар әдетте жұп құрылымдарын тізім құрылымдарынан типтік немесе мағыналық тұрғыдан ажыратады. Әсіресе типтелген тілдерде тізімдер, жұптар және ағаштар әртүрлі типтік сипаттамалары бар әртүрлі қосымша функцияларына ие болады: мысалы, Haskell-де жұп түрін қолданғанда "car" және "cdr" функциялары "fst" және "snd" болып өзгереді. Сондықтан, "car" және "cdr" функцияларының нақты аналогтары басқа тілдерде сирек кездеседі. Clojure тілінде "car" орнына "first", ал "cdr" орнына "next" немесе "rest" қолданылады. Ал Logo тілінде "car" орнына "first", "cdr" орнына "butfirst" қолданылады.