ОО шикарно. Короче, ботаю питон... Но дико угорел по метапрограммированию и лиспу.
Какие у него преимущества по сравнению с питоном(точнее у каких диалектов? Sheme, CL, Clojure) и в каких сферах диалекты лиспа до сих пор остаются актуальны и останутся? Как лисп работает с многопоточностью? Насколько он быстр? Насколько у него большое и активное комьюнити (за пределами СНГ)?
Первым дело я выбираю язык для аутирования, т.е для себя любимого. Мне интересны нейроночки и работа с сокетами. Стоит останавливаться на старичке, или лучше сразу обратить взор к Эрлангу или Скале
>>1140969 >Какие у него преимущества по сравнению с питоном(точнее у каких диалектов? Sheme, CL, Clojure) и в каких сферах диалекты лиспа до сих пор остаются актуальны и останутся? Гомоиконность, макросы. Можешь быстро свой компилируемый питон а лиспе написать.
>Как лисп работает с многопоточностью? Так же как и многие другие языки - треды.
>Насколько он быстр? SBCL немногим медленнее СИ.
>Насколько у него большое и активное комьюнити (за пределами СНГ)? Вялое.
не хочу, меня тошнит от его комьюнити, от стерильности его синтаксиса. Я его в джанго кмс юзаю и для написания всяких грабберов и скриптов. чисто макакой
мне нужен язык для себя, и sheme с CL мне приглянулись хотя бы по синтаксису, мне понравились скобочки, а это уже показатель.
Так все же, в чем сейчас активно используют тот же CL? Может есть какие то крупные проекты, хотя бы просто поддерживающие лисп?
>>1140969 >точнее у каких диалектов? Надо пилить этот вопрос в шапку, буквально каждый анон спрашивает про ДИАЛЕКТЫ. Оп, ты что думаешь?
>в каких сферах Clojure - в основном бэкенды со всякой биг датой и машин лернингом, плюс кложурскрипт для больших SPA. Scheme (Racket) - в основном обучение и рисерч. CL - не могу сказать, по-моему в основном олдскульные лисперы пилят на нем свои стартапы.
>Как лисп работает с многопоточностью? Нет никакого лиспа, есть си-образные языки (кресты, джава, раст), лиспообразные языки (CL, clojure, scheme), ml-образные языки (haskell, ocaml, reasonml). Про кл тебе ответили. У схемы в дополнение к этому есть континуэйшены, на которых можно запилить интересные конкуррентные модели (луркай "call/cc"). Кложа изначально проектировалась с расчетом на многопоточность и конкуррентность, поэтому там все по умолчанию иммутабельно, из коробки есть несколько lock-free ссылочных типов для разных видов конкуррентного обновления данных (compare-and-swap, STM и легковесные акторы), плюс из коробки есть поддержка асинхронного кода (core.async), плюс куча либ и оберток для параллельных вычислений.
>Насколько он быстр? SBCL оче быстр. У схемы есть компиляторы в си, которые тоже вроде как очень быстрые (я не проверял). Кложа на жвм, поэтому потяжеловеснее и помедленнее (но быстрее питона; считай, между питоном и джавой).
>Насколько у него большое и активное комьюнити (за пределами СНГ)? У кложи лучшее комьюнити их всех, что я встречал (ну и они каждый год проводят опросы, там стабильно новички отмечают комьюнити как один из главных плюсов языка). Куча крутых перцев, очень высокий средний уровень, но при этом нет илитизма, если ты не конченый уебок или пхпшник - тебе обязательно помогут. У CL комьюнити довольно небольшое и infamous тем, что в основном состоит из злобных токсичных олдскульных хацкиров (могут и обоссать). У схемки очень хорошая документация, но какого-то комьюнити как такового за пределами академии вроде и нет.
>Мне интересны нейроночки и работа с сокетами >работа с сокетами Аутизм интенсифайс, лол. Если тебе хочется просто потыкать лишпы - бери scheme (конкретно - plt racket). Если тебе хочется конструктор, из которого можно навелосипедить что-то свое и необычное - бери CL. Если тебе хочется в продакшн, обработку данных и блидинг эйдж идеи - бери кложу.
Алсо, я и хотел запилить общий лиспотред для таких вот вопросов ("если хочется это - идите сюда, если то - идите туда"), но оп итт треда уже запилил кл-тред, а пилить третий лишпотред на нулевой как-то не комильфо. Ладно, похуй, подождем переката.
>>1141154 >Так все же, в чем сейчас активно используют тот же CL? В том, где необходимо клепать DSL/eDSL.
>Может есть какие то крупные проекты, хотя бы просто поддерживающие лисп? StumpWM. Поделки на лиспе в основном используются в закрытых проектах во многих компаниях.
>>1141422 читал мнение что в веб 3.0 благодаря "изменяемый синтаксису" и гомоиконности и макроса, Лисп восстанет аки Феникс из пепла, и хоронить его рано
>>1141430 >восстанет >хоронить его рано Эт кто его там хоронить собрался? Общелисп жив и умирать вовсе не собирается. Даже наоборот, за последние лет 5 можно отметить нарастающую активность в сообществе.
>>1141606 >>1141422 >>1141208 что то я не въехал... SBCL - имеет в корне отличный от CL синтаксис? Потому что я запутался с этими лисповскими синтаксисами и под-синтаксисами...
Как его учить? Сначала вкатываться в CL, а после читать документацию по SBCL? Или есть сразу книга?
>>1141617 >что то я не въехал... SBCL - имеет в корне отличный от CL синтаксис? Эм, нет. SBCL - одна из основных реализаций common lisp'а, никаких под- или надязыков там нет. >Как его учить? Ставь portacle (это настроенный и готовый к использованию emacs с sbcl в комплекте), открывай книгу да учи.
>>1141617 Насчет совместимости тоже можешь не беспокоиться: если не использовал специфичных для реализации расширений, в чем надобности в общем случае возникать не должно, то код везде будет одинаково работать.
>>1141666 Ну я бы посоветовал pcl как введение, после чего или даже параллельно полистать cl-cookbook для знакомства с некоторыми библиотеками, де-факто ставшими стандартными, и onlisp для познания lisp-way'а. Насчет ANSI CL ничего сказать не могу, не читал.
Алсо, из того факта, что ты не уловил мессадж моего поста, я делаю вывод, что ты не слишком-то знаком с CL, а потому и разговаривать мне с тобой не о чем.
>>1142069 Дурачок. Вся индустрия держится на стандартах, не важно на сколько он монстр, или устаревший. Без стандартов всегда получается зоопарк хипстерского говна.
>>1142312 Перед тем, как заходить в этот тред, надо включать мозг. Те, кто этого не делают, будут посланы нахуй быстрее, чем они успеют сказать "не понял".
>>1142758 >Orly? Практически - да. >один макрос чтения >одно опциональное поле у defpackage Про первый я забыл, а про второе даже и не знал - настолько они нужны. Остальное покрывается переносимыми библиотеками и в рабочем коде без действительной на то необхоимости непосредственно использоваться не должно. В общем, не считаю, что этим стоило лишний раз путать новичка.
>>1143261 >метапрограммированием всё очень плохо. Зато можно весело поебаться с монадками и другими алгебраическими абстракциями, вместо грустной ебли с macroexpand-1.
При попытке скомпилировать программу показывает Error Error is 2 level deep. Will try reset the I0 streams by calling stream cold init or RESET и вылетает "прекращена работа sbcl.exe" после чего редактор становится кирпичом
>>1144024 Абсолютно любую, хоть "hello world"? один хрен. После попытки провести компиляцию через С-с С-с, редактор начинает колбасить, выдаёт ошибку и через секунд 10 вылетает "прекращена работа sbcl"
" Will try reset the I0 streams by calling stream cold init or RESET" это тоже не работает, лишь перезапуск редактора
нагуглил что это проблема окошек, но почему, не понятно. Попытаюсь поставить отдельно Emacs и Slime
>>1144201 Покажи саму ошибку. Она в верхушке стектрейса. >У меня бы элементарно среда не открылась на 32х Ну мало ли, вдруг емакс 32хбитный в поставке.
>>1144241 А, лол. Я понял. Ты нажимаешь C-c C-c не в буфере с кодом, а в репле, так? Там эта комбинация привязана к slime-interupt, который прерывает текущий поток и выполняет в нем break http://www.lispworks.com/documentation/HyperSpec/Body/f_break.htm Должно всплывать как у меня, но что-то идет не так.
Анон, помоги пожалуйста с порядком вычисление в Лиспе:
Упражнение 1.6. Лиза П. Хакер не понимает, почему if должна быть особой формой. «Почему нельзя просто определить ее как обычную процедуру с помощью cond?» -спрашивает она. Лизина подруга Ева Лу Атор утверждает, что, разумеется, можно, и определяет новую версию if: (define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else-clause))) Ева показывает Лизе новую программу: (new-if (= 2 3) 0 5) 5 (new-if (= 1 1) 0 5) 0 Обрадованная Лиза переписывает через new-if программу вычисления квадратного корня: (define (sqrt-iter guess x) (new-if (good-enough? guess x) guess (sqrt-iter (improve guess x) x))) Что получится, когда Лиза попытается использовать эту процедуру для вычисления квадратных корней? Объясните.
Насколько я понял порядок вычисления при if будет такой: https://pastebin.com/qUW4Pizi А при new-if как он будет выглядеть? До пункта 14 дойдет, а дальше как? Я знаю что дальше он зависнет в результате рекурсии (гуглил), но как это будет выглядеть?
>>1145610 >Что получится, когда Лиза попытается использовать эту процедуру для вычисления квадратных корней? Объясните. Stack overflow из-за аппликативного порядка вычислений.
>>1146524 Во-первых, оно не мое. Во-вторых, оно как раз корректное, а ты просто выучил новый для себя термин и лепишь его куда попало - по-крайней мере, так это выглядит со стороны.
>>1146545 > оно как раз корректное Нет. Хотя бы потому, что там хвостовая рекурсия. >https://www.gnu.org/software/guile/manual/html_node/Stack-Overflow.html Ну да, в этом обосрался. Почему-то думал, что стандарт схемы, как языка с поддержкой продолжений, обязывает реализацию не только оптимизировать хвостовые вызовы, но и переводить код к CPS-виду. Оказалось, так делают только некоторые реализации.
>>1154912 Хорошая штучка. Не слушай никого, кто пиздит про hy плохо. Код транслируется в python практически идеально. Hy - это все возможности питона плюс лисповые макросы.
Лиспач, смотри, что я тебе принёс: https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp > However, Naughty Dog has resumed using Lisp for scripting on PlayStation 3 games including The Last of Us. THE LAST OF US СКРИПТУЕТСЯ ЛИСПОМ
>>1158638 Немного не въезжаю, что именно тебе непонятно. gensym просто создает уникальный символ. А дальше на месте вызова твоего макроса будет код, который внутри `(...). Убери макрос, напиши просто руками этот код. Лямбда внутри лет. Ну?
Ага, вроде понял. Меня сбивало то что там как будто два раза подряд let, мне казалось что при каждом обращении к функции второй let будет сбрасывать переменные в nil. Сейчас я понял что после того как макрос вызовут и лямбду сохранят, никакого let с пятой строчки уже не будет, останется только лямбда на 7-11.
Хеллоу, лисперы! Тут раньше был тред с факом по схеме. Что-то его не видно. Так вот мне нужна среда для решения задачек из SICP'а. До этого писал на С в связке VIM + gcc в консольке. Я так понял, что в схеме мне нужен интерпретатор, а не компилятор? Кароче, где мне писать свои хеллоуворды, не обременяясь тяжеловесными IDE?
>>1159671 > Я так понял, что в схеме мне нужен интерпретатор, а не компилятор? Тебе будет нужен, как минимум, REPL.
> P.S. Emacs ковырять ой как не охота. А придётся. Если есть опыт с vim, может зайти Spacemacs, мне вот после восьми лет на виме заебись зашло, переехал и ни о чём не жалею. Как вариант можно взять DrRacket и вот это https://docs.racket-lang.org/sicp-manual/index.html, но это такое.
>>1159726 Накатил спэйсмакс. Пока нравиться, за исключением того, что он какой-то дёрганный. Всё время что-то происходит, мигает, свистит, пердит и т.п. Хотя к этому можно привыкнуть. Вим-лайк шорткаты действительно заработали сразу это хорошо. То, что он при загрузке пакетов постоянно руинил парочку, и скачал только с третьего раза -- не хорошо. Алсо, в который раз убеждаюсь насколько же годная у Арчеводов вики(сам на демьяне). По информативности и дружелюбию уделывает гайд по спэйсмаксу с оф. сайта.
>>1160390 >>1160419 DrRacket вроде тоже ничего так, но теперь уже только как запасной вариант рассматривать. mit-scheme в терминале это конечно тру. Для познания дзена самое то. Что до сублайма, то разбираться в ещё одном редакторе только ради его аддонов это как-то не очень. Тем более, выше писали, что у него ещё и совместимость с ними хромает.
Задача: прочитать беззнаковое целое число из стандартного потока ввода и в каждом байте числа инвертировать значения двух старших битов каждой тетрады, если младший бит тетрады единичный. Результат вывести в стандартный поток вывода.
[CODE](defun change-byte (b) \t(let ((h (logand b #16RF0)) \t\t(l (logand b #16R0F))) \t\t(unless (zerop (logand h #16R10)) (setf h (logxor h #16RC0))) \t\t(unless (zerop (logand l #16R1)) (setf l (logxor h #16R0C))) \t\t(logior h l)))
(defvar z 0) (setf z (read)) (dotimes (i (ceiling (integer-length z) 8) z) \t(setf z \t\t(dpb (change-byte (ldb (byte 8 ( i 8)) z)) \t\t\t(byte 8 ( i 8)) z)))) (print z) [/CODE]
Поехала верстка. Как сделать так, чтобы данные из стандартного ввода записывались в переменную и обрабатывались при помощи функции, и дальше выводились в стандартный вывод?
>>1160990 >То, что он при загрузке пакетов постоянно руинил парочку, и скачал только с третьего раза -- не хорошо. Бывает, melpa ложится полежать, спейсмаксу от этого становится худо.
>>1161173 Читаешь с помощью того же read, обрабатываешь и выводишь. Код выше тебе для примера. Кстати, имей в виду, что использовать read для ввода небезопасно, потому что он читает парсером лиспа со всеми его особенностями. Например, ты можешь выполнить произвольный код, подав что-то вроде #.(progn (print 'AZAZAZAZ) (quit))
Мне нравится Chicken, но официально ничего кроме вима и емакса не поддерживается, а ими обмазываться я не хочу. И Racket мне не по душе. Есть ли современный редактор для схемки?
>>1008826 (OP) Дочитал SICP до главы про недетерминистские вычисления, ну которые через особую форму amb упражнение 4.34, которое перед этой главой, заебался делать. Эта херь вообще где-нибудь используется? Аналоги этого механизма в языках не из LISP-семейства есть? А то что-то оно совсем крышесносно выглядит (пока, по крайней мере, не дошёл до упражнений).
CommonLisp живой? Как то не видно особого развития... точнее хоть какого то. Питон раз в месяц патчит версии, а тут с 2005 похоже тишина и только мёртвые с косами стоят
Есть ссылки на свежие проекты и желательно основные сайты забугорного комьюнити? буду рад
>>1196314 >CommonLisp живой? Да. >Как то не видно особого развития... Ты где-то не там смотришь. >Питон раз в месяц патчит версиих, а тут с 2005 похоже тишина сбцл тоже раз в месяц обновляется, коммерческие - примерно раз в полгода. >Есть ссылки на свежие проекты и желательно основные сайты забугорного комьюнити? буду рад На реддите смотри. >И в чем отличия, плюсы и минусы Clojure перед CL? Если кратко, первый - язык для менее болезненного программирования на яве, второй - язык общего назначения
Ситуация такая, коллега на работе настоятельно рекомендует прочитать sicp. Постоянно говорит про какое-то просветление, самоподобие, код как данные, упомянал y-комбинатор, и вообще говорит, что если не знаешь лиспа - не программист.
Собственно, не пиздит ли он? Есть ли смысл читать если ты программист другого языка? Я начал читать, пока не почувствовал ничего.
>>1198078 Ради расширения кругозора читать конечно стоит. Книжка, если что, не про какой-то конкретный язык, а про программирование в целом. Плюс она хорошо все раскладывает в голове по полочкам, ну и собственный язык в репах на гитхабе зачастую производит положительное впечатление.
Кроме того, познакомиться с ней стоит хотя бы для того, чтобы не выставлять себя посмешищем, как вот >>1198121-анон.
>>1198078 о тролинге говорят дегенераты-формошлёпы неспособные осилить архитектуру программ в своей голове, а лишь перепейсовать спизженные куски кода.
Как минимум ознакомление с sicp обязательно каждому уважающему себя программисту, если ты конечно не макака
Посоны, поясните, какая разница между direct-слотами и effective? Вот, допустим, хочу я к определниям слотов добавить метаинформации. В каких случаях достаточно расширить direct-слоты, а в каких — и effective?
>>1217614 Ну, сам я этим не пользовался и даже не представляю, зачем такие извращения тебе могли понадобиться, поэтому могу только посоветовать читать руководство.
Скажи мне, красавица, как вообще типы данных правильно конвертировать в тайпед ракете?
От чего такие трудности появляются? Почему нет стандартного набора функций конвертеров? В обычном ЯП я могу просто привести один числовой тип к другому.
>>1217646 > Скажи мне, красавица, как вообще типы данных правильно конвертировать в тайпед ракете? Понятия не имею, я просто мимо проходил даже sicp не до конца дорешал
> От чего такие трудности появляются? Тому що строгая типизация.
>>1217646 >В обычном ЯП я могу просто привести один числовой тип к другому. Так тут тоже можешь, там все есть но тут-то тебе нужно по модулю число брать, если я правильно понял проблему
>>1218829 Есть практические примеры, но именно упражений на самостоятельное решение нет. Кажется, в land of lisp были. Кстати, просто упражнения без привязки к языку можешь найти там https://projecteuler.net/
По DrRacket самый годный вариант - это How to Design Programs? Вроде больше ничего годного не нашёл, кроме нескольких видосов на ютубе, которые уже разобрал.
>>1220546 Как можешь видеть, список составлялся недавно. Так что, если что-то уже не развивающееся и было добавлено, то какой-то интерес всё ещё представляет.
>>1222728 >синтаксический сахарок для хешей >СИЛА жвм >и вообще хиика был прав Мощная аргументация. Все, бросаю общелисп и бегу записываться в ряды восторженных кложе-фанатов.
>> Portacle :: https://portacle.github.io/ У меня из-за этого портакла память утекла, сука, 8 гигов за 5 минут. В итоге на сервак домашний навернул vim и sbcl.
>>1226566 >Думаю отправить ли правку этому чуваку или нет Хули тут думать? Опенсрус он на то и опенсрус, чтобы коллективно фиксить проблемы. Или хиика дохуя?
решаю задачки из книги Ansi Common Lisp в portacle (format t "~A plus ~A equals ~A. ~%" 2 3 (+ 2 3)) ошибка wrong type argument stringp, t поясните, аноны. а в чистом sbcl пашет, но это говно не работает с копированием. Что не так с портаклом?
>>1228474 Перевод строки >>1226978 Винда что ли? Ты откуда копируешь? Из пдф? Вангую, у тебя там юникодные кавычки вместо нормальных и не совпадают кодировки.
Я тут глянул CL и понял что он просто идеален для создания полиморфной малвари и макросов...
Так почему он не выстрелил и вместо него используют python и delphi, при том что в случаи с питоном приходится тащить с собой интерпретатор, что уж никак не сравнивается с компилируемым CL
>>1229673 >в sbcl да, сейчас в блокноте уже печатаю. Такое себе удобство. >в emacs я печатал и исполнял А буфер был в режиме емакслиспа, да? Судя по ошибке, именно так и было. В елипсе у format'а первым аргументом идет строка, вот оно тебе и ругалось, что t - нихуя не строка. После старта портакла загляни в C-x b Messages и C-x b inferior-lisp, видимо, там что-то не так.
>>1229675 Я думаю, рантайм общелиспа можно неплохо утрясти. Начать хотя бы с удаления документации и отладочной информации, а закончить удалением неиспользуемых функций и пакетов. Кажется, коммерческий allegrocl именно так и делает.
>>1231142 >чему там столько весить? У тебя в рантайме компилятор, всякого рода метаинформация ко всем объектам: отладочная, документация, местонахождение в исходном коде, служебная информация (например, типы функций, переменных, слотов и т.д.). Но это у sbcl рантайм жирноватый (сохраненный образ занимает ~30мб), у ccl - раза в два меньше, у ecl - вообще крошечный, но он заметно медленнее остальных и умеет компилировать только через сишку или интерпретировать. >а как же хвальба за возможность накатать интерпретатор питона на лиспе в 15 кб В 15кб чего? Откуда ты это вообще взял? Скорее всего, имелось в виду, что на лиспе легче реализовать, потому что у тебя уже есть фичастый рантайм и компилятор, который можно заточить под свои нужды.
>>1231802 Эм, да в лиспе, можно сказать, нет такого понятия сборок, как нет и отдельной стадии компиляции, ибо код пишется сразу на работающий процесс. Как в смолтолке. Ты можешь подкрутить флажки, выставить дебаг 0, но это экономия на спичках, размер образа уменьшится едва ли на процент. Вот allegrocl, говорят, умеет подчищать свой рантайм основательно. Так, что в образе остается только необходимое.
Что есть прод сборка и спиды в CL, за отладку я понял. Я тут подумываю его юзать для своих подделок для души, но чёт меня отпугнули заявления анона выше за гигабайты мусора
>>1231986 Причем тут сбощик мусора? >>1231998 >Ну дебаг+спид, ты же сам про это писал. А, ты об этом. Я уже говорил, на размере это практически не сказывается.
>>1232016 Не гигабайты, а всего +30мб (у сбцл), и не мусора, а в основном инструментария. Не так уж и много для такого рантайма, gcc с gperf, gdb и glibc занимают не меньше. Но если для тебя такой излишек непозволителен, возьми другую реализацию.
>>1232052 >размер бинарника должен быть минимальный Сбцл поддерживает сжатие образов, ужимает емнип до ~8мб. Вообще, можешь попробовать поудалять лишние пакеты из образа, документацию и т.п. Это тебе строк в 20-40 кода обойдется, пару мегабайт точно освободишь
https://bitbucket.org/mihailp/tankfeeder/src/default/ Кто-нибудь пробовал использовать этот наркоманский пиколисп? Каждый раз, как натыкаюсь на код на нем, возникает противоречивое впечатление. С одной стороны, поражает, как код получается таким лаконичным, но с другой, ЧТО ЭТО БЛЯДЬ ЗА НАРКОМАНИЯ
>>1232534 >Там, говорят, даже лямбд нормальных нет. Я слышал, там и лексических переменных нет, прям как в старом, добром лиспе. Но вообще, язычок хоть и страшненький, мне кажется, он идеален для хуяк-хуяк скриптов. >Бери ракетку и не выёбывайся. Как-то пробовал писать на её frtime, создалось впечатление, что оно пилилось вовсе не для практического использования, а показать МЫ ТОЖ ТАК УМЕЕМ, ЧЕ НАМ ЭТИ ХАСКЕЛИ. Уж больно все криво, сыро, несподручно было. Ну и тормозная она жутко. И ведь странно, схема же такой простой язык, почему для неё не могут запилить нормальную реализацию?
>Ну и тормозная она жутко. И ведь странно, схема же такой простой язык, почему для неё не могут запилить нормальную реализацию? В смысле тормознутая? С какими опциями компилировал?
>>1232559 >почему для неё не могут запилить нормальную реализацию? Есть же компилятор схемы в си.
>он идеален для хуяк-хуяк скриптов. Про пайтон слышал?
>вовсе не для практического использования Для практического использования на сегодня годится только один лиспообразный язык не считая жс и руби, и мы все знаем, как он называется.
>>1233142 Да в том и дело, что планы-то (и баззворды) наполеоновские, а как посмотришь, что реально есть, - какое-то говно, которым перекидываются полтора застрявших в 90-ых аутиста. Хуй знает корочи.
>>1233145 >Так, и в чем его плюсы перед теми же плюсами Ох, лол, и это я еще авторов реда аутистами называю.
>>1233145 Лол, какой вообще может быть резон использовать кресты? >>1233157 Вот уж не знаю, в каком оно сейчас действительно состоянии, но судя по отчетам они там не топчутся на месте. Собственно, жду следующего релиза, к нему собирались много чего допилить, будет уже более-менее пригодным для использования.
>>1233142 >https://www.red-lang.org >>1233157 >Да в том и дело, что планы-то (и баззворды) наполеоновские, а как посмотришь, что реально есть, - какое-то говно, которым перекидываются полтора застрявших в 90-ых аутиста. Хуй знает корочи. >>1233278 >но судя по отчетам они там не топчутся на месте. Собственно, жду следующего релиза, к нему собирались много чего допилить, будет уже более-менее пригодным для использования
Так, что это за зверь такой вообще? Я вот сайт их полистал, и мягко говоря ничего не понял. Ну, заявления очень громкие да. Хеллов верд вроде есть.
А в чем собственно специфика их языка, не в плане целей, а в плане вот синтаксиса, семантики, библиотек, модулей? Чем оно от лиспа отличается кроме формы скобочек?
Поясните за лит-ру по Racket, щас читаю How to Design Programs, далее планировал (закончить бы ещё для начала) её продолжения (HtDP Languages, HtDP Teachpacks), после - SICP (если вообще доживу до этого момента). Собственно что хочу спросить, есть ли ещё что-то годное по Racket? И, ваше мнение по поводу HtDP и SICP? HtDP точно прочитаю, а вот пару слов насчёт SICP хотел бы услышать, всё же даже отдельный тред в её честь есть.
SICP and HtDP have different audiences. HtDP was designed for people who know nothing about computer programming, particularly students who would not be pursuing a degree in computer science. SICP was used in a first CS course. Because they both use Scheme, they're complimentary. If you are starting out trying programming for the first time, then HtDP will certainly be a better choice. When you finish it, you should proceed to read SICP, followed by Concepts, Techniques, and Models of Computer Programming.
>>1233278 >но судя по отчетам они там не топчутся на месте Хуй знает, судя по отчетам они там сидят на виндуз 98 и пилят динамикодрисню со встроенной гуй-библиотекой для винды. Ну такое.
>>1233351 >Я вот сайт их полистал, и мягко говоря ничего не понял. >Ну, заявления очень громкие да. Вот у меня ровно то же ощущение. И от ребола было такое же.
>>1233715 >виндуз 98 На десяточке же. >со встроенной гуй-библиотекой для винды Уже давно для мака запилили же, а в апреле демкой для ведроида хвастались. Гтк-бекенд пока, видимо, некому пилить.
Так, я тут наверно один такой, это всё тот же анон с vim и sbcl. Комбо мне показалась удобной, поэтому использую её. решил сделать функцию для поиска второго слова в строке. (defun second-word (str) \t(let ((p1 (+ (position #\ str) 1))) \t\t(subseq str p1 (position #\ str :start p1))))
sbcl ругается на sharp slash. Я так понимаю я должен был писать #\str ?
#lang racket (define l (list 3 4 5 6 #true #i23.5 "")) (pair? l) == (list? l) == (cons? l)? Судя по всему, да, но я нью-фаг в лиспе, поэтому хочу чтобы вы подтвердили правильность
>>1237072 >И я могу всегда вместо cons использовать list в упражнениях и быту, чтобы не ебать мозги, ибо до list по HtDP ещё не дошёл? Да. >>1237076 >(pair? l) == (list? l) == (cons? l)? Нет. pair? = cons? ≠ list? (list? '()) => #t, но (cons? '()) => #f (pair? (cons 1 1)) => #t, но (list? (cons 1 1)) => #f
Почему 7ая версия DrRacket сбрасывает настройки? В плане язык; тичпаки; Scheme-мод был, стал Text; также в одном месте по шрифту сбрасывает, не буду вдаваться в подробности в каких именно настройках шрифта Хелп аноны
>>1241274 >я имел ввиду, в основном для чего применяется Для создания DSL Для ембедед программ. Для игр. Для программирования плисов. Для веба. Для ентерпрайза(заместо джавы) Основная фишка лиспа, это богатые возможности метапрограммирования. Вот везде где нужно метапрограммирование.
>>1140925 (OP) Какой лисп самый топ ? Не для коммерции а для себя Типа clisp или sbcl ? Может есть еще что-то Хочу писать свои интерпритаторы, хуяторы, мб консольные редакторы Опять-же, только для себя. Не хочу коммерции
Предположим, я до конца осилил SICP на самом деле нет. Теперь я хочу изучить лисповские макросы, потому что слышал звон, что это самая крутая фича лиспов, но в SICP про макросы ничего нет. По какой литературе их лучше изучать? PCL?
>>1244412 Зависит от того, какой язык ты хочешь изучать, очевидно. Если тебе интересны только сами макросы, то лучше читай доки к рэкету, так как там их больше разных видов скажем так.
>>1244419 > какой язык ты хочешь изучать Хочу всё попробовать, но писать в итоге буду, скорее всего, на CL и/или Clojure. Документация, скорее всего, неоч зайдёт, я хочу, чтобы мне, как дебилу, разжевали, и заставили десяток нудных упражнений сделать, ну то есть прямо как в сикпе.
>>1244891 Читай (бесплатно доступную онлайн) clojure for the brave and true автор тебя будет уговаривать установить имакс, не поддавайся @ решай упражнения с 4clojure. Для первого знакомства можешь maria.cloud навернуть, но там прям совсем для нубов, если ты сикп осилил, то тебе скучно будет. Алсо, на exercism.io есть clojure-трек, там тоже упражнения и все в одном - пожалуй, даже с этого лучше начать.
А вообще, тут кложетред с шапкой есть, глянь ее.
PCL тоже можешь навернуть (как минимум для ознакомления), но учти, что по современным меркам там много сомнительных решений.
О, а еще чисто по макросам есть вот эта наркоманская штука: http://www.lisperati.com/casting.html - наверни, лол, еще захочешь. Вроде аффтар запилил и кложеверсию.
>>1244974 > автор тебя будет уговаривать установить имакс, не поддавайся Уже поздно, лол
Спасибо за советы!
> О, а еще чисто по макросам есть вот эта наркоманская штука: http://www.lisperati.com/casting.html - наверни, лол, еще захочешь. Выглядит упорото, обязательно посмотрю :з
>>1243130 Gambit-C + LambdaNative - схемка+кросплатформенный фреймворк для написания приложений, которые будут работать на любом утюге с OpenGL.
>>1244412 >Теперь я хочу изучить лисповские макросы, А хули их изучать-то? Синтаксическая абстракция настолько примитивная вещь, что всё понимается за пару вечеров неспешных экзерсайзов.
>>1250579 Устаревшая стандартная библиотека, много мутабельности, loop, оверюз макросов... Ну это такое, надо попробовать и сравнить, чтобы понять.
>>1255609 Для расширения сознания - скорее да. Для практики - скорее нет. В продакшен он смог, но это было давно олдфаги не помнят, ньюфаги не знают гугли AI Winter.
>>1255803 Ясновидцы вслед за телепатами ушли в отпуск, извиняйте. Последние пару лет у него ни с того ни с сего внезапно началась какая-то движуха, так что хуй его знает. Но в целом анон выше прав, есть же кложа.
>>1255832 ...хотя с другой стороны, кложа - это про иммутабельность, параллельность@асинхронность и data-driven design. У CL так-то совсем другая аудитория, там типа олдскульные бородатые хакеры пишут генераторы метапарадигм на дслях.
>>1255858 Ну, необязательно, еще нода\браузер. Да и грааль потихоньку допиливают, простенький бэкенд уже сейчас можно но ненужно скомпилить в нативный бинарник без всяких жвм.
>>1255673 >Устаревшая стандартная библиотека Код из учебников по сишке ты тоже назовешь сомнительным, ведь стандартная библитотека не нова? >много мутабельности Нет, не много. >loop Не как что-то плохое. К тому же, это часть языка, зачем про неё умалчивать? >оверюз макросов Использованы в меру, я считаю.
Примеры в книге нормальные. Просто ты кложурист и тебе не нравится cl.
>>1256537 >Код из учебников по сишке ты тоже назовешь сомнительным Разумеется. К&R - отличный учебник того, как не надо писать код.
>Нет, не много. Хэшмапы иммутабельные уже завезли?
>как что-то плохое. Плохое. А, кстати, еще вспомнил, что он там про анафорические макросы рассказывает и ни разу даже не упоминает, что это говно и на самом деле это просто пример так делать никогда не надо. Мне кажется вкатывальщику вместо целой главы про loop гораздо полезнее будет ознакомиться со стандартными фпшными функциями над коллекциями (и их реализацией).
>Использованы в меру, я считаю. А я, выходит, считаю по-другому.
>тебе не нравится cl. Нравится. Мне задали вопрос - я ответил, только и всего.
>>1256540 >на фронтенде Да не, ну сам посуди, какой смысл сегодня вкатывающемуся писать бэк на кл? Если нужно тупо сайтик развернуть, проще взять РоР, если нужно рест или считать-дергать что-то - кложу. КЛ хорош, если ты уже кл-хакир, ну или если тебе нужен нативный код и метагенераторы оперденей!
>>1256564 >А я, выходит, считаю по-другому. Да по-моему, ты никак не считаешь. Тебя спросили пример кода, а не твои ТАМ ВСЕ ПЛОХО И ВООБЩЕ ТАК ДЕЛАТЬ НЕ НУЖНО, А ВОТ ЗАТО У НАС ИММУТАБЕЛЬНЫЕ ХЕШМАПЫ. Нашел чем удивить, лол. Сейчас элементы ФП в каждую скриптопарашу тянут WAIT OH SHIIIIII
>>1257551 >Тебя спросили пример кода Меня спросили - я ответил.
>Сейчас элементы ФП в каждую скриптопарашу тянут Ну так в своем ответе я как раз и упомянул тот факт, что в кл элементы ФП вместо Ъ-ФП и иммутабельности по умолчанию. На что ты мне ответил, что тебя это устраивает. Мне-то не жалко, но self-consistency какая-то должна же быть.
Там такой нативный код, что лучше уж жабу через jvm. Они за овер 20 лет даже в SIMD видеть и использовать в map не научились, что уж говорить про cache-friendly memory manager и прочие новомодные хуитки, которые сейчас даже JS движки умеют.
>Сказал фанат hosted языка, лол. Во-первых, я фанат Спартака; во-вторых, при чем тут это? Я тебе про взаимоисключающие параграфы же написал.
Короче, забей. Я не знаю, зачем тебе хочется устраивать со мной срач. По-моему в этом нет необходимости.
>>1257876 Ну, тут можно конечно обсуждать (тем более в свете грааля, да и всяких реакт нейтивов тоже), но вот например если тебе нужен ffi или не дай боже какое-нибудь байтоебство, то жвм тут точно всосет. инб4: возьми раст \ ядро на си, обвязка на клжс с нодой
>>1258380 >А что в них такого плохого? Неявный ввод имен - ето плохонько. Вместо это лучше использовать либо явные локальные биндинги, либо один динамический (но все еще явно объявленный) биндинг.
>инструмент для повышения выразительности Хм, так в том и проблема, что они не повышают выразительность. Тоталли анрилейтед: вот this в жаваскрипте повышает выразительность, как ты считаешь?
>>1258407 >Неявный ввод имен - ето плохонько. Описанный в документации к такому макросу. По сути же получается локальный такой eDSL.
Получается, что CLOS - тоже плохенько?
>Вместо это лучше использовать либо явные локальные биндинги Так анафорические макросы как раз и придуманы, чтобы каждый раз не заниматься биндингом ручками, биндинг сам сбиндится к какому-то зарезервированному символу.
>this Семантика this/self/итд в ООП язычках и it/self/итд в амакросах различна и их сравнение вобщем-то не уместно.
>>1261341 Чтобы получить полноценный, стандартизированный язык с хорошей динамической средой, а не наколеночную надстройку над джавой, которая до недавнего времени плевалась жава-стектрейсом на любую ошибку.
>>1261341 Этот >>1261888 анон - местный кл-фанбой, который триггерится от любого упоминания кложи (на которой он, кстати, никогда не писал). Не строй представление о кл-коммьюнити на основе его постов.
>>1262736 Как-то не пробовал, мне перл привычнее, но недавно натыкался на такой проект https://github.com/bradleyjensen/shcl Вот уж не знаю, насколько он пригоден для использования, но выглядит интересно.
Почему в common lisp такие странные названия у функций по сравнению с той же clojure? make-array, vector-push, elt, setf, aref, evenp, oddp, make-hash-table, gethash, pushnew, rotatef, shiftf, progn, eql, equalp Так же наркоманский синтаксис у loop loop for x from 1 to 10 summing Ну и вишенька на торте: car, cdr, caar, cadr, cdar, cddr, caaar, caadr, caddr, cdaar, cdadr, cddar, cdddr, caddddr...
>>1265786 Потому что это старый язык из 80-ых (в сишке названия функций видел? Тогда так модно было), плюс CL - это продукт стандартизации многих несовместимых реализаций лиспов, поэтому там много компромисов. tl;dr: потому что стандартная библиотека там унылое говно мамонта
>>1265927 Перекатываются на кложу Немного страдают и потихоньку пытаются исправлять, ссылки выше были, но в целом привыкают, ибо это компенсируется другими достоинствами языка.
>>1265927 Так же, как и окамльщики - используют батарейки по вкусу. Благо, что язык позволяет перепрограммировать любую его часть. В рантайме. За то, собственно, и любим >>1266126
>>1265786 >Почему в common lisp такие странные названия у функций по сравнению с той же clojure? Как уже сказали, из-за того, что cl - результат слияния кучи лиспов. Архаичности нужно просто игнорировать, для этого не всегда даже нужно лезть в сторонние библиотеки. В стандартной библиотеке почти для всего есть более универсальная и современная замена. >Так же наркоманский синтаксис у loop >loop for x from 1 to 10 summing sum же. Не такой уж и наркоманский. Главный минус loop'a - он не расширяемый, в этом плане iter лучше. >car, cdr, caar, cadr, cdar, cddr, caaar, caadr, caddr, cdaar, cdadr, cddar, cdddr, caddddr... Нужны (да и то редко) только первые два, для остального есть (defstruct (foo (:type list)) ...)
Не могу осилить practical common lisp. Мало того, что она на английском и я половину написанного не понимаю, так ещё куча информации, которую тяжело читать. Есть какие нибудь ресурсы для даунов и аутистов? Желательно с примерами кода, чтобы я в емакс все копировал и запускал.
>>1267322 Не знаю, погугли. У меня на винте лежит pcl.pdf на русском. а вообще, >Есть какие нибудь ресурсы для даунов и аутистов? http://maria.cloud/ же
>>1272581 Не от переизбытка помощников ему пришлось с плюсовиком партнериться. Да и к тому же, у него ещё в планах гтк с вебкитом, на который точно рук не хватает.
>>1278363 Очевидная кложа очевидна. Хотя на самом деле зависит от того, что за данные и что ты с ними делать будешь, может тебе вообще лучше питон взять?
>>1278376 >Какие данные. Всякая статистика старкрафта. Мне нужно будет гонять ее из одного формата в другой. Позже буду писать простого(по меркам лучших игроков, но не в плане кода) бота для игры. В будущем планирую прикрутить машинное обучение, но это не точно. >Питон Питон не хочу. И почему кложа а не коммон лисп?
>>1278381 >И почему кложа а не коммон лисп? Ну она питчсейлзится как раз как язык для ОБРАБОТКИ ДАННЫХ, поэтому довольно очевидно. Плюс куча жвм либ, тебе не придется руками писать условный парсер иксемеля, лол. Ну и с машинным обучением там норм но хуже, чем в питоне.
Кл думаю побыстрее будет, но и писать на нем далеко не так приятно. Алсо, если у тебя это типа клиентское приложение, а не на сервере крутится, то вообще логично было бы что-то более легковесное взять (раст? даже окамл? раз питон не хочешь, то вангую что го тоже не хочешь)
>>1278396 >язык для ОБРАБОТКИ ДАННЫХ >довольно очевидно Окей, а в чем это проявляется? >парсер иксемеля В коммон лиспе думаю есть такое. >писать на кле далеко не так приятно Почему? >Алсо, если у тебя это типа клиентское приложение Не, данные я буду я обрабатывать на беке. Позже напишу удобный для себя клиент. >Легковесный. Я думаю это не про кложу как раз. >Раст, го. Низкоуровневый язык не для моей задачи.
>>1278499 >https://github.com/tokenrove/series/wiki Спасибо за ссылку, анон. В этой либе слишком мало функций для преобразования коллекций. Может ты знаешь еще какие нибудь либы, для работы с данными в CL? Просто хочется дать шанс коммон лиспу, но в кложа для моей задачи выглядит в разы вкуснее.
>>1278405 >Окей, а в чем это проявляется? Хорошая стандартная библиотека с хорошими иммутабельными структурами. Плюс все бест практисы языка заточены на описание предметной области просто данными, ну и все инструменты заточены под это же - мультиметоды, спек тот же, есть даже наркомания вроде https://github.com/nathanmarz/specterи йобы для считания в кластерах, но для твоей задачи думаю неактуально
>В коммон лиспе думаю есть такое. Ну я утрирую, лол, поэтому и "условная".
>Почему? Комьюнити, тулинг, стандартная библиотека, императивность и т.п.
>Я думаю это не про кложу как раз. Да, я как раз и имел в виду, что если клиент, то, быть может, лучше раст вместо кложи\кл. Но раз на беке, то похуй.
>>1278551 >В этой либе слишком мало функций для преобразования коллекций. Всего там хватает, я сам ею пользуюсь. Просто апи немного непривычный >Может ты знаешь еще какие нибудь либы, для работы с данными в CL? Да полно, стоит только пошерстить quickdocs, cliki, но своего оптимизатора, как в series, они не имеют. >но в кложа для моей задачи выглядит в разы вкуснее. От десяти крат проседания по скорости - великовата цена за косметику.
>>1278718 >Всего там хватает, я сам ею пользуюсь. Просто апи немного непривычный Хорошо, попробую разобраться с апи. >От десяти крат проседания по скорости - великовата цена за косметику. Скорость разработки для меня важнее.
>>1278810 Че то совсем не заходит. Я думал сяду почитать доки, и сразу начну писать на лиспе, но че то сложно. Поэтому я быстро пробежался по practical common lisp книжке, но все равно не понимаю что и как. Что можешь посоветовать почитать, чтобы с языком освоиться?
>>1280283 http://maria.cloud/ шутка Можешь еще land of lisp глянуть, если любишь смехучки, или a gentle introduction to symbolic comptutation, если совсем для нубов, но тащем-то pcl имхо лучше. А что именно непонятно-то?
>>1280306 >тащем-то pcl имхо лучше Я его бегло, но полностью просмотрел. >А что именно непонятно-то? Работа с пакетами, со стандартными коллекциями. Макросы - я глянул две главы про них в pcl. Основную идею понял, но так и не смог понять, когда и какими символами экранировать s-выражения, чтобы они не выполнялись + не понял, как бороться с протеканием абстракций в макросах. Апи для работы с файлами - зашло плохо. А вот апи для работы с директориями вообще не зашло. С CLOS тоже не разобрался. Обработку ошибок оставил на потом, потому что и так много пробелов. Про работу с зависимостями вообще ни слова не было в pcl. Как то так. Где про все это можно разузнать?
>>1280795 Блядь, анон, ты вообще никакой информации не предоставил, не сказал, что ты делаешь и какая у тебя ошибка, и мы тут должны гадать, что там у тебя. Если ты "увеличил лимит памяти", то наверное это про память в куче.
>>1280785 >Работа с пакетами defpackage да in-package - вот и вся работа. Подробнее о пакетах можешь тут почитать: http://www.flownet.com/gat/packages.pdf >со стандартными коллекциями А что с ними-то непонятного? Вроде бы ничего принципиально отличающегося нет. >Где про все это можно разузнать? Все перечисленные тобою вопросы рассматриваются в cookbook. Ссылка в шапке.
Спасибо, анон. Я прочитал, но в этой ссылке, как и в pcl рассказывается про то, как символы в пакеты собираются. Но это не то, что мне нужно. Мне бы инфу про то, как с проектами работать, как зависимости ставить и как код по модулям организовывать, ни в твоей ссылке, ни в pcl этого нету. Я знаком с жс подходом. Там есть npm, + ключевые слова для импорта и экспорта. Что есть в лиспе?
>>1281616 >Мне бы инфу про то, как с проектами работать, как зависимости ставить и как код по модулям организовывать Для этого не пакеты, а asdf-системы. https://lispcookbook.github.io/cl-cookbook/systems.html Вот почитай. >Там есть npm Аналог npm/cpan в лиспе - quicklisp.
Нужен человек, который сделает 4 задачи на openedu c моего аккаунта по курсу функциональное программирование базовый курс. Задания не сложные, но времени и желания))) нет а для зачета надо за деньги писать сюда @atom1_1
>>1282501 Бля, хуею с дебилов, которые идут ВАЙТИ и сливаются, когда ОКАЗЫВАЕТСЯ_НАДО_ПРОГРАММИРОВАТЬ. Ладно там ебанутые алгоритмы, гауссы-адамсы, там шизоидные математики изложат материал так, что пиздец, но тут тупа фп.
Мужики, пять лет в программировании. Последний год считал, что чего-то достиг. И вот решил заглянуть в лиспотред. Почуствовал себя сынком ёбаным. Пойду учить матчасть и курить мануалы. Спасибо за мотивацию.
- 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