::: Учебники Cookbook :: https://lispcookbook.github.io/cl-cookbook/ PCL :: http://lisper.ru/pcl/ OnLisp :: http://www.paulgraham.com/onlisptext.html ::: Документация http://www.lispworks.com/documentation/HyperSpec/Front/index.htm ::: Библиотеки https://github.com/CodyReichert/awesome-cl http://quickdocs.org/ ::: Среда разработки Portacle :: https://portacle.github.io/ Остальные :: https://lispcookbook.github.io/cl-cookbook/editor-support.html
>говно без синтаксиса >ебанутое коммюнити >неудобный синтаксис >типизации нет >и синтаксис неудобный
>>12211 Типичный пример скобкофоба, который прячет свое неумение баллансировать скобки за глупыми отмазками. >Более серьезные товарищи просто скажут Что ты глупый позер и ничего не знаешь о мнении более серьезных товарищах. >>12212 >Поставил емакс, sbcl, кое-как прикрутил slime, а что дальше? А что ты вообще хочешь то? Просто напоиграться с языком думаю тебе вполне хватит возможности на горячую менять код по хоткею и в произвольном месте останавливать программу, рассматривая и при необходимости меняя любое состояние. >В sbcl не работает дополнение по таб Дочитай ман по слиму. И пиши в окне редактора, подгружая код по хоткею. Не надо без причины руками фигачить в репл. >как запускать саму программу? Дочитай ман по слиму. А когда придешь с правильным вопросом про то как запустить сванк ноду и приконнектится к ней... а нифига не придешь если правда дочитаешь.
Мне нравится только один лисп - Wolfram Mathematica. Безотносительно того, что это бажный проприетарный зонд. Это единственный лисп, в котором сделали M-выражения и человеческий синтаксис. Беда лисперов в том, что они догматически уверовали, что синтаксис не важен. Хотя опыт каждый день доказывает обратное. Самое сложное в программировании - не писать свой код, а читать чужой, именно на это уходит большая часть усилий. Поэтому лисп и другие языки, экономящие на читаемости, закономерно остаются уделом психов-одиночек, сидящих на мамкиной шее, и никто их гениальный код почему-то не ценит. А богатым и знаменитым вместо них стал Стивен Вольфрам.
>>12212 Он считается устаревшим, потому что а) родом из 60-х и б) так и не был модернизирован, потому что у каждого лиспера эго что пиздец и они так и не смогли не до чего договориться. >На нём написаны мощные вещи, как емакс и autocad, в литературе пишут, что его используют в проектах ИИ - это вызывает интерес. Кто тебе так в голову насрал, бедняга? Ядро имакса написано на сишке, он только скриптуется особо уебищным вариантом лиспа с динамическим скоупом. Автокад когда-то давно тоже скриптовался лишпом, насколько мне известно теперь перестал. И не используют лисп в ИИ, ученые не дебилы. Основопологающий учебник по ИИ переписали с лишпа на питон, если ты об этой литературе. >Что за баг? Не помню точно, это было несколько лет назад, но один из корных контрибуторов sbcl не смог сбалансировать скобки и у них отвалились то ли сокеты, то ли процессы, то ли еще какая серьезная лабуда. >И я таки полный лошара в программировании вообще. Ну и зачем ты тогда ищещь себе излишних и асолютно ортогональных приключений на пятую точку? Бери что новичкам советуют - питон, например.
>>12220 >Основопологающий учебник по ИИ переписали с лишпа на питон Пожалуйста, если не знаешь о чем говоришь - молчи. Учебник по ИИ, лол. >Не помню точно Тогда молчи. То что в одной из реализаций, пусть и лучших на данный момент, был баг еще ни о чем не говорит. Разве что таким неучам как ты.
>>12218 На редкость адекватное мнение. Я даже с ним соглашусь. Только не с лиспом как таковым надо сравнивать, а с такими же математическими продуктами. С той же maxima например.
>>12220 Поэтому лисп и другие языки, экономящие на читаемости И еще, ты не поверишь, но в проблеме читаемости доля языка не такая значительная как ты думаешь. Можно вполне читаемо писать на лиспах меня на самом деле уже злит то что тут не уточняют конкретный вид лиспов когда это важно , можно абсолютно нечитаемо писать на каждом прочем языке. Вообще же заблуждение по поводу нечитаемости и скобкофобия, возможно, берется из-за уе^глупых старых книг по лиспу в духе ранней компьютерной литературы, где каждый терм выписывали заглавными буквами, нихрена не заботились о нормальной лесенке и не не подсвечивали цветом. В книгах поновее по какой-нибудь кложуре такого безобразия естественно уже нет, но утят это естественно не волнует.
キタ━━━(゚∀゚)━━━!!
Лишп это секта. ОП, будь осторожен! Иначе начнешь так же вилять жопой и причитать "нет, нет, я ничего не видел!!! Вы все врете!", как этот малолетний дебил: >>12221 >Учебник по ИИ, лол >Artificial Intelligence: A Modern Approach, 3e offers the most comprehensive, up-to-date introduction to the theory and practice of artificial intelligence. Number one in its field, this textbook is ideal for one or two-semester, undergraduate or graduate-level courses in Artificial Intelligence. Что смешного, лиспушок? Или только вторая редакция тру, потому что примеры в ней на скобкоговне? Или это не учебник? Или не по ИИ? Может он не основополагающий? >То что в одной из реализаций, пусть и лучших на данный момент, был баг еще ни о чем не говорит. Давай, я тебе еще раз повторю, на этот раз ЖИРНЫМ: >один из корных контрибуторов sbcl не смог сбалансировать скобки >>12225 >И еще, ты не поверишь, но в проблеме читаемости доля языка не такая значительная как ты думаешь. >доля языка в читаемости языка не значительная Да ты упорот, парниша.
>>12227 >Artificial Intelligence,: A Modern Approach. Ошибочно подумал о sicp'е, но извиняться не буду. >Давай, я тебе еще раз повторю Ок. А я точно также могу тебя ткнуть носом в различные баги на других языках, сделанные по недосмотру. Тот же приснопамятный хартблид например. Но это же не лисп. Может кол-во скобок и баги никак не связаны? ... wait!... oh shi~! >Да ты упорот, парниша. Нет ты. Как отпустит - поговорим. И о вырвиглазном коде на жаве, и о еще более вырвиглазном коде на си с плюсами и без, и о мегаедрическом ужасе на пхп/1с/another_usefull_shit что пишет быдлокодер Коля за чашку риса.
>>12215 >В этом лишпе типизации нет >ANSI Common Lisp Глава 2.15 >Лисп обладает необыкновенно гибкой системой типов. Во многих языках необходимо задать конкретный тип для каждой переменной перед ее использованием. В Common Lisp значения имеют типы, а переменные – нет. Представьте, что у каждого объекта есть метка, которая определяет его тип. Такой подход называется динамической типизацией. В общем, я зря вообще полез спрашивать, прежде чем за что-то приняться. Так нельзя делать, иначе понахватаетесь предвзятого мнения, пусть и возможно верного. Разбирать скобки без подстветки неудобно, порог вхождения очень высокий для новичка, всё непривычно и непонятно, а синтаксис мне сравнивать пока не с чем. Пожалуйста, не говорите больше какой это плохой или хороший язык. Возможно буду постить ещё вопросы или впечатления от похождений.
>>12229 Ты кстати расскажи что-ли о том, зачем тебе вообще понадобились лиспы? Или, если это исключительно just for fun без каких-либо объективных доводов, поделись субъективными. вдохновленный тредом, раскопал в недрах системы пыльный емакс и поигрался в слиме со списками и макросами
>>12229 >В общем, я зря вообще полез спрашивать Особенность лиспа: в отличии от других языков, вокруг которых формируется ядро фанбоев, вокруг лиспа и лисперов сформировалась прослойка лютых ненавистников. Воистину же особенный язык! trollface.png
>>12229 > Такой подход называется динамической типизацией. Это и называется "нет типизации". Пирс писал, что термин dynamic typing в корне неверен, и эту парашу правильно называть dynamic checking.
>>12231 Любой язык имеет, прежде всего, ядро фанбоев, которые трубят о нём на форумах. Если этот язык новый и незнакомый широкой аудитории, вокруг этого ядра собирается оболочка скептиков, говорящих "ненужно" (а вовсе не ненавистников, как тебе представляется). Затем про этот язык либо все забывают, либо он становится мэйнстримом, и скептики перестают быть скептиками. Всего пару лет назад про хаскель только и было слышно "ололо, зигоморфизмы", а нынче хейтеры тихо сидят и учат этот язык. С лиспом этого так и не произошло, а причина этому - его безблагодатность. Уникальность феномена лиспа только в том, что его фанбои не смогли с тех пор выучить ничего нового (кроме шарпика, kek).
> Всего пару лет назад про хаскель только и было слышно "ололо, зигоморфизмы", а нынче хейтеры тихо сидят и учат этот язык. Лол, ты о себе, что ли? Как был гопник хаскель академической маргинальщиной, так ею и остался.
>>12234 Как криокамера, не протекает? Даже на медленном автобусе было несколько товарищей, пишущих в стиле пыха свои хомяки на yesod'е.
>>12235 >пишущих в стиле пыха свои хомяки С каких пор написание маргинального хомяка стало признаком успешности языка? Я что-то пропустил в этой жизни? >>12233 - типичный пример лиспоненавистника, как я уже говорил ранее думаю это все-таки эти посты писал один человек
>>12236 > С каких пор написание маргинального хомяка стало признаком успешности языка? Я что-то пропустил в этой жизни? Интерес со стороны интеллектуального большинства - не признак успешности? > а-а-а! кругом семёны-хейтеры Лисп всё-таки крайне симптоматичен.
>>12235 Если ты обо мне, то я тащем-то из /c/ нульча родом. Так что хачкель мне уже несколько лет как "родной".
>>12239 Вас тут много таких. Дай угадаю, это у тебя поиск выдавал 504, если ввести более трёх слов в запрос, потому что был написан, емнип, с квадратической по размеру базы сложностью и парой очевидных санк-ликов? В любом случае, то, что на язык используется подобными лоускильными товарищами, автоматически выводит его за ранг академического.
>>12240 Йеп, это я.
(defun cirno (a b) (+ a b)(if (= (+ a b) 9) "baka!" "nebaka"))
Стив, я сломал лисп? Или емакс? Или sbcl? Когда: '(defun ask-number () '(format t "Please enter a number. ") '(let ((val (read))) '(if (numberp val) 'val '(ask-number)))) '>(ask-number) 's 's '2 'Please enter a number. Please enter a number. Please enter a number. '2 Ещё '(setf x (list ’a ’b ’c)) Возвращается с ошибкой 'The variable is unbound 'Undefined variable Я же просто примеры из книжки запускаю. Может я его чем-то обидел?
>>12249 Во втором примере ты вводил юникодные кавычки вместо обычных, наверное.
>>12251 А ведь и правда вводил. Правда, что с (format), я так и не понял.
>>12249 Удваиваю про одинарную кавычку. В моих прыщешрифтах они например выглядят по-разному. ну признайся что это был сорт оф троллинг! я не поверю что такое можно набрать случайно >'(setf x (list ’a ’b ’c))
>>12254 Уснул на скобках - получился лисп-скрипт ! рандпикрелтейд
Ууу, кавычка вначале - это случайно, я даже в форматирование вакабамарк не могу. И вообще, я понял что с (format), это всё из-за SBCL. >You need to use FINISH-OUTPUT . >In systems with buffered output streams, some output remains in the output buffer until the output buffer is full (then it will be automatically written to the destination) or the output buffer is emptied. >Common Lisp has three functions for that: >FINISH-OUTPUT, attempts to ensure that all output is done and THEN returns. >FORCE-OUTPUT, starts the remaining output, but IMMEDIATELY returns and does NOT wait for all output being done. >CLEAR-OUTPUT, tries to delete any pending output. >Also the T in FORCE-OUTPUT and FORMAT are unfortunately not the same. >force-output / finish-output: T is terminal-io and NIL is standard-output >FORMAT: T is standard-output >this should work. Следовательно. >(defun ask-number () >(format t "Enter a fucking number! ") >(finish-output nil) >(let ((val (read))) >(if (numberp val) >val >(ask-number)))) Работает, ня!
Стив, а что такое атом? А то я запутался и ничего не понимаю? Символы != списки, но атом = символы и списки. А чем тогда не является атом?
>>12266 функции
>>12266 >Function] >atom object >The predicate atom is true if its argument is not a cons, and otherwise is false. Note that (atom '()) is true, because ()nil. >https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node73.html Первая ссылка в гугле на запрос "common lisp atome predicate". Хотя правильней на самом деле в гиперспеке смотреть, но я на коммоне почти не писал, жмякал за скобки другие лиспы. И вообще, все ответы на подобного рода вопросы с околоединичной вероятностью есть именно в различных справочных руководствах по языку/реализации. >>12267 Не зная не утверждай, сомневаясь - хотя бы проверяй. $sbcl <...> (atom #'+) T (atom 1) T (atom '()) T (atom (cons 1 2)) NIL
Понял! Я правда читал, только они сложно это всё. Я и математику на яблоках учил. Стив, стив, а что такое тогда S-выражения?
>>12274 И вообще, стив, тебе же сложно было, когда ты только начинал заниматься? Как ты научился? Как сделать, чтоб было не сложно? Как хоть что-то понимать? Мне интересно и я хочу кодить, но не могу. Понимаю значения функций, но приводят код с объяснением, понятным даже коту, а я смотрю на него и дико клонит в сон, пытаюсь удержать в голове значения и ничего не понимаю, пытаюсь скипнуть, говорю себе "Если не поймешь это - не поймешь ничего и ты проиграл", иду варить чай, возвращаюсь, повтор. И так по несколько часов, по несколько дней. Даже не из-за сложности CL, относительно всего. Я и в школе такой был. Сам лисп, кстати, ничего не сложный, всё враки.
>>12275 Выбери себе какой-нибудь нормальный язык (или питон); узнай, что такое и как пользоваться: массивы, функции, списки, циклы; потом поставь себе задачу (написать то, что давно хотел написать) и пиши код, параллельно гугля, читая документацию и стекпереполнен. Так оно и быстрее и приятнее будет.
>>12276 >посоветуйте что делать с $рандомная_проблема в $рандомный_язык >забей на это добро, используй $совершенно_другая _платформа, лучшие собаководы одобряют, тысячи успешных внедрений платиновые советы in this thread
>>12305 А какой нужно дать совет, человеку не изучивший основы ассемблера, но начавший изучать CL?
Надо, наверное, обратить внимание на то, что S-выражения — это форма записи древовидных структур данных: https://en.wikipedia.org/wiki/S-expression Её, например, издревле используют для отладочной печати абстрактных синтаксических деревьев. Таким вот забавным образом любая лисп-программа являет собой запись её AST. Ну и SICP надо не забыть: http://newstar.rinet.ru/~goga/sicp/sicp.pdf
Зачем нужен Лисп в 2k18?
В ОП-посте забыли про SICP! (хотя это не учебник по LISP, согласна) Ну и конечно про Racket... А вещь очень годная. Зачем нам академический и весьма архаичный CL, когда есть няшный Racket. >>20941 Например для того же, для и чего и тыща_других_яп.жпг, же. Как практический пример могу привести вот это вот: https://www.opennet.ru/opennews/art.shtml?num=49795
>забыли про SICP! Давайте в 2021 замутим конфу в дискорде и будем совместно проходить эту игру. Больше ни для чего этот ваш лисп не нужен сегодня.
>>25629 Совсем забыли спросить няшечку.
>>25630 По поводу SICP? Я и предлагаю ставить Racket и проходить его в относительно приятной компании. В настоящее время это основное применение лиспа на мой взгляд.
>>20938 Не совсем верно, стоит наверно лучше оговориться, что "запись на АСТ" это скорее запись в прямой лямбда-нотации, хотя та же скима (scheme) имеет ряд примитивов, т.н. специальных выражений, которые не следуют принципу применения процедуры к аргументам, такие как определение define, cond, и if. Про "лисп", если вы имели ввиду Common Lisp я вообще молчу, там примитивов немногим больше 30, многие из которых созданны для эффективной генерации кода.
Что скажете по поводу Guile? Как оно?Кроме старичков из GNU на scheme ещё пишет? И где оно используется?
>>25695 >И где оно используется? Используется повсеместно, помимо огромного количества сфер применения и роста заинтересованных в проекте GNU увеличивается и число развиваемых на этом языке проектов. К примеру мне доставляет движок для создания визуальных новелл [tsukundere], особенно учитивая, что мы с автором сходимся во мнении по очень большому числу вопросов начиная от того как писать ПО, заканчивая тем как должно строиться государство. Вот тута можно посмотреть его [игры]. А ещё есть мой [перевод] на одну из его игр, но ведать из-за кривого английского при общении он подумал что я против включения файла перевода в основной состав проекта. К сожалению, веб до сих пор приходится писать на [кложе] так как только там нормальный repl для работы с сервером + есть нужные либки. Да, есть [artanis], но там всё монолит на монолите. Ну а для всего основного системного и прикладного гиль уже давно "готов", если под готовностью понимать "возможность сделать что-то", а не "возможность сделать что-то, работающее очень быстро", на это рассчитан CL какой-нибудь или другие диалекты скимы. >Кроме старичков из GNU на scheme ещё пишет? И не стоит думать что там в GNU одни старики всем управляют, есть GNU Assembly (если в кратце, организация для привлечения внимания к проблемам во внутреннем управлении проекта GNU (ака governance)), в котором есть [много] не равнодушных к будущему проекта. >Как оно? Я всем доволен. По крайней мере это адекватней позиции OpenBSD, второго для меня по интересу проекта, где всё должно писаться на сях. >Что скажете по поводу Guile? см. ответы на вопросы [tsukundere] https://gitlab.com/leoprikler/tsukundere [игры] https://leo-prikler.itch.io/ [перевод] https://liltechdude.itch.io/gensokyo-rainbow-incident-rus [кложе] https://clojure.org [artanis] https://www.gnu.org/software/artanis/ [много] https://gnu.tools/en/people/
>>25698 Спасибо за обьяснение! Из того что я знаю на GNU Guile написан пакетный менеджер GNU [Guix]. Сервис менеджер GNU [Shepherd] (ссылка на репозитойрий у что-то не работает). И GNU [Mcron]. И мне интересно кто и что пишет на lisp сейчас кроме GNU. > И не стоит думать что там в GNU одни старики всем управляют Это была дурацкая шутка. Да и кроме товарища Столлмана я никого не знаю. Для меня, как для Python поколения, этот ваш Scheme кажется языком с другой планеты. Я ещё не знаю что вводит в больший ступор (+ 1 2 3 78) или (cdr (cdr (cdr (car '(list))))). Надеюсь ты не против, что я стащил твою манеру постинга. [Guix] https://guix.gnu.org/ https://git.savannah.gnu.org/cgit/guix.git/ [Shepherd] https://www.gnu.org/software/shepherd/ [Mcron] https://www.gnu.org/software/mcron/ http://git.savannah.gnu.org/cgit/mcron.git
>>25699 >Спасибо за обьяснение! Всегда пожалуйста, я бы и сам рад задавать тут вопросы, только вот кроме Мицгола, Соуса, пары крокодилов и тебя, дорогой Стив, никого не видно, поэтому не знаю какие ответы вообще могу получить, да и никто это место особо не пиарит. К сожалению, зарубежное сообещество намного более зрелое и огромное количество людей вместо распыления (не всегда безосновательно) сил между нашим сообществом и забугорным выбирают именно последнее. Из возможных "ниш", где ещё может жить русский язык в разработке вижу только двачевский /pr, где очень унылый троллинг (и ещё я не могу получить туда доступ), и "университетская среда" (читай как среда самообразования), где люди просто ещё не успели понять терминологию, но уже на пути к этому. >Из того что я знаю на GNU Guile написан пакетный менеджер GNU >[Guix]. Сервис менеджер GNU [Shepherd] (ссылка на репозитойрий у что-то >не работает). И GNU [Mcron]. Я специально не стал перечислять какое либо ПО главным счётом потому, что не хотел создать предубеждения относительно сферы использования, так как буквально каждый язык сегодня перешёл в какую-то свою нишу и крепко там корнями сидит, из-за чего у случайного пассажира неявно может возникнуть ассоциативная связть "гиль – это вот про то и это", или, исходя из приведённых тобой примеров "гиль – это про всякие unix штуки, которыми я всё равно не пользуюсь". Может быть этот самый пассажир написал бы "guile imageboard" в его любимом поисковике и нашёл бы [kotatsu]. >И мне интересно кто и что пишет на lisp сейчас кроме GNU. Ну, именно lisp (clojure, common lisp, scheme), если не иметь ввиду Guile, а вообще всё "семейство", то много где, но кажется ты имел ввиду именно гиль. Если так, то, насколько известно, местечковые сообщества, энтузиасты и некие [высоко-производительные вычисления] в Германии. Но научная сфера она такая, деньги там откуда-то поступают, исследования ведуться, но что там да как мне лично не интересно. >Для меня, как для Python поколения, этот ваш Scheme кажется языком с >другой планеты. Во-первых, не стоит себя ассоциировать с каким-то python поколением, как и вообще с любым инструментом. Насколько мне известно, почти каждый, кто пишет на функциональный языках, изначально постигал тонкости именно императивных инструментов (не исключая и меня). И благо интенсивная практика помогла увидеть многие коренные проблемы в мейнстримных инструментах. Чего и каждому желаю – много практиковаться, и только тогда вы поймёте что нужно именно вам. И никогда не стоит слушать тех, кто знает лучше вас что вам нужно.
>>25701 Sorry, your message is too long. Message length: 9761, maximum allowed length: 8192 >Я ещё не знаю что вводит в больший ступор (+ 1 2 3 78) или (cdr (cdr >(cdr (car '(list))))). Мат. нотация меня до сих пор иногда пугает, но это не аргумент против изучения математики! Ну а так, чисто для формализма, знак ' означает, что следущая форма будет прочитана как данные, а не как, исходя из β-редукции лямбда исчисления, применения функции к операндам. Вообще, в чистом лямбда исчислении нет таких понятий, близких к программированию, как структуры данных, поэтому надо придумывать всякие вот такие цитирования ('(1 2 3) можно записать как (quote (1 2 3))), то есть ты говоришь интерпритатору: смотри, вот тут нужно воспринять (quote (1 2 3)) именно как (1 2 3), не применить функцию 1 к опреранду 2 и 3 (что даст ошибку, так как связать 1 с функцией лично у меня не получилось). Раз на то пошло, хочу так же высказать своё мнение, что обучающимся лучше не использовать синтаксический сахар в скиме (и вообще при изучении любых языков программирования), такой как: ⁃ (define (func arg1 arg2 arg3) (+ arg1 arg2 arg3)), а использовать (define func (lambda (arg1 arg2 arg3) (+ arg1 arg2 arg3))). Да, я не согласен с подходом в SICP, но могу понять авторов, так как объясняли они там первокурсникам тему + тогда не было той же самой википедии с поисковиками, хотя свой этот "баг" они вроде как обсудили в паре глав после введния понятия процедуры. ⁃ Вообще любые темы по типу того же знака ', который выбивается из модели (функция аргумент1 аргумент2 аргумент3) Ну а если серьёзно, то если в языке можно сделать что-то не идиоматично, то есть так, как разработчики языка не задумывали использование своего инструмента[1], то скорее всего люди так поступать и будут. Это я вообще всё к чему. К тому, что во всех закорючках есть смысл, не от дикого желания сделать именно `вот так' всё появилось и развивается. >Надеюсь ты не против, что я стащил твою манеру постинга. К счастью, она не моя, а такой тип общения есть обычная традиция общения по электронной почте, хотя когда можно написать пару предложений, делаю это в текстовом поле браузера. Если что-то длинное, по типу текущего текста, то можно использовать [Emacs], который [org] [версию текста] переводит в "txt" довольно просто. >[Shepherd] https://www.gnu.org/software/shepherd/ У шеферда кстати открывается репозиторий без проблем, просто нужно написать перед .git shepherd (как сделал я), или зайти на полный [список исходиков проекта GNU] и совершить "Ctrl-F shepherd". Как обычно, если остались вопросы и открытые моменты, рад на них ответить или что-то обсудить. [kotatsu] https://github.com/ECHibiki/Kotatsu-V [высоко-производительные вычисления] https://hpc.guix.info/ [Emacs] https://emacs.org [org] https://orgmode.org/ [версию текста] http://termbin.com/3hi1 [список исходиков проекта GNU] https://git.savannah.gnu.org/cgit/ Footnotes ───────── [1] Например как я использовал в питоне словарь с ключами в виде цифр от 1 до 32 для работы с алфавитом на первом курсе. Люблю приводить этот пример как показатель того, что (почти) никто, кого вы считаете умным, не рождался со звездой во лбу.
Опишите свой опыт проганья на лиспоподобных языках. Моя любовь к Лиспу зародилась 2 года назад, когда решил познать неизведанные просторы этого прекрасного языка. Попробовал несколько диалектов, и пока что моим любимчиком является Racket.