Кіріспе

Lisp және басқа да функционалдық бағдарламалау тілдеріндегі функция және бастапқы дерек құрылымы. Lisp бағдарламалау функциясы.

Компьютерлік бағдарламалауда (/k//ɒ//n//z/ немесе /k//ɒ//n//s/) Lisp бағдарламалау тілінің көптеген диалектілеріндегі негізгі функция болып табылады. Екі мәнді сақтайтын немесе екі мәнге сілтеме жасайтын жад объектілерін құрастырады. Бұл объектілер (cons) жасушалары, cons-тар, атомдық емес s-өрнектері ("NATSes") немесе (cons) жұптары деп аталады. Lisp жаргонында "cons x onto y" дегені – (cons x y) арқылы жаңа объекті құру дегенді білдіреді. Нәтижедегі жұптың сол жағы (бірінші элементі немесе тіркелімнің мекенжайлық бөлігі) және оң жағы (екінші элементі немесе тіркелімнің азайту бөлігі) деп аталады. Бұл объектіге бағытталған түсінікпенгі конструкторға шартты түрде байланысты, ол аргументтер берілгенде жаңа объектіні жасайды, сондай-ақ алгебралық деректер жүйесінің конструкторлық функциясына жақын. "Cons" сөзі және "cons-қа" сияқты тіркестер де функционалдық бағдарламалау жаргонының бір бөлігі болып табылады. Кейде ұқсас мақсаттағы операторлар, әсіресе тізімдерді өңдеу контекстінде "cons" деп аталады. (Мысалы, ML, Scala, F#, Lean, Coq және Elm тілдеріндегі :: операторы немесе Haskell тіліндегі : операторы, тізімнің басына элемент қосады.)

Қолдану

Конс жасушалары деректердің реттелген жұптарын сақтау үшін қолданылуы мүмкін, бірақ олар көбінесе күрделі құрама деректер құрылымдарын, әсіресе тізімдер мен екілік ағаштарды құруға пайдаланылады.

Реттелген жұптар

Мысалы, Lisp өрнегі сол жағында 1 (аталған "өріс") және оң жағында 2 (аталған "өріс") сақтайтын жасушаны құрастырады. Lisp жазуында мән былай көрінеді:

(1 2)

1 мен 2 арасындағы нүктені байқаңыз; бұл S өрнегі "тізім" емес, "тоқталған жұп" (аталған "cons жұп") екенін көрсетеді.

Әңгімелесуде қолдану

Минустар жадты бөлудің жалпы процесін білдіре алады, императивті бағдарламалау тілінде қолданылатын жойғыш операцияларды пайдаланудан айырмалы. Мысалы:

Мен кодты аздап жылдамдаттым, оның орнына оны тиімсіз түрде жадқа бөлудің орнына жанама әсерлер енгіздім.