Кіріспе

Lispkit Lisp — функционалдық бағдарламалау концепцияларын сынау үшін жасалған, лексикалық ауқытты, таза функционалды Lisp-тің ("Таза Lisp") кіші жиынтығы. Ол алғаш рет жақсы бағалаумен (lazy evaluation) ерте эксперименттер үшін қолданылды. 1980 жылы әзірлеуші Питер Хендерсон ALGOL түрінде жазылған SECD машинасына негіделген нұсқасын жариялады. Компилятор және виртуалды машина жоғары дәрежеде портативті, нәтижесінде көптеген машиналарда іске асырылды.

Негізгі тіл

Негізгі тіл тек келесі функцияларды ғана қамтамасыз етеді, бірақ кеңейтулер Хендерсонның кітабында жалқау бағалау және детерминисттік емес бағдарламалауды нақты қолдау үшін талқыланады. atom берілген өрнек, егер оның мәні атом болса, True қайтарады; әйтпесе, False қайтарады. add берілген екі өрнектің сандық мәндерінің қосындысын қайтарады. car мәні жұп болатын өрнектің бірінші мәнін қайтарады. cdr мәні жұп болатын өрнектің екінші мәнін қайтарады. cons екі өрнекті бергенде, олардың мәндерінен тұратын жұпты қайтарады. div берілген екі өрнектің сандық мәндерінің бөліндісін қайтарады. eq берілген екі өрнектің мәндері тең болса, True қайтарады; әйтпесе, False қайтарады. if берілген үш өрнектің біріншісінің мәні True болса, екіншісінің мәнін қайтарады, әйтпесе үшіншісінің мәнін қайтарады. lambda аргументтер тізімі мен өрнекті функция ретінде қайтарады. let берілген өрнекті, оның ішіндегі декларациялармен (атаулы өрнектер ретінде көрінетін) қайтарады. letrec let-ке ұқсас, бірақ декларацияланған атаулар декларациялардың өзінде де көрінеді. leq екі өрнектің біріншісінің мәні екіншісінен сандық жағынан кем немесе тең болса, True қайтарады; әйтпесе, False қайтарады. mod (немесе rem) екі өрнектің сандық мәндерінің модулін (қалдықты) қайтарады. mul екі өрнектің сандық мәндерінің көбейтіндісін қайтарады. quote берілген өрнекті өзгеріссіз, мән ретінде қайтарады. sub екі өрнектің сандық мәндерінің айырмасын қайтарады. lambda, let және letrec функциялары ұқсас, бірақ атаулы айнымалыларды өңдеудегі жіңішке айырмашылықтары бар, олар оларды әртүрлі жағдайларда пайдалы етеді. lambda функцияны анықтап, қайтарады, let өрнектерді айнымалылардың атауларымен байланыстырады, ал letrec let-ке ұқсас, бірақ рекурсивті функциялар мен мәндерді, мысалы, шексіз қатарларды анықтауға мүмкіндік береді.