Это копия, сохраненная 2 февраля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
- 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
Короче, ботаю питон...
Но дико угорел по метапрограммированию и лиспу.
Какие у него преимущества по сравнению с питоном(точнее у каких диалектов? Sheme, CL, Clojure) и в каких сферах диалекты лиспа до сих пор остаются актуальны и останутся?
Как лисп работает с многопоточностью?
Насколько он быстр?
Насколько у него большое и активное комьюнити (за пределами СНГ)?
Первым дело я выбираю язык для аутирования, т.е для себя любимого. Мне интересны нейроночки и работа с сокетами. Стоит останавливаться на старичке, или лучше сразу обратить взор к Эрлангу или Скале
http://yablor.ru/blogs/common-lisp-vs-python/1025189
И вот нашел блог, тут в колонке расписаны преимущества CL над питоном, но там версия 2.7 и блог за 2010г - это все еще актуально?
>Какие у него преимущества по сравнению с питоном(точнее у каких диалектов? Sheme, CL, Clojure) и в каких сферах диалекты лиспа до сих пор остаются актуальны и останутся?
Гомоиконность, макросы. Можешь быстро свой компилируемый питон а лиспе написать.
>Как лисп работает с многопоточностью?
Так же как и многие другие языки - треды.
>Насколько он быстр?
SBCL немногим медленнее СИ.
>Насколько у него большое и активное комьюнити (за пределами СНГ)?
Вялое.
>Мне интересны нейроночки
Оставайся в питоне.
>Оставайся в питоне
не хочу, меня тошнит от его комьюнити, от стерильности его синтаксиса. Я его в джанго кмс юзаю и для написания всяких грабберов и скриптов.
чисто макакой
мне нужен язык для себя, и sheme с CL мне приглянулись хотя бы по синтаксису, мне понравились скобочки, а это уже показатель.
Так все же, в чем сейчас активно используют тот же CL? Может есть какие то крупные проекты, хотя бы просто поддерживающие лисп?
ладно, поставлю вопрос ребром
Что может CL чего не может Python?
В чём его преимущество?
По скорости - черепашество питона лечится PyPy или чистым Си. Бенчмарки не проводил, но скорость резко возрастает.
>точнее у каких диалектов?
Надо пилить этот вопрос в шапку, буквально каждый анон спрашивает про ДИАЛЕКТЫ. Оп, ты что думаешь?
>в каких сферах
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. Если тебе хочется в продакшн, обработку данных и блидинг эйдж идеи - бери кложу.
>точнее у каких диалектов?
Надо пилить этот вопрос в шапку, буквально каждый анон спрашивает про ДИАЛЕКТЫ. Оп, ты что думаешь?
>в каких сферах
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. Если тебе хочется в продакшн, обработку данных и блидинг эйдж идеи - бери кложу.
спасибо за развёрнутый ответ
>SBCL
я тут прочитал что для его поддержки нужна орава "инженеров".
его реализация сильно отличается к примеру от CCL?
>Так все же, в чем сейчас активно используют тот же CL?
В том, где необходимо клепать DSL/eDSL.
>Может есть какие то крупные проекты, хотя бы просто поддерживающие лисп?
StumpWM. Поделки на лиспе в основном используются в закрытых проектах во многих компаниях.
>>141204
Компилируемость, макросы, изменяемый синтаксис, гомоиконность, CLOS, полноценные замыкания, промышленный стандарт.
читал мнение что в веб 3.0 благодаря "изменяемый синтаксису" и гомоиконности и макроса, Лисп восстанет аки Феникс из пепла, и хоронить его рано
>восстанет
>хоронить его рано
Эт кто его там хоронить собрался? Общелисп жив и умирать вовсе не собирается.
Даже наоборот, за последние лет 5 можно отметить нарастающую активность в сообществе.
>что то я не въехал... SBCL - имеет в корне отличный от CL синтаксис?
Эм, нет. SBCL - одна из основных реализаций common lisp'а, никаких под- или надязыков там нет.
>Как его учить?
Ставь portacle (это настроенный и готовый к использованию emacs с sbcl в комплекте), открывай книгу да учи.
Насчет совместимости тоже можешь не беспокоиться: если не использовал специфичных для реализации расширений, в чем надобности в общем случае возникать не должно, то код везде будет одинаково работать.
спасибо. Начну с книги ANSI CL, а после перейду к Practical CL. Может посоветуете очередность литературы?
Ну я бы посоветовал pcl как введение, после чего или даже параллельно полистать cl-cookbook для знакомства с некоторыми библиотеками, де-факто ставшими стандартными, и onlisp для познания lisp-way'а.
Насчет ANSI CL ничего сказать не могу, не читал.
>Это скорее недостаток, чем достоинство, лол.
Никто в здравом уме не будет юзать нестандартизированный язык в индустрии.
Разве что в твоем манямирке :3
Алсо, из того факта, что ты не уловил мессадж моего поста, я делаю вывод, что ты не слишком-то знаком с CL, а потому и разговаривать мне с тобой не о чем.
Дурачок. Вся индустрия держится на стандартах, не важно на сколько он монстр, или устаревший. Без стандартов всегда получается зоопарк хипстерского говна.
Тут и комменитировать нечего, кроме грамматики. Отдыхай уже, мы тебя услышали.
Перед тем, как заходить в этот тред, надо включать мозг. Те, кто этого не делают, будут посланы нахуй быстрее, чем они успеют сказать "не понял".
>Не понял.
Ты долбоеб. Тебе не на дваче нужно сидеть, а по больше по сторонам оглядываться :-)
Иди нахуй.
CL отлично дружит с любой предметной областью.
Мне вообщем-то всё не похуй, везде сую свой нос, как-то так..
Тебе же выше уже отвечали про машин лернинг, разве это не ты был?
https://github.com/josephmisiti/awesome-machine-learning#common-lisp-general-purpose
Выводы можешь сделать сам.
Зависит от того, что именно тебе нужно.
Пощупай эти:
http://melisgl.github.io/mgl-pax-world/mgl-manual.html
http://mmaul.github.io/clml/
>Эм, нет. SBCL - одна из основных реализаций common lisp'а, никаких под- или надязыков там нет.
Orly?
http://sbcl.org/manual/#Beyond-the-ANSI-Standard
>Orly?
Практически - да.
>один макрос чтения
>одно опциональное поле у defpackage
Про первый я забыл, а про второе даже и не знал - настолько они нужны.
Остальное покрывается переносимыми библиотеками и в рабочем коде без действительной на то необхоимости непосредственно использоваться не должно.
В общем, не считаю, что этим стоило лишний раз путать новичка.
>язык для аутирования
Вкатывайся в Хаскель. Скобочная динамопараша не очень хороша для этой цели.
В хаскеле совсем другой аутизм, да и метапрограммированием всё очень плохо.
>да и метапрограммированием всё очень плохо
ну не скажи
http://ku-fpg.github.io/software/kansas-lava/
Куда там тыкать, чтоб вау было?
Хотя догадываюсь, что edsl построен не метапрограммными средствами.
>Хотя догадываюсь, что edsl построен не метапрограммными средствами.
https://github.com/ku-fpg/kansas-lava/blob/master/Language/KansasLava/Signal.hs
>{-# LANGUAGE TypeFamilies, ExistentialQuantification,
> FlexibleInstances, UndecidableInstances, FlexibleContexts,
>ScopedTypeVariables, MultiParamTypeClasses #-}
>метапрограммированием всё очень плохо.
Зато можно весело поебаться с монадками и другими алгебраическими абстракциями, вместо грустной ебли с macroexpand-1.
Не знаю, АПВС?
При попытке скомпилировать программу показывает Error Error is 2 level deep. Will try reset the I0 streams by calling stream cold init or RESET и вылетает "прекращена работа sbcl.exe" после чего редактор становится кирпичом
в гугле не нашел описание этой ошибки
windows 7
У меня бы элементарно среда не открылась на 32х
>>144024
Абсолютно любую, хоть "hello world"? один хрен. После попытки провести компиляцию через С-с С-с, редактор начинает колбасить, выдаёт ошибку и через секунд 10 вылетает "прекращена работа sbcl"
" Will try reset the I0 streams by calling stream cold init or RESET"
это тоже не работает, лишь перезапуск редактора
нагуглил что это проблема окошек, но почему, не понятно.
Попытаюсь поставить отдельно Emacs и Slime
Покажи саму ошибку. Она в верхушке стектрейса.
>У меня бы элементарно среда не открылась на 32х
Ну мало ли, вдруг емакс 32хбитный в поставке.
В шапке кложетреда есть список success stories (>>1139597 (OP)). И про крипту там дальше тоже есть.
А, лол. Я понял. Ты нажимаешь C-c C-c не в буфере с кодом, а в репле, так? Там эта комбинация привязана к slime-interupt, который прерывает текущий поток и выполняет в нем break http://www.lispworks.com/documentation/HyperSpec/Body/f_break.htm Должно всплывать как у меня, но что-то идет не так.
В общем, C-c C-c нужно делать в буфере с кодом.
Разумеется. Этого говна везде найдется.
Упражнение 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 дойдет, а дальше как? Я знаю что дальше он зависнет в результате рекурсии (гуглил), но как это будет выглядеть?
>А при new-if как он будет выглядеть?
Зациклится, потому что sqrt-iter будет вызываться вне зависимости от того, нужен результат или нет.
>Что получится, когда Лиза попытается использовать эту процедуру для вычисления квадратных корней? Объясните.
Stack overflow из-за аппликативного порядка вычислений.
Не объясню, потому что уже объяснено лучше
https://en.wikipedia.org/wiki/Continuation-passing_style
Там ничего не написано про "stack overflow", может все-таки попробуешь сам сформулировать? Нет, не попробуешь.
Жопой читал что ли? При CPS все вызовы являются хвостовыми, и никакого стэка вывов нет.
Во-первых, оно не мое. Во-вторых, оно как раз корректное, а ты просто выучил новый для себя термин и лепишь его куда попало - по-крайней мере, так это выглядит со стороны.
>>146435
https://www.gnu.org/software/guile/manual/html_node/Stack-Overflow.html
> оно как раз корректное
Нет. Хотя бы потому, что там хвостовая рекурсия.
>https://www.gnu.org/software/guile/manual/html_node/Stack-Overflow.html
Ну да, в этом обосрался. Почему-то думал, что стандарт схемы, как языка с поддержкой продолжений, обязывает реализацию не только оптимизировать хвостовые вызовы, но и переводить код к CPS-виду. Оказалось, так делают только некоторые реализации.
Там не хвостовая рекурсия, так что в этом ты тоже обосрался. Читай SICP и не пизди, если не знаешь.
Бля, точно, там же не if.
http://xelf.me/gui.html
Ух-ты, какую няшноту, оказывается, в xelf запилили - гуй в лучших традициях смолтолка.
Пощупал демки - понравилось. Нужно будет сделать какую-нибудь игрушку на нем.
На 40й секунде что ли? Хз. Может, баг драгндропа, может, он его сам по оси Z поднял.
Питон со скобками. Он обычный не очень-то нужен, а этот и подавно
Ну могу лишь предположить, что сообщество у фактора малочисленнее, библиотек меньше, граблей больше, а реализация только на x86.
Хорошая штучка. Не слушай никого, кто пиздит про hy плохо. Код транслируется в python практически идеально. Hy - это все возможности питона плюс лисповые макросы.
Как хочешь, лично я прохладно отношусь ко всем этим криптовалютам.
> However, Naughty Dog has resumed using Lisp for scripting on PlayStation 3 games including The Last of Us.
THE LAST OF US СКРИПТУЕТСЯ ЛИСПОМ
Именно!
Ардуинку прикупить теперь что ли
Немного не въезжаю, что именно тебе непонятно. gensym просто создает уникальный символ. А дальше на месте вызова твоего макроса будет код, который внутри `(...). Убери макрос, напиши просто руками этот код. Лямбда внутри лет. Ну?
Ну тут тебе про замыкания просто надо почитать тогда.
Убери приставки lazy- из кода и получишь обычные реализации функций.
Хеллоу, лисперы! Тут раньше был тред с факом по схеме. Что-то его не видно. Так вот мне нужна среда для решения задачек из SICP'а. До этого писал на С в связке VIM + gcc в консольке. Я так понял, что в схеме мне нужен интерпретатор, а не компилятор? Кароче, где мне писать свои хеллоуворды, не обременяясь тяжеловесными IDE?
P.S. Emacs ковырять ой как не охота.
> Я так понял, что в схеме мне нужен интерпретатор, а не компилятор?
Тебе будет нужен, как минимум, REPL.
> P.S. Emacs ковырять ой как не охота.
А придётся. Если есть опыт с vim, может зайти Spacemacs, мне вот после восьми лет на виме заебись зашло, переехал и ни о чём не жалею. Как вариант можно взять DrRacket и вот это https://docs.racket-lang.org/sicp-manual/index.html, но это такое.
DrRacket однозначно. Современная схема, минимальная иде где все из коробки настроено и работает.
У саблайма никакая интеграция с реплом, лучше уж дрэкетом обмазаться.
В чем суть репла? По моему хуета бесполезная, никогда такого не хотелось в япах, но лишперы постоянно говорят шо это охуенная весчь.
>В чем суть репла?
Например, позволяет писать код прямо на работающую прогамму.
https://www.youtube.com/watch?v=6pMyhrDcMzw
Да нафиг не нужно, лучше пойти с пацанами пива попить.
Накатил спэйсмакс. Пока нравиться, за исключением того, что он какой-то дёрганный. Всё время что-то происходит, мигает, свистит, пердит и т.п. Хотя к этому можно привыкнуть. Вим-лайк шорткаты действительно заработали сразу это хорошо. То, что он при загрузке пакетов постоянно руинил парочку, и скачал только с третьего раза -- не хорошо. Алсо, в который раз убеждаюсь насколько же годная у Арчеводов вики(сам на демьяне). По информативности и дружелюбию уделывает гайд по спэйсмаксу с оф. сайта.
>>160390
>>160419
DrRacket вроде тоже ничего так, но теперь уже только как запасной вариант рассматривать.
mit-scheme в терминале это конечно тру. Для познания дзена самое то.
Что до сублайма, то разбираться в ещё одном редакторе только ради его аддонов это как-то не очень. Тем более, выше писали, что у него ещё и совместимость с ними хромает.
Спасибо. Продолжаю держать вас в курсе!
Задача: прочитать беззнаковое целое число из стандартного потока ввода и в каждом байте числа инвертировать значения двух старших битов каждой тетрады, если младший бит тетрады единичный. Результат вывести в стандартный поток вывода.
Примеры преобразования:
65535 (11111111 11111111) ==> 13107 (00110011 00110011)
333444 (00000101 00010110 10000100) ==> 644740 (00001001 11010110 10000100)
Написал такой код https://ideone.com/UL3dT8
[CODE](defun change-byte (b)
(let ((h (logand b #16RF0))
(l (logand b #16R0F)))
(unless (zerop (logand h #16R10)) (setf h (logxor h #16RC0)))
(unless (zerop (logand l #16R1)) (setf l (logxor h #16R0C)))
(logior h l)))
(defvar z 0)
(setf z (read))
(dotimes (i (ceiling (integer-length z) 8) z)
(setf z
(dpb (change-byte (ldb (byte 8 ( i 8)) z))
(byte 8 ( i 8)) z))))
(print z)
[/CODE]
Что не так?
Задача: прочитать беззнаковое целое число из стандартного потока ввода и в каждом байте числа инвертировать значения двух старших битов каждой тетрады, если младший бит тетрады единичный. Результат вывести в стандартный поток вывода.
Примеры преобразования:
65535 (11111111 11111111) ==> 13107 (00110011 00110011)
333444 (00000101 00010110 10000100) ==> 644740 (00001001 11010110 10000100)
Написал такой код https://ideone.com/UL3dT8
[CODE](defun change-byte (b)
(let ((h (logand b #16RF0))
(l (logand b #16R0F)))
(unless (zerop (logand h #16R10)) (setf h (logxor h #16RC0)))
(unless (zerop (logand l #16R1)) (setf l (logxor h #16R0C)))
(logior h l)))
(defvar z 0)
(setf z (read))
(dotimes (i (ceiling (integer-length z) 8) z)
(setf z
(dpb (change-byte (ldb (byte 8 ( i 8)) z))
(byte 8 ( i 8)) z))))
(print z)
[/CODE]
Что не так?
>То, что он при загрузке пакетов постоянно руинил парочку, и скачал только с третьего раза -- не хорошо.
Бывает, melpa ложится полежать, спейсмаксу от этого становится худо.
Так что ли?
[CODE]
(let ((data (with-output-to-string (standard-output)
(print "sample data"))))
(print (string-upcase data)))
[/CODE]
>#16R
Почему не #x?
>Что не так?
У тебя опчетка в change-byte
Ну и я бы переписал как-то так https://ideone.com/iHtCOW
Читаешь с помощью того же read, обрабатываешь и выводишь. Код выше тебе для примера.
Кстати, имей в виду, что использовать read для ввода небезопасно, потому что он читает парсером лиспа со всеми его особенностями. Например, ты можешь выполнить произвольный код, подав что-то вроде #.(progn (print 'AZAZAZAZ) (quit))
Только если ты сам так захочешь, пусь
Даже не знаю.
Кроме SLIMV ничего другого нет, насколько я знаю
evil-mode
Сам долго копротивлялся, но в итоге перешел на emacs и не разу не пожалел.
Ну шо, лиспаны, принимаете участие в этом году?
Потому что оперирует car'ами списка, в отличие от maplist, который обходит подсписки.
Мне нравится Chicken, но официально ничего кроме вима и емакса не поддерживается, а ими обмазываться я не хочу. И Racket мне не по душе.
Есть ли современный редактор для схемки?
Как правило в отличных от емакса редакторах/иде поддержка в разы менее полная.
Дочитал SICP до главы про недетерминистские вычисления, ну которые через особую форму amb упражнение 4.34, которое перед этой главой, заебался делать. Эта херь вообще где-нибудь используется? Аналоги этого механизма в языках не из LISP-семейства есть? А то что-то оно совсем крышесносно выглядит (пока, по крайней мере, не дошёл до упражнений).
Спасибо.
Есть ссылки на свежие проекты и желательно основные сайты забугорного комьюнити? буду рад
И в чем отличия, плюсы и минусы Clojure перед CL?
>CommonLisp живой?
Да.
>Как то не видно особого развития...
Ты где-то не там смотришь.
>Питон раз в месяц патчит версиих, а тут с 2005 похоже тишина
сбцл тоже раз в месяц обновляется, коммерческие - примерно раз в полгода.
>Есть ссылки на свежие проекты и желательно основные сайты забугорного комьюнити? буду рад
На реддите смотри.
>И в чем отличия, плюсы и минусы Clojure перед CL?
Если кратко, первый - язык для менее болезненного программирования на яве, второй - язык общего назначения
Clojure - добрый и актуальный, CL - злой и специфический.
CL — императивный, Clojure — функциональный (в основном)
Какое назначение у языка кроме пердолинга собственного мозга?
Вот видишь, ты и сам знаешь ответ на свой вопрос
Сап программисты.
Ситуация такая, коллега на работе настоятельно рекомендует прочитать sicp. Постоянно говорит про какое-то просветление, самоподобие, код как данные, упомянал y-комбинатор, и вообще говорит, что если не знаешь лиспа - не программист.
Собственно, не пиздит ли он? Есть ли смысл читать если ты программист другого языка? Я начал читать, пока не почувствовал ничего.
Ну вот он прочитал, а ты нет, а в результате вы на одной работе работаете. Вывод: SICP ни на что не влияет.
Ради расширения кругозора читать конечно стоит. Книжка, если что, не про какой-то конкретный язык, а про программирование в целом. Плюс она хорошо все раскладывает в голове по полочкам, ну и собственный язык в репах на гитхабе зачастую производит положительное впечатление.
Кроме того, познакомиться с ней стоит хотя бы для того, чтобы не выставлять себя посмешищем, как вот >>198121-анон.
о тролинге говорят дегенераты-формошлёпы неспособные осилить архитектуру программ в своей голове, а лишь перепейсовать спизженные куски кода.
Как минимум ознакомление с sicp обязательно каждому уважающему себя программисту, если ты конечно не макака
Тебе - тем более, дурачок.
Вот, допустим, хочу я к определниям слотов добавить метаинформации. В каких случаях достаточно расширить direct-слоты, а в каких — и effective?
>Так ты бы хоть код привел, анон - телепаты-то все на каникулах.
(random-seed (current-milliseconds))
Пробовал.
(+ 1 current-milliseconds)
>Type Checker: type mismatch
> expected: Number
> given: (-> Fixnum) in: current-milliseconds
У него тайпедрэкет
Ну, сам я этим не пользовался и даже не представляю, зачем такие извращения тебе могли понадобиться, поэтому могу только посоветовать читать руководство.
(random-seed (add1 (abs (current-milliseconds))))
>random-seed: contract violation
>expected: (integer-in 0 2147483647)
>given: 1530007455287
Ох какая няшка.
Скажи мне, красавица, как вообще типы данных правильно конвертировать в тайпед ракете?
От чего такие трудности появляются?
Почему нет стандартного набора функций конвертеров?
В обычном ЯП я могу просто привести один числовой тип к другому.
> Скажи мне, красавица, как вообще типы данных правильно конвертировать в тайпед ракете?
Понятия не имею, я просто мимо проходил даже sicp не до конца дорешал
> От чего такие трудности появляются?
Тому що строгая типизация.
>В обычном ЯП я могу просто привести один числовой тип к другому.
Так тут тоже можешь, там все есть но тут-то тебе нужно по модулю число брать, если я правильно понял проблему
Зачем тебе вообще весь этот геморрой? Хочешь типами поиграться - возьми лучше агду
Гуглить мама не научила? Привет ей передавай
https://en.wikipedia.org/wiki/Agda_(programming_language)
Weblocks-то, оказывается, перепиливается активно!
Сфера - любая
Есть практические примеры, но именно упражений на самостоятельное решение нет. Кажется, в land of lisp были.
Кстати, просто упражнения без привязки к языку можешь найти там https://projecteuler.net/
Ясно, спасибо.
Да там дохуя книжек так-то есть https://mitpress.mit.edu/books/little-schemer-fourth-edition
Спасибо
Как можешь видеть, список составлялся недавно. Так что, если что-то уже не развивающееся и было добавлено, то какой-то интерес всё ещё представляет.
Это такое новое неймфажество?
>синтаксический сахарок для хешей
>СИЛА жвм
>и вообще хиика был прав
Мощная аргументация. Все, бросаю общелисп и бегу записываться в ряды восторженных кложе-фанатов.
>cl-фаната
https://github.com/SlightlyCyborg?tab=repositories&language=common+lisp
Судя по кодичеству и неуклюжести кода, все его фанатство - это несколько случайно прочтенных статей с ресурса уровня швабры.
>> Portacle :: https://portacle.github.io/
У меня из-за этого портакла память утекла, сука, 8 гигов за 5 минут.
В итоге на сервак домашний навернул vim и sbcl.
емакс.
sbcl у меня не тёк никогда.( так как я им давно пользуюсь, но отдельно). Вот решил скачать что тут советуют, и охуел.
Короче, разобрался и пофиксил руками код. Думаю отправить ли правку этому чуваку или нет
Отправь чо. В чем проблема была?
>Думаю отправить ли правку этому чуваку или нет
Хули тут думать? Опенсрус он на то и опенсрус, чтобы коллективно фиксить проблемы. Или хиика дохуя?
Отправляй!
Отправляй кабанчиком, анон! Обнял тебя.
(format t "~A plus ~A equals ~A. ~%" 2 3 (+ 2 3))
ошибка wrong type argument stringp, t
поясните, аноны.
а в чистом sbcl пашет, но это говно не работает с копированием.
Что не так с портаклом?
>я сам печатаю, лол.
Так, погоди, а куда ты вводишь код? Покажи скриншот, уж не емаксом ли ты пытаешься исполнить
Так почему он не выстрелил и вместо него используют python и delphi, при том что в случаи с питоном приходится тащить с собой интерпретатор, что уж никак не сравнивается с компилируемым CL
в sbcl да, сейчас в блокноте уже печатаю.
в emacs я печатал и исполнял, а потом пытался делать как в гайде портакла написано, хуйня какая-то.
> Я тут глянул CL и понял что он просто идеален для создания полиморфной малвари и макросов...
> Стопицот гигабайт бинарник с зашитым рантаймом
> рантайм попадет в базы эвристики и пиздец.
>в sbcl да, сейчас в блокноте уже печатаю.
Такое себе удобство.
>в emacs я печатал и исполнял
А буфер был в режиме емакслиспа, да? Судя по ошибке, именно так и было. В елипсе у format'а первым аргументом идет строка, вот оно тебе и ругалось, что t - нихуя не строка.
После старта портакла загляни в C-x b Messages и C-x b inferior-lisp, видимо, там что-то не так.
Я думаю, рантайм общелиспа можно неплохо утрясти. Начать хотя бы с удаления документации и отладочной информации, а закончить удалением неиспользуемых функций и пакетов. Кажется, коммерческий allegrocl именно так и делает.
Да ты просто аутист, на ровном месте спотыкаешься
>> Стопицот гигабайт бинарник с зашитым рантаймом
чёт я не понял
а как же хвальба за возможность накатать интерпретатор питона на лиспе в 15 кб
чему там столько весить?
>чему там столько весить?
У тебя в рантайме компилятор, всякого рода метаинформация ко всем объектам: отладочная, документация, местонахождение в исходном коде, служебная информация (например, типы функций, переменных, слотов и т.д.).
Но это у sbcl рантайм жирноватый (сохраненный образ занимает ~30мб), у ccl - раза в два меньше, у ecl - вообще крошечный, но он заметно медленнее остальных и умеет компилировать только через сишку или интерпретировать.
>а как же хвальба за возможность накатать интерпретатор питона на лиспе в 15 кб
В 15кб чего? Откуда ты это вообще взял?
Скорее всего, имелось в виду, что на лиспе легче реализовать, потому что у тебя уже есть фичастый рантайм и компилятор, который можно заточить под свои нужды.
>отладочная, документация, местонахождение в исходном коде, служебная информация
Щито? Это же все удаляется, если не дебаг-билд, не?
Эм, да в лиспе, можно сказать, нет такого понятия сборок, как нет и отдельной стадии компиляции, ибо код пишется сразу на работающий процесс. Как в смолтолке.
Ты можешь подкрутить флажки, выставить дебаг 0, но это экономия на спичках, размер образа уменьшится едва ли на процент.
Вот allegrocl, говорят, умеет подчищать свой рантайм основательно. Так, что в образе остается только необходимое.
Во-первых не в лиспе а в коммон лиспе
Во-вторых блждад я же тебе конкретный гринтекст указал, все это сбцл удаляет при прод-сборке насколько я знаю
Ну и про аллегро ты сам сказал, да
>Во-первых не в лиспе а в коммон лиспе
В лиспе, в лиспе. Схема - отдельный лиспоподобный язык, а общелисп потомок - того самого.
>прод-сборке
>дебаг+спид
Что есть прод сборка и спиды в CL, за отладку я понял.
Я тут подумываю его юзать для своих подделок для души, но чёт меня отпугнули заявления анона выше за гигабайты мусора
Не гигабайты, а всего +30мб (у сбцл), и не мусора, а в основном инструментария. Не так уж и много для такого рантайма, gcc с gperf, gdb и glibc занимают не меньше.
Но если для тебя такой излишек непозволителен, возьми другую реализацию.
>Но если для тебя такой излишек непозволителен, возьми другую реализацию.
да нет, скорость играет первостепенную роль ибо область около биг дата, но и размер бинарника должен быть минимальный, так что тут лишь sbcl
ладно, спасибо, выделил цитаты из диалога, буду гуглить.
>размер бинарника должен быть минимальный
Сбцл поддерживает сжатие образов, ужимает емнип до ~8мб.
Вообще, можешь попробовать поудалять лишние пакеты из образа, документацию и т.п. Это тебе строк в 20-40 кода обойдется, пару мегабайт точно освободишь
Кто-нибудь пробовал использовать этот наркоманский пиколисп? Каждый раз, как натыкаюсь на код на нем, возникает противоречивое впечатление. С одной стороны, поражает, как код получается таким лаконичным, но с другой, ЧТО ЭТО БЛЯДЬ ЗА НАРКОМАНИЯ
Эм, что-то не нашел там особо лаконичного кода.
всё, нашёл в документации
Там, говорят, даже лямбд нормальных нет. Бери ракетку и не выёбывайся. Ну или clasp вон, если хочется странного.
>Там, говорят, даже лямбд нормальных нет.
Я слышал, там и лексических переменных нет, прям как в старом, добром лиспе. Но вообще, язычок хоть и страшненький, мне кажется, он идеален для хуяк-хуяк скриптов.
>Бери ракетку и не выёбывайся.
Как-то пробовал писать на её frtime, создалось впечатление, что оно пилилось вовсе не для практического использования, а показать МЫ ТОЖ ТАК УМЕЕМ, ЧЕ НАМ ЭТИ ХАСКЕЛИ. Уж больно все криво, сыро, несподручно было.
Ну и тормозная она жутко. И ведь странно, схема же такой простой язык, почему для неё не могут запилить нормальную реализацию?
>Ну и тормозная она жутко. И ведь странно, схема же такой простой язык, почему для неё не могут запилить нормальную реализацию?
В смысле тормознутая? С какими опциями компилировал?
>почему для неё не могут запилить нормальную реализацию?
Есть же компилятор схемы в си.
>он идеален для хуяк-хуяк скриптов.
Про пайтон слышал?
>вовсе не для практического использования
Для практического использования на сегодня годится только один лиспообразный язык не считая жс и руби, и мы все знаем, как он называется.
>У опа этого треда от него бомбит, так что я не буду нагнетать атмосферу.
ну пипец, взял, нагнал таинственности и ушел в туман. Нельзя так, мне тоже интересно стало
>Действительно годнота, стоит в него потыкаться?
Ну да, у них теперь планы наполеоновские
https://www.red-lang.org/2017/12/leaping-into-future-red-goes-blockchain.html
>Ну да, у них теперь планы наполеоновские
Так, и в чем его плюсы перед теми же плюсами и какие резоны использовать оный вместо плюсов? Очередной велосипед походу
Да в том и дело, что планы-то (и баззворды) наполеоновские, а как посмотришь, что реально есть, - какое-то говно, которым перекидываются полтора застрявших в 90-ых аутиста. Хуй знает корочи.
>>233145
>Так, и в чем его плюсы перед теми же плюсами
Ох, лол, и это я еще авторов реда аутистами называю.
Лол, какой вообще может быть резон использовать кресты?
>>233157
Вот уж не знаю, в каком оно сейчас действительно состоянии, но судя по отчетам они там не топчутся на месте. Собственно, жду следующего релиза, к нему собирались много чего допилить, будет уже более-менее пригодным для использования.
>>233157
>Да в том и дело, что планы-то (и баззворды) наполеоновские, а как посмотришь, что реально есть, - какое-то говно, которым перекидываются полтора застрявших в 90-ых аутиста. Хуй знает корочи.
>>233278
>но судя по отчетам они там не топчутся на месте. Собственно, жду следующего релиза, к нему собирались много чего допилить, будет уже более-менее пригодным для использования
Так, что это за зверь такой вообще?
Я вот сайт их полистал, и мягко говоря ничего не понял.
Ну, заявления очень громкие да. Хеллов верд вроде есть.
А в чем собственно специфика их языка, не в плане целей, а в плане вот синтаксиса, семантики, библиотек, модулей?
Чем оно от лиспа отличается кроме формы скобочек?
Смотрел оглавление HtDP - там вроде как те же темы освещаются.
Окей, был неправ.
>но судя по отчетам они там не топчутся на месте
Хуй знает, судя по отчетам они там сидят на виндуз 98 и пилят динамикодрисню со встроенной гуй-библиотекой для винды. Ну такое.
>>233351
>Я вот сайт их полистал, и мягко говоря ничего не понял.
>Ну, заявления очень громкие да.
Вот у меня ровно то же ощущение. И от ребола было такое же.
Когда прочитаешь htdp - начинай пилить петпроекты. Ну и сикп параллельно тоже можешь, да.
да
>виндуз 98
На десяточке же.
>со встроенной гуй-библиотекой для винды
Уже давно для мака запилили же, а в апреле демкой для ведроида хвастались. Гтк-бекенд пока, видимо, некому пилить.
Да тот же лисп, но с менее шумным синтаксисом и сразу спроектированный с подходом "каждой предметной области свой едсл"
Комбо мне показалась удобной, поэтому использую её.
решил сделать функцию для поиска второго слова в строке.
(defun second-word (str)
(let ((p1 (+ (position #\ str) 1)))
(subseq str p1 (position #\ str :start p1))))
sbcl ругается на sharp slash. Я так понимаю я должен был писать #\str ?
Попробуй define написать, может прокатит.
#\Space же
Вопрос таков:
Правильно ли я понимаю, что
(cons 1 (cons 2 (cons #true (cons "2ch" '()))))
==
(list 1 2 #true "2ch")
И, например
(list (list "4" 2 (make-posn 5 5)) #false)
==
(cons (cons "4" (cons 2 (cons (make-posn 5 5) '()))) (cons #false '()))
И я могу всегда вместо cons использовать list в упражнениях и быту, чтобы не ебать мозги, ибо до list по HtDP ещё не дошёл?
equal? говорит о том, что мои мысли правильны, но всё же хочется свериться с вами
также сюда вопрос
#lang racket
(define l (list 3 4 5 6 #true #i23.5 ""))
(pair? l) == (list? l) == (cons? l)? Судя по всему, да, но я нью-фаг в лиспе, поэтому хочу чтобы вы подтвердили правильность
здесь не уточнил, также имеется ввиду, что нет разницы, какой из 3ёх предикатов использовать
Перфекционистское спасибо.
Хелп аноны
Какая ОС?
У меня сбросила настройки старой версии, после установки новых ничего не сбрасывает.
Не прокатило, но я кажется вник, что не так делал
Guix, например. Ничего другого сходу не вспомню.
(cond
((or (string=? str "a") (string=? str "an") (string=? str "the")) "")
(else str)))
Можно как-нибудь сократить запись первого выражения? Чтобы не писать по n раз (string=? str строка).
quote: expected the name of a symbol or () after the quote, but found a part
Через list сделал, всё окей
Включен BSL
Почему твой вариант не прокатил?
(list->string (string->list "cat"))
Даны 2 выражения, в чём разница? Результат, естественно, один и тот же.
глянул документацию лишний раз, понял разницу
(list->string (list #\c #\a #\t))
(implode (list "c" "a" "t"))
(string->list "cat")
(explode "cat")
арукард, лолыч)))
>я имел ввиду, в основном для чего применяется
Для создания DSL
Для ембедед программ.
Для игр.
Для программирования плисов.
Для веба.
Для ентерпрайза(заместо джавы)
Основная фишка лиспа, это богатые возможности метапрограммирования.
Вот везде где нужно метапрограммирование.
Поясните пожалуйста разницу между null? и empty?
Первый, наверное, применим только ко спискам, а второй - ко всем последовательностям
Что ты имеешь ввиду под остальными последовательностями? Пары? Вложенные структуры?
Какой лисп самый топ ? Не для коммерции а для себя
Типа clisp или sbcl ? Может есть еще что-то
Хочу писать свои интерпритаторы, хуяторы, мб консольные редакторы Опять-же, только для себя. Не хочу коммерции
Racket
Зависит от того, какой язык ты хочешь изучать, очевидно. Если тебе интересны только сами макросы, то лучше читай доки к рэкету, так как там их больше разных видов скажем так.
Ты спросил про лучший лисп, я ответил. Он настолько хорош, что его используют даже для коммерции.
> какой язык ты хочешь изучать
Хочу всё попробовать, но писать в итоге буду, скорее всего, на CL и/или Clojure.
Документация, скорее всего, неоч зайдёт, я хочу, чтобы мне, как дебилу, разжевали, и заставили десяток нудных упражнений сделать, ну то есть прямо как в сикпе.
Читай (бесплатно доступную онлайн) clojure for the brave and true автор тебя будет уговаривать установить имакс, не поддавайся @ решай упражнения с 4clojure. Для первого знакомства можешь maria.cloud навернуть, но там прям совсем для нубов, если ты сикп осилил, то тебе скучно будет. Алсо, на exercism.io есть clojure-трек, там тоже упражнения и все в одном - пожалуй, даже с этого лучше начать.
А вообще, тут кложетред с шапкой есть, глянь ее.
PCL тоже можешь навернуть (как минимум для ознакомления), но учти, что по современным меркам там много сомнительных решений.
О, а еще чисто по макросам есть вот эта наркоманская штука: http://www.lisperati.com/casting.html - наверни, лол, еще захочешь. Вроде аффтар запилил и кложеверсию.
стало только лучше, что забавно
> автор тебя будет уговаривать установить имакс, не поддавайся
Уже поздно, лол
Спасибо за советы!
> О, а еще чисто по макросам есть вот эта наркоманская штука: http://www.lisperati.com/casting.html - наверни, лол, еще захочешь.
Выглядит упорото, обязательно посмотрю :з
Gambit-C + LambdaNative - схемка+кросплатформенный фреймворк для написания приложений, которые будут работать на любом утюге с OpenGL.
>>244412
>Теперь я хочу изучить лисповские макросы,
А хули их изучать-то? Синтаксическая абстракция настолько примитивная вещь, что всё понимается за пару вечеров неспешных экзерсайзов.
>LambdaNative
Юзаешь его? Что за зверь, как оно вообще? Примеры выглядят не очень честно говоря.
Спасибо.
Зачем /s, когда есть лор?
Можно будет в шапку добавить, ящитаю
Устаревшая стандартная библиотека, много мутабельности, loop, оверюз макросов... Ну это такое, надо попробовать и сравнить, чтобы понять.
>>255609
Для расширения сознания - скорее да. Для практики - скорее нет. В продакшен он смог, но это было давно олдфаги не помнят, ньюфаги не знают гугли AI Winter.
Ясновидцы вслед за телепатами ушли в отпуск, извиняйте. Последние пару лет у него ни с того ни с сего внезапно началась какая-то движуха, так что хуй его знает. Но в целом анон выше прав, есть же кложа.
>>255832
...хотя с другой стороны, кложа - это про иммутабельность, параллельность@асинхронность и data-driven design. У CL так-то совсем другая аудитория, там типа олдскульные бородатые хакеры пишут генераторы метапарадигм на дслях.
>>255858
Ну, необязательно, еще нода\браузер. Да и грааль потихоньку допиливают, простенький бэкенд уже сейчас можно но ненужно скомпилить в нативный бинарник без всяких жвм.
>Устаревшая стандартная библиотека
Код из учебников по сишке ты тоже назовешь сомнительным, ведь стандартная библитотека не нова?
>много мутабельности
Нет, не много.
>loop
Не как что-то плохое. К тому же, это часть языка, зачем про неё умалчивать?
>оверюз макросов
Использованы в меру, я считаю.
Примеры в книге нормальные. Просто ты кложурист и тебе не нравится cl.
>Его нишу полностью занял Clojure.
Кложа более-менее взлетела только на фронтенде, а тот никак не ниша общелиспа.
>Код из учебников по сишке ты тоже назовешь сомнительным
Разумеется. К&R - отличный учебник того, как не надо писать код.
>Нет, не много.
Хэшмапы иммутабельные уже завезли?
>как что-то плохое.
Плохое. А, кстати, еще вспомнил, что он там про анафорические макросы рассказывает и ни разу даже не упоминает, что это говно и на самом деле это просто пример так делать никогда не надо. Мне кажется вкатывальщику вместо целой главы про loop гораздо полезнее будет ознакомиться со стандартными фпшными функциями над коллекциями (и их реализацией).
>Использованы в меру, я считаю.
А я, выходит, считаю по-другому.
>тебе не нравится cl.
Нравится. Мне задали вопрос - я ответил, только и всего.
>>256540
>на фронтенде
Да не, ну сам посуди, какой смысл сегодня вкатывающемуся писать бэк на кл? Если нужно тупо сайтик развернуть, проще взять РоР, если нужно рест или считать-дергать что-то - кложу. КЛ хорош, если ты уже кл-хакир, ну или если тебе нужен нативный код и метагенераторы оперденей!
>А я, выходит, считаю по-другому.
Да по-моему, ты никак не считаешь. Тебя спросили пример кода, а не твои ТАМ ВСЕ ПЛОХО И ВООБЩЕ ТАК ДЕЛАТЬ НЕ НУЖНО, А ВОТ ЗАТО У НАС ИММУТАБЕЛЬНЫЕ ХЕШМАПЫ. Нашел чем удивить, лол. Сейчас элементы ФП в каждую скриптопарашу тянут WAIT OH SHIIIIII
>Тебя спросили пример кода
Меня спросили - я ответил.
>Сейчас элементы ФП в каждую скриптопарашу тянут
Ну так в своем ответе я как раз и упомянул тот факт, что в кл элементы ФП вместо Ъ-ФП и иммутабельности по умолчанию. На что ты мне ответил, что тебя это устраивает. Мне-то не жалко, но self-consistency какая-то должна же быть.
>что в кл элементы ФП вместо Ъ-ФП
Ну и что? В кложе тоже.
>но self-consistency какая-то должна же быть.
Сказал фанат hosted языка, лол.
>ну или если тебе нужен нативный код
Там такой нативный код, что лучше уж жабу через jvm. Они за овер 20 лет даже в SIMD видеть и использовать в map не научились, что уж говорить про cache-friendly memory manager и прочие новомодные хуитки, которые сейчас даже JS движки умеют.
>новомодные хуитки, которые сейчас даже JS движки умеют.
Только не очень-то они ему помогают.
>В кложе тоже.
Нет.
>Сказал фанат hosted языка, лол.
Во-первых, я фанат Спартака; во-вторых, при чем тут это? Я тебе про взаимоисключающие параграфы же написал.
Короче, забей. Я не знаю, зачем тебе хочется устраивать со мной срач. По-моему в этом нет необходимости.
>>257876
Ну, тут можно конечно обсуждать (тем более в свете грааля, да и всяких реакт нейтивов тоже), но вот например если тебе нужен ffi или не дай боже какое-нибудь байтоебство, то жвм тут точно всосет. инб4: возьми раст \ ядро на си, обвязка на клжс с нодой
>анафорические макросы
А что в них такого плохого? Просто еще один инструмент для повышения выразительности
>А что в них такого плохого?
Неявный ввод имен - ето плохонько. Вместо это лучше использовать либо явные локальные биндинги, либо один динамический (но все еще явно объявленный) биндинг.
>инструмент для повышения выразительности
Хм, так в том и проблема, что они не повышают выразительность. Тоталли анрилейтед: вот this в жаваскрипте повышает выразительность, как ты считаешь?
Можно отстрелить себе ноги, если использовать их в макросах. В остальном же ничего страшного.
>Последние пару лет у него ни с того ни с сего внезапно началась какая-то движуха
можно поконкретнее? Заинтриговал
Чу, решили стандарт наконец изменить?
>Неявный ввод имен - ето плохонько.
Описанный в документации к такому макросу. По сути же получается локальный такой eDSL.
Получается, что CLOS - тоже плохенько?
>Вместо это лучше использовать либо явные локальные биндинги
Так анафорические макросы как раз и придуманы, чтобы каждый раз не заниматься биндингом ручками, биндинг сам сбиндится к какому-то зарезервированному символу.
>this
Семантика this/self/итд в ООП язычках и it/self/итд в амакросах различна и их сравнение вобщем-то не уместно.
>Чу, решили стандарт наконец изменить?
Да вроде нет.
>>260483
Прикольно! но #H(...) это конечно так себе
>>260545
>Описанный в документации к такому макросу.
Ээ, по-моему ты меня не совсем понял.
>Так анафорические макросы как раз и придуманы
Капитан в треде, все в америку -.\\
>их сравнение вобщем-то не уместно.
Тыскозал? Я же говорю, по-моему ты меня не понял.
Хотя бы объективный
Генерация метапарсеров динамических оперденей, например.
Чтобы получить полноценный, стандартизированный язык с хорошей динамической средой, а не наколеночную надстройку над джавой, которая до недавнего времени плевалась жава-стектрейсом на любую ошибку.
Нет. А что?
Нет. А что?
Чем питухон
Как-то не пробовал, мне перл привычнее, но недавно натыкался на такой проект https://github.com/bradleyjensen/shcl
Вот уж не знаю, насколько он пригоден для использования, но выглядит интересно.
Будто на пепле пишут
>>140925 (OP)
>::: Учебники
>- Cookbook :: https://lispcookbook.github.io/cl-cookbook/
>- PCL :: http://lisper.ru/pcl/
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...
Потому что это старый язык из 80-ых (в сишке названия функций видел? Тогда так модно было), плюс CL - это продукт стандартизации многих несовместимых реализаций лиспов, поэтому там много компромисов.
tl;dr: потому что стандартная библиотека там унылое говно мамонта
> tl;dr: потому что стандартная библиотека там унылое говно мамонта
И как коммон лисперы с этим живут?
Перекатываются на кложу Немного страдают и потихоньку пытаются исправлять, ссылки выше были, но в целом привыкают, ибо это компенсируется другими достоинствами языка.
>Почему в 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)) ...)
Я просто оставлю это здесь: https://medium.com/@den.isidoro/using-clojure-graalvm-for-shell-scripting-da0bcc8955d4
Не знаю, погугли. У меня на винте лежит pcl.pdf на русском. а вообще,
>Есть какие нибудь ресурсы для даунов и аутистов?
http://maria.cloud/ же
По какому принципу ты выбираешь посты, на которые триггеришься, лол?
Спасибо, анончик. Жалко только что я почти 20 глав прочитал и почти нихуя не понял. Зато теперь надеюсь, что дочитаю.
Есть еще lisp in small pieces, тоже на русском. Может лучше зайдет, хотя она ближе к сикпу.
>20 глав прочитал и почти нихуя не понял
Проиграл конечно.
https://www.reddit.com/r/emacs/comments/9j1ubb/next_browser_linux_port_campaign/
Если вдруг кто-то ищет себе проект, то вот, товарищу требуются помощь в портировании на линукс.
Не от переизбытка помощников ему пришлось с плюсовиком партнериться. Да и к тому же, у него ещё в планах гтк с вебкитом, на который точно рук не хватает.
SQL.
Очевидная кложа очевидна. Хотя на самом деле зависит от того, что за данные и что ты с ними делать будешь, может тебе вообще лучше питон взять?
>Какие данные.
Всякая статистика старкрафта. Мне нужно будет гонять ее из одного формата в другой. Позже буду писать простого(по меркам лучших игроков, но не в плане кода) бота для игры. В будущем планирую прикрутить машинное обучение, но это не точно.
>Питон
Питон не хочу. И почему кложа а не коммон лисп?
>И почему кложа а не коммон лисп?
Ну она питчсейлзится как раз как язык для ОБРАБОТКИ ДАННЫХ, поэтому довольно очевидно. Плюс куча жвм либ, тебе не придется руками писать условный парсер иксемеля, лол. Ну и с машинным обучением там норм но хуже, чем в питоне.
Кл думаю побыстрее будет, но и писать на нем далеко не так приятно. Алсо, если у тебя это типа клиентское приложение, а не на сервере крутится, то вообще логично было бы что-то более легковесное взять (раст? даже окамл? раз питон не хочешь, то вангую что го тоже не хочешь)
>язык для ОБРАБОТКИ ДАННЫХ
>довольно очевидно
Окей, а в чем это проявляется?
>парсер иксемеля
В коммон лиспе думаю есть такое.
>писать на кле далеко не так приятно
Почему?
>Алсо, если у тебя это типа клиентское приложение
Не, данные я буду я обрабатывать на беке. Позже напишу удобный для себя клиент.
>Легковесный.
Я думаю это не про кложу как раз.
>Раст, го.
Низкоуровневый язык не для моей задачи.
https://github.com/tokenrove/series/wiki
http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node347.html
Есть вот такая библиотека, несправедливо подзабытая лисперами, которая умеет из цепочки операций над потоком данных генерировать однопроходный цикл без промежуточных последовательностей.
Спасибо за ссылку, анон. В этой либе слишком мало функций для преобразования коллекций. Может ты знаешь еще какие нибудь либы, для работы с данными в CL? Просто хочется дать шанс коммон лиспу, но в кложа для моей задачи выглядит в разы вкуснее.
>Окей, а в чем это проявляется?
Хорошая стандартная библиотека с хорошими иммутабельными структурами. Плюс все бест практисы языка заточены на описание предметной области просто данными, ну и все инструменты заточены под это же - мультиметоды, спек тот же, есть даже наркомания вроде https://github.com/nathanmarz/specter и йобы для считания в кластерах, но для твоей задачи думаю неактуально
>В коммон лиспе думаю есть такое.
Ну я утрирую, лол, поэтому и "условная".
>Почему?
Комьюнити, тулинг, стандартная библиотека, императивность и т.п.
>Я думаю это не про кложу как раз.
Да, я как раз и имел в виду, что если клиент, то, быть может, лучше раст вместо кложи\кл. Но раз на беке, то похуй.
>В этой либе слишком мало функций для преобразования коллекций.
Всего там хватает, я сам ею пользуюсь. Просто апи немного непривычный
>Может ты знаешь еще какие нибудь либы, для работы с данными в CL?
Да полно, стоит только пошерстить quickdocs, cliki, но своего оптимизатора, как в series, они не имеют.
>но в кложа для моей задачи выглядит в разы вкуснее.
От десяти крат проседания по скорости - великовата цена за косметику.
>Всего там хватает, я сам ею пользуюсь. Просто апи немного непривычный
Хорошо, попробую разобраться с апи.
>От десяти крат проседания по скорости - великовата цена за косметику.
Скорость разработки для меня важнее.
Че то совсем не заходит. Я думал сяду почитать доки, и сразу начну писать на лиспе, но че то сложно. Поэтому я быстро пробежался по practical common lisp книжке, но все равно не понимаю что и как. Что можешь посоветовать почитать, чтобы с языком освоиться?
http://maria.cloud/
шутка
Можешь еще land of lisp глянуть, если любишь смехучки, или a gentle introduction to symbolic comptutation, если совсем для нубов, но тащем-то pcl имхо лучше. А что именно непонятно-то?
Приятное чтиво, кстати:
https://twobithistory.org/2018/10/14/lisp.html
How Lisp Became God's Own Programming Language
Удваиваю pcl, как введение вполне сойдет. Также можешь полистать кукбук из шапки.
Можешь пояснить, почему ты вместо предлога "про" используешь предлог "за"? Ты латентный хохол?
я щас сделал лимит памяти неограниченный, эта хуйня пропала
поясни, почему она вылезала раньше
>тащем-то pcl имхо лучше
Я его бегло, но полностью просмотрел.
>А что именно непонятно-то?
Работа с пакетами, со стандартными коллекциями. Макросы - я глянул две главы про них в pcl. Основную идею понял, но так и не смог понять, когда и какими символами экранировать s-выражения, чтобы они не выполнялись + не понял, как бороться с протеканием абстракций в макросах. Апи для работы с файлами - зашло плохо. А вот апи для работы с директориями вообще не зашло. С CLOS тоже не разобрался. Обработку ошибок оставил на потом, потому что и так много пробелов. Про работу с зависимостями вообще ни слова не было в pcl. Как то так. Где про все это можно разузнать?
Видимо потому что раньше у тебя кончалась память?
Блядь, анон, ты вообще никакой информации не предоставил, не сказал, что ты делаешь и какая у тебя ошибка, и мы тут должны гадать, что там у тебя. Если ты "увеличил лимит памяти", то наверное это про память в куче.
>Работа с пакетами
defpackage да in-package - вот и вся работа.
Подробнее о пакетах можешь тут почитать: http://www.flownet.com/gat/packages.pdf
>со стандартными коллекциями
А что с ними-то непонятного? Вроде бы ничего принципиально отличающегося нет.
>Где про все это можно разузнать?
Все перечисленные тобою вопросы рассматриваются в cookbook. Ссылка в шапке.
>defpackage да in-package - вот и вся работа.
>Подробнее о пакетах можешь тут почитать: http://www.flownet.com/gat/packages.pdf
Спасибо, анон. Я прочитал, но в этой ссылке, как и в pcl рассказывается про то, как символы в пакеты собираются. Но это не то, что мне нужно. Мне бы инфу про то, как с проектами работать, как зависимости ставить и как код по модулям организовывать, ни в твоей ссылке, ни в pcl этого нету. Я знаком с жс подходом. Там есть npm, + ключевые слова для импорта и экспорта. Что есть в лиспе?
>Мне бы инфу про то, как с проектами работать, как зависимости ставить и как код по модулям организовывать
Для этого не пакеты, а asdf-системы.
https://lispcookbook.github.io/cl-cookbook/systems.html
Вот почитай.
>Там есть npm
Аналог npm/cpan в лиспе - quicklisp.
Спасибо за ссылку, но там нету того, что мне нужно. А именно работа с зависимостями и неймспейсами в проекте.
Похоже я слишком тупой, чтобы разобратсья с asdf. Я уже полгугла прочитал, но так и не смог понять воркфлоу в кл...
Да не, тут дело не в тебе ящитаю. Go to the dark side...http://leiningen.org/
>>282105
Я не читал, но наслышан. Если еще не знаком с макросами, то наверное норм.
>Да не, тут дело не в тебе ящитаю. Go to the dark side...http://leiningen.org/
Ну и чем твоя кложа лучше cl?
Задания не сложные, но времени и желания))) нет а для зачета надо
за деньги
писать сюда @atom1_1
Поясните нахуя это всё нужно?
CL
Scheme
Бля, хуею с дебилов, которые идут ВАЙТИ и сливаются, когда ОКАЗЫВАЕТСЯ_НАДО_ПРОГРАММИРОВАТЬ.
Ладно там ебанутые алгоритмы, гауссы-адамсы, там шизоидные математики изложат материал так, что пиздец, но тут тупа фп.
PHP
Нодежс
Ну кложа сейчас на коне. Я хз на кой тебе общелисп использовать
Но лучше взять питон, там будет нормальное гуи и библиотеки
Почуствовал себя сынком ёбаным. Пойду учить матчасть и курить мануалы. Спасибо за мотивацию.
Это копия, сохраненная 2 февраля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.