Лиспы - семейство языков программирования. Характерные особенности лиспов: динамичность, гомоиконность (код как данные), программируемость.
{Основные диалекты} :: Common Lisp - разрабатывался как промышленный язык, пригодный для широкого спектра применения, из-за чего имеет достаточно объемную спецификацию. Является мультипарадигменным (процедурщина, функциональщина, ооп (CLOS)), с сильной, динамической типизацией. Есть опциональная декларация типов и частичный их вывод в некоторых реализациях. Описание особенностей: http://habrahabr.ru/post/143490 Основные реализации: - свободные: SBCL (нативный код), Clozure CL (нативный код), ECL (через сишку), Clisp (байт-код; небольшой размер образа; похоже, заброшен), Clasp (LLVM; ориентирован на интероп с C++), ABCL (байт-код JVM), CMUCL, GCL. - коммерческие: LispWorks, Allegro CL, Scieneer CL, mocl :: Scheme - это минималистичный лисп, пригодный в основном для обучения, исследований. Наиболее практичными реализациями являются GNU Guile и Chicken Scheme. :: Racket - развитие PLT Scheme. Racket включает в себя много подъязыков (typed racket, lazy racket, frtime racket, Scheme стандартов r5rs и r6rs). :: Clojure - для тех, кто считает, что из смеси явы и лиспа может получиться что-то хорошее, или тех, кто интересуется креольскими языками, есть отдельный тред. Тред утонул, дом сгорел, отец-подлец бросил, поэтому поживёт сиротка пока у нас. Мальчик со странностями, но хороший, не обижайте. Шапка треда здесь https://rentry.co/9ve9d
Но общие черты есть. Конкатенативные языки стремятся к простому синтаксису, гомоиконности, вполне обладают функциональной базой (вычисление с помощью композиции).
А ещё их мощным плюсом является то, что они просто донельзя просты. Пока у многих языков реализация интерпретатора/компилятора является по сути чёрным ящиком с множеством магических вещей (типа GC, EventLoop, RefCounting, итд), то в конкатенативных языках даже GC не нужен, ибо нахуя, если переменных нет.
В чем отличие точечной пары от списка? Я думал, что (1 2 3 4) - это просто сокращенная форма для (1 . (2 . (3 . 4) ) ), соответственно (1 2) и (1 . 2) - это одно и то же. Но вот на ЛОРе пишут, что это разные вещи, мол, в NewLisp неправильно сделано.
>>3145063 И в чем здесь отличие Форта от Паскаля или Си, кроме синтаксиса? Привычное понимание переменной - именновая ячейка памяти, содержимое которой можно читать и изменять. Т.е. вместо MOVB (1000), 123 или POKE 1000, 123 можно записать x:=123 или 123 x !
Вот в Erlang нет переменных, только аргументы функций и локальные константы. Соответственно x:=x+1 или x @ 1 + x ! не напишешь, а для изменяемого состояния нужно использовать рекурсию.
>>3145069 > И в чем здесь отличие Форта от Паскаля или Си, кроме синтаксиса? Насчёт Форта не знаю, но в других конкатенативных языках, типа Joy у языка действительно другие семантические свойства.
>>3145069 > Вот в Erlang нет переменных, только аргументы функций и локальные константы. Под переменными я имел в виду именно аргументы и константы.
Они есть в аппликативный языках, но не в конкатенативных. Там используется бесточечный стиль.
К примеру, в аппликативный языке мы пишем так: fn x = print(x + 1) Или более наглядно в лиспе: (define (fn x) (print (+ x 1)))
В конкатенативном же: : fn 1 + print
Тут отличия совершенно не в синтаксисе, а в том как вычисления выполняются.
Нет стека переменных, нет стека вызова функций. Есть только датафлоу. Это всё очень облегчает реализацию языка, даже не не уровне простого синтаксиса, а простого способа вычислять. Даже GC не нужен.
>>3145074 > Нет стека переменных, нет стека вызова функций. Есть только датафлоу. Это всё очень облегчает реализацию языка, Брейнфак еще проще в релизации!!!
>>3148976 > идеи которого Идеи лиспа: гомоиконность и мощнейшые макросы (которая к примеру позволяет добавить завтипы и линейные типы в язык). Он может иметь любой синтаксис и любую семантику.
Ни один из перечисленных тобой языков этими свойствами не обладает.
Вот ты можешь в джаву, го, дарт встроить зависимые типы и вывод типов по Хиндли-Милнеру.
>>3149150 >встроить зависимые типы и вывод типов по Хиндли-Милнеру. >А в лишпе это просто делается макросами Ну, не прям уж ПРОСТО, но по крайней мере это возможно сделать. https://github.com/coalton-lang/coalton вот как раз такой проект для любителей ХМ, монадок и борщелиспа
Нравится Clojure, но не нравится, что вместо документации на оф.сайте какой-то набор блогпостов, разрозненные статьи в разных местах. И ещё что это нормально - собирать стек с нуля, буквально на каждый чих искать какую-то отдельную микрозалупу. Ну это касается веба и новичков, типа меня, потому что я вообще не шарю, а тут каждую хуйню надо подбирать, о которой я вообще не слышал даже никогда и не знал, что они существуют. Видел на эту тему пост на реддите, 6 летней давности, там чел тоже сокрушался. Видимо за 6 лет нихуя не поменялось. А жаль, прошёл несколько туториалов(встроенный в calva, несколько бесплатных книжек по основам), мне понравилось. Но нужно иметь бэкграунд предметной области, при чём не самый базовый, с кондачка не вкатиться. Может в других лиспах другая картинка, но сомневаюсь.
>>3148976 Но эти фишки вставлены через жопу в уже переполненный и уберусложнённый синтакс, которому лишь бы поддерживать ОО. В лиспе ты просто напишешь код, а с другими языками и их заморочками будешь бороться. Даже с питоном.
>>3222618 Угу, "просто пишешь", а потом материшься, потому что непонятно, какого хуя оно не работает, хотя должно. Как в каком-нибудь C++, где надо знать костыли всех стандартов. Какое же говно этот лисп.
Вот на JavaScript лямбды какие надо (если бы не было шизоидных преобразований типов, был бы идеальный язык).
>>3228397 Все есть, в полноценном виде, не как у эрланга/пролога. >>3228405 Это разные пространства имен для символов, в зависимости от контекста будет взято значение из таблиц переменных или функций. Согласен, решение хуйня, потому что кроме возможности назвать переменную list и т.п. ничего не дает, но на самом деле писать funcall/function надо довольно редко даже в весьма функциональном коде. если это так важно, то пробуй схему. https://stackoverflow.com/questions/1020968/separate-namespaces-for-functions-and-variables-in-common-lisp-versus-scheme >>3228405 >Вот на JavaScript лямбды Нет, алсо, после "жс" дальше можно не читать. >если бы не было шизоидных преобразований типов Если ты пишешь в 2024 на жс вместо тс на своем макакофронте, то ты долбаеб со скилбокса видимо.
>>3228464 Я понимаю, если бы ты в пример привел Хаскель и Окамл, там действительно сделано как надо, но ты какую то хуйню из 90ых притащил и еще на типы пожаловался, хотя эту проблему в жс давно решили, но ты, в силу своей отсталости, даже про это похоже не в курсе.
>>3228397 >гомоиконности Значение знаешь? >>3228414 > потому что кроме возможности назвать переменную list и т.п. ничего не дает https://docs.racket-lang.org/gui/button_.html Даёт возможность не изобретать на каждый род сущностей по конвенции именования, чтобы не отстреливать себе ноги, случайно перекрыв локальной переменной пакет, класс, функцию, макрос, перезапуск и т.д
>>3237481 перечень людей, кто хочет вместо полноценного языка со всем из коробки на уровне примитивов юзать прикрученную сбоку на макросах дрисню: конец списка
>>3245159 Скажу тебе по секрету, далеко не всем заказчикам есть дело до используемых технологий. Можешь хоть на бреинфаке с апл писать, лишь бы поставленная задача была решена.
>>3245795 где угодно договаривайся с тимой все равно если на выходе тупо докер контейнер то все равно на чем писать у меня в конторе так на эрланге пишут, такая же нишевая хреь как лисп
Я правильно понимаю, что в cl в вебе у вас всё делается дедовскими способами, просто есть веб сервер и всё, остальное надо писать самому? И ни о каком интерактивном вебе искаропки не идёт речи(максимум вебсокеты)?
>>3246279 Пачка это 3 штуки на всю Россию? Ну да, чуть побольше чем у лиспа, но программистов у него примерно столько же, лисп хотя бы в парочке вузов встречается.
У эликсира хотя бы человеческая(одна из лучших) документация, есть отличная поддержка разных редакторов, менеджер проектов mix и т.д. А скобочники за 146 лет существования лиспа так нихуя нормально и не сделали. Единственный полноценный редактор у них это емакс(пиздец), типа очень быстро в нём работать. Сука ты на нём пишешь не отрываясь по несколько часов что ли? Нет, ты точно также сидишь, думаешь, что-то пробуешь, потом эвалишь и так по кругу, где бля скорость нахуй. В одной операции, которая нужна примерно никогда? Хуита короче. Просто не экосистема, а какой-то балаган.
>>3246812 >clhs/clus нечитаемая хуета если ты считаешь это нормальным, то ты походу из сторожки своей не выходил лет 40 >плагин для своего вскода плагины есть, и вроде даже не один, но не сравнится с функционалом той же кложуры, максимально примитивная хуета, что есть, что нет да и в целом почему в cl не запилили за столько лет нормальной инфраструктуры, тот же квиклисп как я понял по сути каждый раз загружается в репл при инициализации новой сессии, т.е. ебать костыль
>>3246998 >нечитаемая хуета Да я уже понял, что с чтением у тебя сложности, даже шапку никак осилить не можешь. Там есть ссылка на документацию в современной верстке, а там, в свою очередь, ссылка на ещё одну - пользуйся. Ну или не пользуйся. >плагины есть, и вроде даже не один >но не сравнится с функционалом той же кложуры Какой ты пробовал и чем не сравнится? >тот же квиклисп как я понял по сути каждый раз загружается в репл при инициализации новой сессии, т.е. ебать костыль Вот это да! Ух, а какие непотребства динамический компоновщик выделывает - тебе лучше вообще не знать
>>3247394 ну я так и думал, что ты охранитель, вот поэтому лисп и находится на уровне засохшего кала, потому что нет человеческих условий даже просто начать что-то делать
Во многих проектах видел упоминание ocicl и clpm в качестве альтернативы quicklisp'у. Что за покемоны и кто из них теперь главный? Квиклисп уже можно закапывать? Помогите разобраться
>>3246585 никогда не понимал подобные визги какой тулчейн тебе нужен? сырцы это просто текст, лисп машина это просто лиспмашина хуй знает что тебе нужно чтобы писать тексты и пихать их в лиспмашину ну вот что? смузи?
алсо по сабжу треда вы ваще компилите свои коекаки в бинари? или в объектники? или похуй?
>>3250383 ну и поставь себе слайм, или еще какой плагин хуягин их сейчас силлиарды вот блять ноют ебаные нытики аррря как писать букафки я нимагу печатать у миня адин палиц а не восимь рук пук хрюк аря хартьфу блять
>>3250367 почитал сей материал, благодарочка лень искать в кукбуке поэтому спрошу: можно ли скрестить объектник лиспа с объектниками например сишки и зашить в бинарь? вроде бы есть трансляторы лисп ту си, но этот путь мне не очень нравится
ну допустим на лиспе фибку хуйнуть (сам прото и тело функции), а на сихе мэйн и вызов с параметрами пользователя
такой вот простецкий пример чтобы вычислить фибку до миллионного числа допустим, но на традиционных декларативно императивных языках, чтобы не сильно бошку ломать об лисп
>>3250768 >с фаслом чо можно наколдовать? Ничего. Только загрузить в образ. К тому же, формат фаслов не документирован и может меняться от версии к версии.
Общелисп с батарейками: https://ciel-lang.org >- Is CIEL yet another language re-design? >- Absolutely not. CIEL is plain Common Lisp. We don't redefine the semantics of the language. CIEL is a collection of useful libraries, shipped as one Quicklisp meta-library, a core image and an executable.
итак встала хуем задача написать очередную тулзу под лисп а в частности лиспкомпилер да да я вкурсе что sbcl итак компилит сырцы хуе мое речь как раз пойдет об этом неудобство заключается в том что строчку (compile-file "filename") нужно держать в сырце, а я хочу оставить сырцы без этих лишних телодвижений
итак что мы имеем: сырец <filename.lisp> sbcl zsh (bash cl)
что я хочу: $ ls filename.lisp
$ cl filename.lisp $ ls filename.lisp filename.fasl
$ cl -b filename.lisp $ ls filename.lisp filename.fasl filename.exe*
я вот думаю, что нужно снять копию с сырца, дописать в копию враппер defun main(), дописать в копию последней строкой функцию компила (соответственно если флаг был то компил в бинарь, если флага не было - в fasl) и затем в хидден режиме этот модифицированный сырец скормить серверу, чтобы он ничо не пукал в консоль, но высрал файлик, затем удалить промежуточный мусор
звучит как задача для мейка, но я не хочу плодить мейкфайлы для всяких хеловордов на лиспе, а потому мне нужен либо баш, либо bin/cl
затем надо просто прописать очередной алиас в zshrc: alias cl='compile-lisp.sh' сунуть эсаш в юзербин и сделать его экзекьютабл
так как тут тред лиспа - помогите с bin/cl скриптом для этой хуйни? я только начал изучать лисп (да и в баше не шарю), но тулзу для удобства пользования очинь хочица
>>3252178 Не только, это ещё и альтернатива почившему cl-launch -- пускалки скриптов. Твой пример как раз оттуда. Показываю, как пользоваться: 1. ros init yopta # генерируешь скелет скрипта Successfully generated: yopta.ros 2. Открываешь своим любимым редакторомемаксом и пишешь свой скрипт. Вот тебе пример с зависимостями: https://dpaste.org/bNDSv 3. Запускаешь ./yopta.ros Первый запуск потребует какое-то время на компиляцию всех зависимостей 4. При необходимости создаешь бинарник: ros build ./yopta.ros
>>3251341 Только тебя на эти 7 ваканский один хуй не возьмут потому что ты кроме смузиегвого джаваскриптопитона с 10000 ваканский ничего не осилил, ну и нахуй ты тут перед нами выебываешься?
>>3252240 Ты какую проблему пытаешься решить? Из твоей шизофазии сложно что-то понять, можно только догадываться. Ясно только одно: ты явно делаешь что-то не так. Тебе нужен инструмент для превращения скриптов в исполняемые бинарники или что?
>>3253847 Система мониторинга и управления, SCADA выходит. Что-то я не вижу 2х зарплат как ОП пишет. Может немножко выше среднего, но гораздо больше вкусных вакансий по Python/Go/Rust. Наверно надо ждать западный хаир, там будет вкуснее надеюсь. Щас 250к, 13 лет.
>>3260868 R5rs самая маленькая, r7rs современнее. А так зависит от того, для чего спеку читаешь - мне как энтузиасту зашла r7rs своей лаконичностью и выверенностью. Только дин диспатча не хватало, но он прикручивается как и половина фич через макросы+cps
Вкачусь в тред с тупым вопросом: почему в CL принято устанавливать модули quicklisp'ом? В линуксах, например, не очень приветствуется метод установки тех же питонячьих модулей pip'ом и они разбиваются на пакеты конкретного дистрибутива. В CL же подобной тенденции нет. Во всех дистрибутивах (кроме мб guix'а) модули ставятся quicklisp'ом. Есть ли в этом сакральный смысл?
Вроде бы у Racket'а комунити меньше, но при этом они имеют свой оверлей в генте:
>>3266091 >почему в CL принято устанавливать модули quicklisp'ом? Потому что удобно. >Есть ли в этом сакральный смысл? Встречный вопрос: если ли сакральный смысл в дополнительном опакечивании для целого зоопарка дистрибутивов?
>>3266095 > если ли сакральный смысл в дополнительном опакечивании для целого зоопарка дистрибутивов?
У тех же дистрибутивов линукса, например, не принято использовать сторонние пакетные менеджеры для system-wide вещей, т.к. это усложняет отслеживание версий модулей/пакетов и может превращать систему в свалку без централизации управления системными либами. У мейнстримовых дистрибутивов (арч, генту, дебиан) подобное прослеживается с тем же перлом, руби и питоном. Но вообще не прослеживается с общелиспом.
Да и опакечивание делается пользователями конкретного дистрибутива, не для зоопарка в целом. Но то, что вообще никто не захотел заморачиваться с этим языком — немного интересно стало.
>>3266107 >сторонние пакетные менеджеры для system-wide вещей Пакеты для cl не являются общесистемными и нужны только во время разработки, ибо софт распространяется в виде цельных образов.
>>3267432 format t, а не format nil. С nil он просто возвращает отформатированную строку, а с t эквивалентно format standard-output equal неуместен, для сравнения чисел есть = setq использовать не надо, это рудимент, вместо используй setf, а именно в этом случае - incf Ну и вообще, ты зачем за макрос руками работаешь? У loop же есть конструкция :for :to. А так две ошибки допустил, инкремент и проверка условия не в тех местах.
>>3267538 чота я пока не могу в функциональный стиль лямбды эти ваще не даются ну в процедурном канешн ничо сложного (кроме того что тут чота все макросами обмазано)
Хочу сделать макрозамену foo2, которая использует foo1. >(defmacro foo1 (msg) (format t msg) ) >(defmacro foo2 (msg) (foo1 msg) ) >(foo1 "test1") >(foo2 "test2") Ошибка какая-то. foo1 отдельно вроде выполняет, а через foo2 не хочет... Хочу сделать как в си - >#define foo1(msg) printf(msg) >#define foo2(msg) foo1(msg) - чтобы было понятно.
Потом ещё такой вопрос - как убрать кучу текста от sbcl при ошибках? Под сотню строчек вылетает на 1 ошибку. Нафига столько? Какие там флаги проставить?
И где вообще полноценное описание всяких закорючек в духе - >` ' ~ @ # : & % - и т. д.? Поисковик такое не берёт. А с этого нигде не начинают объяснение языка, хотя это основы несомненные, причём совершенно неочевидные для интуитивного понимания.
>>3268170 ># эта хуйня вроде сокращение от lamda >' а эта хуйня сокращение от quote >~ эту хуйню я встречал в принтах, начало управляющей севенции, например ~% это перевод строки как \n в си, ~a это %d в си (ну не только децималы а вообще вроде любую хуйню может выводить, мультифункциональная вставка параметра типа того)
>>3268170 >Хочу сделать макрозамену foo2, которая использует foo1. А читать ты что-нибудь не пробовал? Тот же pcl или хотя бы кукбук. >И где вообще полноценное описание всяких закорючек в духе Внезапно, в спецификации https://novaspec.org/cl/2_4_Standard_Macro_Characters >>3268250 >эта хуйня вроде сокращение от lamda #' - это не лямбда, а макрос чтения для function https://novaspec.org/cl/f_function >>3268328 Ты эту лямбду просто возвращаешь. А вызывать-то её кто будет? >но тогда есть вероятность переполнения Хвостовую рекурсию оптимизируют почти все реализации cl, хотя по стандарту не обязаны.
>>3268445 >Ты эту лямбду просто возвращаешь. А вызывать-то её кто будет? милчеловек, напиши как надо? я когда то нагугливал лямбда факториалы всякие а сейчас не могу найти, чтобы на примере применить
>Хвостовую рекурсию оптимизируют почти все реализации cl, хотя по стандарту не обязаны. на компилер надейся а сам не плошай
>>3268453 >милчеловек, напиши как надо? Как ты пытаешься сделать, так не надо. Это неидиоматичный код с неоправданным оверхедом и просто мозгоёбка. https://github.com/ruricolist/serapeum/blob/master/REFERENCE.md#iter Используй nlet из serapeum, обычный цикл или явную рекурсию, ибо переполнение стека на какой-нибудь маргинальщине типа ABCL - не худшее, что там может случиться.
>>3268508 Ты ж сам скрин с примерами вкинул, где всё есть. Если не понимаешь, как их использовать и вообще для чего они нужны, то тебе следует почитать что-нибудь более основательное, а не просто примеры кода.
>>3268720 >>sbcl --script program.lisp у меня глючит этот флаг бывает грузит, бывает не грузит так что я захожу с шоколадного >sbcl --noinform < progname.lisp >in .zshrc >alias lisp='sbcl --noinform <' мимо
>>3268730 >sbcl --noinform < progname.lisp Через конвейер он по-другому работает: дублирует строчки, пишет значения выражений (со звёздочкой); вроде интерпретатора что-ли. В итоге вывод самой программы увеличивается в 4 раза и выглядит размашисто. Может и это всё тоже можно убрать флагами? noinform только приветствие убирает. ПС: noprint, нашёл. Теперь удобоваримо. ) Спасибо.
>>3268729 >Удобно Гораздо удобнее, чем твои посты придумывать.
>>3268784 еще можно бинарь собрать и не париться правда бинари на лиспе большие по размерам а по скорости я их не тестил, у меня нет профайлера вот бы кто сравнил с сишкой
>>3268787 >в емаксе почему в этой хуйне в цветовых схемах не работает face number? он типа должен декорировать циферки как в виме, но нихуя мб ты знаешь ответ
>>3267790 для функциональщины лучше схему/ракетку/кложур бери коммон лисп больше оопшный/процедурный, дрочить лямбды там можно конечно, но не так удобно как в языках выше
я правильно понимаю что (or) это какой то экстендед тернарник? написано что выражения вычисляются слева направо пока какое то из них не вернет тру так выходит из простейшего OR можно свич слепить, напихать в него вызовы и пускай себе щелкает слева направо, как если бы это был свич (или в других языках селект кейс) сверху вниз пока не найдется первый тру кейс
я все еще не могу понять нафига в CL напихали так дохуя всяких макросов
вот если есть OR то нахуй тогда нужен COND? начинает вонять избыточностью плюсов...
>>3272384 c++ джава и питон тоже мультипарадигмальные но не будешь же ты в них фп дрочить? если хочешь фп то либа схема либа мл языки типа хаскеля и окамла
>>3272396 >экстендед тернарник в некотором смысле да это вообще-то макрос, ты его можешь сам за минуту написать >COND он для другого нужен, это как свич на условиях типа ``` (case t ((= 0 1) 1) ((= 0 2) 2) ((= 0 0) 'ok) (t 'default)) ``` только то что выше для CL некорректно а cond вместо case t уже все делает нормальным
>>3145074 Современное железо сплошь контрол флоу, то есть датафлоу приходится либо эмулировать как в джаве, либо перегонять на в контролфлоу представление. Датафлоу неэффективен, он типобезопасен.
>>3273487 Нет. >REPL (от англ. read-eval-print loop — «цикл „чтение — вычисление — вывод“») — форма организации простой интерактивной среды программирования в рамках средств интерфейса командной строки.
Почему значение переменной можно звать только без скобок? Это же пиздец как выбешивает, ты только начал понимать закономерность этого ебаного ((())) вот те и на. Как лисп вообще видит что-то не в скобках нахуй?
>>3273908 В лиспе ты не сохраняешь программу как таковую - она создаёт мини-копию репла, по сути встроенный компилятор. Считай что каждая отдельная программа компилируется ин риал тайм при работе. Ты на ходу можешь теребить код.
>>3275042 Так а почему функцию нельзя вызвать тем же макаром? Однохуйственно же, значение переменной ты вызываешь в консоль или результат работы функции.
>>3275221 ну ты конечно привел пример ты бы еще про ардуину вспомнил кажется лисп это ультрахайлевл бай дизайн, а писать на нем ось лейеред микропиську все равно что байтоебить на жабе
>>3273908 Выполняет код. Под капотом может быть как интерпретатор, так и компилятор. В случае sbcl - второе. >>3275221 >то тут уже без стейта (и сайд эффектов) никак Лисп - мультипарадигменный, ФП даже не является основным из подходов, не говоря уж о чистофункциональном. >>3275250 >ты бы еще про ардуину вспомнил http://www.ulisp.com/ > а писать на нем ось лейеред микропиську https://github.com/froggey/Mezzano
>>3275263 >ссылочки по-твоему я сказал что этого нельзя делать? я сказал что лисп инструмент не для этого или мы должны уподобляться всяким шизам и писать шейдеры на пыхе? нет конечно. считаю твоя аппеляция инвалид отклонено
>>3275267 >по-твоему я сказал что этого нельзя делать? Нет. По-моему, ты просто имеешь крайне поверхностное представление о сабже. >>3275250 >кажется лисп это ультрахайлевл бай дизайн Тебе кажется. В общелиспе есть инструменты и для низкоуровневого программирование, и по "ссылочкам" примеры их применения, а ulisp - как раз "инструмент для этого".
>>3275296 диалекты лиспа - да сидел такой же шиз безработный и пришла ему мысль слепить себе инструмент для ковыряния микроконтроллеров, ну и слепил теперь сидит в треде и с пеной у рта доказывает что лисп про микрухи в то же время дефакто стандарт индустрии - плюсы по понятным причинам
>>3275292 Ну что же ты :( Такими знаниями обладаешь, а не хочешь делиться. Мужики с 80х годов в неведении, на лиспах ОСи пишут. За столько лет не нашлось им такого светила, кто указал бы, в чем они не правы.
>>3275304 >в чем они не правы ну и где твои мужики типерь? што с ебалом? узнали? согласны? вас постигла судьба рубишизов, рыночек распределил всех по нужным этому миру шконкам
>>3275308 >ну и где твои мужики типерь? Те самые? Уже на пенсии. А новых практически нет. Symbolics прогорел, неправильно выбрав вектор развития. ИИ-пузырь лопнул. Передовые разработки (в т.ч. концепцию гуи и в частности окон) растащили более предприимчивые бизнесмены. А современные школьники, вроде тебя, только слышали звон, мол, ФП, ИИ и скобки. Поэтому сообщество очень малочисленно, крупных проектов почти нет.
>>3275545 в репле интерпретирует вычислил выражение и результат высрал в ответ скомпиль в бинарь и запусти правда он ничо не высрет в консоль, так как в этом коде нет принтов
Когда вы ввели команду `(+ 5 5)` в REPL (Read-Eval-Print Loop) среды SBCL (Steel Bank Common Lisp), система выполнила следующие шаги:
1. Чтение (Read): REPL считывает введённое выражение `(+ 5 5)`. 2. Оценка (Eval): Выражение оценивается. В контексте Lisp, это означает, что функция `+` вызывается с аргументами `5` и `5`. 3. Печать (Print): Результат вычисления, который равен `10`, выводится на экран. 4. Цикл (Loop): REPL возвращается в начальное состояние, ожидая следующего ввода.
Компиляция или интерпретация?
SBCL, как и многие другие реализации Lisp, использует компиляцию в машинный код для выполнения выражений. Это означает, что даже в интерактивной среде REPL, выражения компилируются перед выполнением. Таким образом, когда вы ввели `(+ 5 5)`, SBCL скомпилировал это выражение в машинный код, а затем выполнил его, чтобы получить результат `10`.
так сикундачку... палучаица я магу сделать демона для серва, который будет чекать дэйт/тайм файлика (ну как мейк по той же логике) МОДУЛЬНЕЙМ.лисп и если он изменился схавоть его через load и крутить обновленную версию, а устаревший луп модуля брейкнуть
>>3285966 Во что вкатываемся? В прошлом веке кложура была популярной. А щас она как будто пропала с радаров? Не то чтобы кложура была настоящим лиспом, конечно.
>>3286004 >Я в другую религию ударился на какое-то время В секту переписывателей подался, да? >Че с ней случилось то? Харизматичный лидер ушел, у последователей опал хер, в итоге рассосались по новым игрушкам. Остался только тонский и ещё полтора аутиста. >Столько хайпа было. Хайп - штука недолговечная.
>>3288131 Он давно уже доэволюционировал, если ты про то что умеет CL, см cl-lib.
seq.el это более новая либа, которая выглядит как стандартный функциональный набор, в каком-нить жс, что как по мне намного удобней, потому CL примитивы застряли в 80ых.
>>3288140 >Он давно уже доэволюционировал, если ты про то что умеет CL, см cl-lib. Сходу бросается в глаза, что пакетов ещё не завезли, иначе не было бы этих вот seq-some, cl-getf. >seq.el это более новая либа, которая выглядит как стандартный функциональный набор, в каком-нить жс Я бы сказал, как в каком-нибудь CL, лол. Примерно 3/4 из CL, но имена местами изменены на более общепринятые. Только take, drop и group с хаскеля стащили.
>>3288140 >seq-reduce (function sequence initial-value) >reduce function sequence &key key from-end start end initial-value >seq-position (sequence elt &optional testfn) >position item sequence &key from-end test test-not start end key А, так они опциональные аргументы выкинули. Фууу, за это дизлойс.
>>3288220 Да кто ж сомневается, что и так работать будет? Но неудобно же.
>>3288241 Вот у меня есть проект. Как мне найти все использования конкретного `some` в нем? Если мне не изменяет память, тулинг вокрул CL в такое просто не умеет.
>>3288325 Если я правильно помню, оно худо бедно работало только для публичных глобальных функций. А типа, кто юзает вот эту приватную функцию поправь терминологию сам хуй.
>>3288330 Я понял что я особо не трогаю конфиг своего вм вообще после изначальной настройки, поэтому динамичности как у стампа мне особо не надо. dwm за глаза хватает. Впрочем, его еще и легче править на лету, чем stumpwm.
>>3288332 Да не, слайму похуй экспортируется символ или нет. Я вот сейчас буквально stumpwm ковырял, постоянно пользовался sly-who-{calls,references} - всё отлично работало.
>>3288346 Хер знает, не могу сказать что у меня хорошие от этого процесса воспоминания. Ну может когда у меня будет очередной приступ тинкеркрастинации, гляну еще раз.
>>3288585 Есть супер простая задача. Есть директория, в ней лежат csv файлики. Каждый надо распарсить, удалить дубликаты из колонок по определенным правилам, сгенерить sql и вставить его в базу.
>>3288617 >Сколько боли бы это вызвало. Зависит от СУБД и объемов. Но если у тебя не десятки гигабайт и bulk insert не нужен, то, скорее всего, ноль боли. >Мне просто было любопытно как бы это выглядело на общелиспе. Любопытно — сделай. Разомнешь серое вещество.
>>3290889 Да уже разобрался. Описывал метакласс для прозрачного доступа к атрибутам в sysfs и нужны были прокси-слоты. Короче, определил метакласс, классы direct-слотов, effective-слотов и метод slot-value-using-class и его setf-версию, которые читают и пишут из/в sysfs. Работает, но мне не нравится, что место под эти слоты выделяется в объектах. Нет, мне не жалко этих скольких-то лишних байт на объект, но перфекционизм не даёт покоя.
Звали в сбер. Они купили продукт по страхованию написанный на листе. Готовы обучать, тк я на листе не писал никогда. Не взяли, потому что не решил в тестовом задания со * В первой надо было писать процедуру на sql Во второй выводить самые толстые файлики через консольный git
Более подходящего треда нет, спрошу тут. Кто-нибудь мне может объяснить, какого хуя в APL выражение ≤\1 0 0 1 0 1 0 возвращает 1 0 1 1 1 1 1, а не 1 0 1 1 0 1 0? Я джва годадня убил на отладку своего говнокода из-за этой хуйни. Предполагаю, что ответ "просто потому что". Но как тогда добиться ожидаемого поведения оператора scan?
https://extemporelang.github.io/ > Extempore is a programming language and runtime environment designed to support cyberphysical programming, where a human programmer operates as an active agent in the world. >You might have seen Extempore used for livecoding—making live music & visuals with code—and it's certainly very good at that, but Extempore's ambitions are broader :)
>>3339766 Тебе ссылку на переводчик с английского дать или что? >Хард риалтайм на нем можно писать? >where a human programmer operates as an active agent Лол, а ты сам сможешь?
>>3349672 Базовый - специальный оператор if https://novaspec.org/cl/f_if В стандарте есть также макросы when, unless, cond, or, and, разновидности case, которые в этот if раскрываются.
>>3349749 Бери common lisp. Реализацию любую на выбор: >>3142890 (OP) >Основные реализации: >- свободные: SBCL (нативный код), Clozure CL (нативный код), ECL (через сишку), Clisp (байт-код; небольшой размер образа; похоже, заброшен), Clasp (LLVM; ориентирован на интероп с C++), ABCL (байт-код JVM), CMUCL, GCL. >- коммерческие: LispWorks, Allegro CL, Scieneer CL, mocl >>3349767 >(interactive как-получить-аргументы) Это emacs lisp - язык расширений емакса, как можно догадаться из названия. Похож на общелисп и даже медленно и планомерно стремится в него эволюционировать, но пока всё никак.
Посоветуйте простую реализацию ГУИ на лиспе чтоб поиграться. А то тут чёрт ногу сломит, лтк установи, связи с тсл установи, какую то поеботу из 90ых поставь.
>Autism spectrum disorder (ASD) is a complex developmental condition involving persistent challenges with social communication, restricted interests and repetitive behavior.
>>3384163 Уж не знаю, было ли у дедов что-то кроме балансировки скобок, но у современных лисперов обычно что-то такое http://danmidwood.com/content/2014/11/21/animated-paredit.html Ну и вообще, рекомендую сразу брать нормальную среду разработки емакс с нормальной интеграцией с реплом. Одна из главных фишек лиспа именно в интерактивной разработке наживую можешь погуглить что-нибудь вроде lisp live coding, если не понимаешь, о чем я.
>>3382019 > Yukari Hafner Ага, то есть единственный способ получить девушку, что любит программировать, да ещё и на лиспе - это взять мужика и отрезать хуй? Окей. Понял-принял. Почему, сука, именно я? Зачем, блядь, так много думать? Почему бы не бухать в падике с пацанами, потом не перейти на хату, где празднуют как откинулся браток, вызывают шлюху для гостей и распечатывают ящик водяры. Потом на завод, потом Машку обрюхатить, а потом в 35 уже в могилку. Изи же? Изи.
>>3384163 >>3384233 >Одна из главных фишек лиспа Всуну свои пять копеек: Одна из главных, но лисп этим не исчерпывается.
В смысле, если голосящий с пеной изо рта зилот испугал тебя своим БЕЗ РЕПЛА НЕ ЛИСП @ БЕЗ СЛАЙМА НЕ ЛИСП: можно и без этого жить, особенно если ты энтузиаст (ака борщехлёб).
Поэтому если есть особо сильное отторжение к тому, что образ воспринимается как живой зерлинг, которого ты мутируешь в нужное существо - просто не используй эту хуйню. Вообще. И поджигай жопу вахтёру треда, который сразу же включит режим "НУ САМ СЕБЕ ЗЛОБНЫЙ БУРАТИНА ЗНАЧИЦА"
Походу для энтого вашего лиспа и взаправду нужно быть аутистом. Полчаса ебался с созданием локальной переменной, пока не дошло спросить чатгопоту, что же это такое на самом деле. Цитата: "Двойные скобки в let нужны потому, что список переменных и их значений даётся в виде списка списков"
Какого хуя авторы мануалов не пишут про эту поеботу сами?
>>3386731 Ты что читаешь? У тебя там примеров кода нет что ли? >>3386735 Ты, скорее всего, сам не уточняешь, какой именно лисп. На такие тривиальные вопросы даже тупенькие модели в состоянии ответить.
>>3386741 >Ты что читаешь? У тебя там примеров кода нет что ли? Анси лисп. Вот как из пикрила можно понять, что let это не оператор присваивания, а хитровыебанный манипулятор списков?
Из прочитанного я решил так, автор решил изъебнутся с декларированием выражения внутри переменной, заебись, но я хочу создать простой пример для работы.
(let (x 1) (x)) - так в моём понимании работает создание переменной - я создал собственно имя и забиндил его ко значению, а затем использовал его в теле. Но таким образом выдаёт какую то ошибку в лямбда что то там
>>3386753 >что let это не оператор присваивания, а хитровыебанный манипулятор списков? Там буквально написано, что это оператор, вводящий новые локальные переменные. Ты этот кусок читал вообще? Разжевано - подробнее некуда. >>3386758 (let ((x 1)) x)
>>3386758 >(let (x 1) (x)) - так в моём понимании работает создание переменной - я создал собственно имя и забиндил его ко значению, а затем использовал его в теле. Но таким образом выдаёт какую то ошибку в лямбда что то там Let может объявлять много переменных за раз.
Как ты поймёшь, когда заканчиваются объявления и начинается тело let'а? Или для тебя объявление переменной должно быть инструкцией, как defparamter, чтобы можно было как в сях мешать инструкции и объявления?
>>3386990 У тебя переменные ссылаться на предыдущие объявленные не могут. И время вычисления не соответствует расположению в коде. Я бы вот так сделал https://ideone.com/qXgxxm
>>3142890 (OP) Бля ну почему эта ваша ракета такая тормозная. Это же просто сраный интерпретатор схемы, почему он сука занимает памяти как браузер с открытым ютубом.
>>3142890 (OP) Моя цель - выучить emacs lisp для написания плагинов. Сейчас программирую на си-подобных языках, лисповый код выглядит по-марсиански, поэтому ищу полноценный учебник для начинающих. Но, как выяснилось, для elisp такого учебника нет, есть только справочник на gnu.org, который рассчитан для тех, кто знает какой-то лисп и им осталось вникнуть лишь в очередной диалект. Какой диалект лиспа ближе всего к elisp и для которого есть вышеназванный учебник? В интернете часто рекомедуют "Practical Common Lisp", но, ознакомившись, стало ясно, что это никак не тянет на учебник для начинающих.
>>3395390 Elisp ближе всего к common lisp'у, но немного архаичный. Там до сих пор динамическая область видимость у переменных по-умолчанию, например. >В интернете часто рекомедуют "Practical Common Lisp", но, ознакомившись, стало ясно, что это никак не тянет на учебник для начинающих. Для начинающих в общелиспе или в программировании вообще? Если первое, то pcl - нормальный учебник с хорошей практической частью, рекомендую. На гитхубе есть перевод на русский. Если второе, то хз, для совсем вкатунов, наверное, ничего нет.
>>3401071 > срач > гомотопическая теория типов > garage > whey protein > пепе > татуированный бимбоунитаз > Украина В этой картинке прекрасно всё. Джоконда.
>>3419613 Боишься упустить непереводимые словообороты и неповторимый стиль изложения автора? Не повторяй ошибок других айтишников. Если будешь пренебрегать чтением на родном языке, то станешь косноязычным уебаном, который толком не может изъясняться ни по-русски, ни по-английски.
>>3419684 >Я свободно владею английским, зачем мне чей-то перевод? Затем, что ты не умственный геракл, чтобы читать и параллельно переводить материал, в котором ты только пытаешься разобраться. Затем, что восприятие через твою разреженную и сильно усечённую семантическую сеть неносителя языка, да ещё и не погруженного в языковую среду, не только огрублено и значительно постеризовано, но и ведёт к расщеплению знаний. Т.е. грубо говоря, у тебя появляются практически изолированные семантические подграфы, в значительной мере усечённо дублирующие уже имеющиеся структуры.
>>3420523 Для чтения книг нет необходимости погружаться в т.н. языковую среду, перевод на русик может быть а) некорректным; б) содержать отсебятину. Из предисловия к одному переводному изданию: "Таким образом, отредактированный русский перевод в его окончательном виде – это скорее переизложение начального материала, обеспечивающее его читабельность для русскоязычной аудитории; фактически это книга, написанная заново." Кстати в России практически невозможно достать технические книги не на русском, т.е. это означает, что какую-то очень хорошую книгу ты вообще не сможешь купить в бумажном виде. Зачем так делать? Это типо как украинцы запрещают людям на русском разговаривать?
>>3420523 >ты не умственный геракл, чтобы читать и параллельно переводить материал, в котором ты только пытаешься разобраться. Потому что при чтении не надо переводить, надо понимать. А для этого не нужен перевод.
>>3424423 >Потому что при чтении не надо переводить, надо понимать. Ты не дочитал, про это вторая половина поста. >Затем, что восприятие через твою разреженную и сильно усечённую семантическую сеть неносителя языка, да ещё и не погруженного в языковую среду, не только огрублено и значительно постеризовано, но и ведёт к расщеплению знаний. Т.е. грубо говоря, у тебя появляются практически изолированные семантические подграфы, в значительной мере усечённо дублирующие уже имеющиеся структуры.
Ну и сразу говорю, что не стоит переоценивать свои навыки. Между "читаю маны и уже джва года смотрю сериалки в оригинале" и "владею языком уже почти на уровне британского неда non-educated delinquent" -- огромная пропасть. Без погружения в языковую среду такого, казалось бы, базового уровня практически не достичь.
>>3424729 Я, например, читаю книги, пишу заметки себе, пишу на форумах и т.д. Всё на английском. Среда нужна для понимания культуры в первую очередь. Но именно к языку и пониманию написанного без перевода это имеет косвенное отношение. Всякие IELTS, TOEFL и CPE можно сдать без "погружения в среду", если ты под этим понимаешь "жить среди носителей". Поэтому не думаю, что лично я переоцениваю свои навыки. Да, у меня есть пробелы в словарном запасе академического уровня, мало опыта в говорении. Но это не мешает мне читать книги на английском и не заниматься при этом их переводом в голове, а сразу поглощать информацию.
>>3424423 >>10к Они на амазоне примерно столько же стоят, до гойды у людей была возможность их заказывать. >>3424729 >Без погружения в языковую среду такого, казалось бы, базового уровня практически не достичь. Говно без задач, если читаешь технические книги, тут скорее нужно погружение в предметную область.
>>3425298 >слагать предложения грамотно не умею сам Я просто начал заметки вести на английском. Сначала будет косноязычно, но со временем будет лучше и лучше, особенно если будешь перечитывать написанное собой через какое-то время. Тут главное, чтобы тебе самому было интересно о чём-то писать. И обязательно своими словами, без исключений.
>>3436609 А почему бы и не изучить, тем более раз другие языки "понатыкали" у него разных концепций? Чем больше знаком с первоисточником, тем более понимаешь наследников
>>3420523 >Затем, что восприятие через твою разреженную и сильно усечённую семантическую сеть неносителя языка, да ещё и не погруженного в языковую среду, не только огрублено и значительно постеризовано, но и ведёт к расщеплению знаний. Т.е. грубо говоря, у тебя появляются практически изолированные семантические подграфы, в значительной мере усечённо дублирующие уже имеющиеся структуры. Что за говно ты высрал? Я иногда думаю на английском. Когда у меня в голове есть концепция, но я помню её название на ангельском, а на орочьем надо вспомнить ещё - это типа "расщепление"?
А почему ты упустил, что эта концепция вообще говоря у меня уже есть внутри головы? И проблемой возникает лишь непрерывное изложение на одном языке - то есть перевод концепции с внутреннего кода моего сознания на языковой?
Ты впариваешь мне реальную дичь сейчас, паря. Ответом тебе будет эталонный "За слова отвечаешь?". За ответ "отвечаю" без цитирования источников твоих охуенных знаний - ебут в жопу, это сразу говорю.