Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Lisp және басқа да функционалдық бағдарламалау тілдеріндегі функция және бастапқы дерек құрылымы. Lisp бағдарламалау функциясы.
Function and primitive data structure in Lisp and other functional programming languages
the Lisp programming function
Компьютерлік бағдарламалауда (/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 тіліндегі : операторы, тізімнің басына элемент қосады.)
In computer programming, ('/k//ɒ//n//z/ or '/k//ɒ//n//s/) is a fundamental function in most dialects of the Lisp programming language. constructs memory objects which hold two values or pointers to two values. These objects are referred to as (cons) cells, conses, non atomic s expressions ("NATSes"), or (cons) pairs. In Lisp jargon, the expression "to cons x onto y" means to construct a new object with (cons x y). The resulting pair has a left half, referred to as the (the first element, or contents of the address part of register), and a right half, referred to as the (the second element, or contents of the decrement part of register). It is loosely related to the object oriented notion of a constructor, which creates a new object given arguments, and more closely related to the constructor function of an algebraic data type system. The word "cons" and expressions like "to cons onto" are also part of a more general functional programming jargon. Sometimes operators that have a similar purpose, especially in the context of list processing, are pronounced "cons". (A good example is the :: operator in ML, Scala, F#, Lean, Coq, and Elm or the : operator in Haskell, which adds an element to the beginning of a list.)
Қолдану
Конс жасушалары деректердің реттелген жұптарын сақтау үшін қолданылуы мүмкін, бірақ олар көбінесе күрделі құрама деректер құрылымдарын, әсіресе тізімдер мен екілік ағаштарды құруға пайдаланылады.
Although cons cells can be used to hold ordered pairs of data, they are more commonly used to construct more complex compound data structures, notably lists and binary trees.
Реттелген жұптар
Мысалы, Lisp өрнегі сол жағында 1 (аталған "өріс") және оң жағында 2 (аталған "өріс") сақтайтын жасушаны құрастырады. Lisp жазуында мән былай көрінеді:
For example, the Lisp expression constructs a cell holding 1 in its left half (the so called field) and 2 in its right half (the field). In Lisp notation, the value looks like:
(1 2)
(1 2)
1 мен 2 арасындағы нүктені байқаңыз; бұл S өрнегі "тізім" емес, "тоқталған жұп" (аталған "cons жұп") екенін көрсетеді.
Note the dot between 1 and 2; this indicates that the S expression is a "dotted pair" (a so called "cons pair"), rather than a "list."
Әңгімелесуде қолдану
Минустар жадты бөлудің жалпы процесін білдіре алады, императивті бағдарламалау тілінде қолданылатын жойғыш операцияларды пайдаланудан айырмалы. Мысалы:
Cons can refer to the general process of memory allocation, as opposed to using destructive operations of the kind that would be used in an imperative programming language. For example:
Мен кодты аздап жылдамдаттым, оның орнына оны тиімсіз түрде жадқа бөлудің орнына жанама әсерлер енгіздім.
I sped up the code a bit by putting in side effects instead of having it cons ridiculously.