Лисп - семейство языков программирования. Характерные особенности лиспов: динамичность, гомоиконность (код как данные), программируемость. Основные диалекты— Common Lisp - разрабатывался как промышленный язык, пригодный для широкого спектра применения, из-за чего имеет достаточно объемную спецификацию. Является мультипарадигменным (процедурщина, функциональщина, ооп (CLOS)), с сильной, динамической типизацией. Есть опциональная декларация типов и, в некоторых реализациях (sbcl, например), частичный их вывод.Описание особенностей: http://habrahabr.ru/post/143490Основные реализации:+ свободные: SBCL (нативный код), Clozure CL (нативный код), ECL (через сишку), Clisp (байт-код; небольшой размер образа; похоже, заброшен), Clasp (llvm; ориентирован на интероп с c++), ABCL (байт-код JVM), gcl, cmucl+ коммерческие: LispWorks, Allegro CL, Scieneer CL, mocl (для программирования под ведро и ios)— Scheme - это минималистичный лисп, пригодный в основном для обучения, исследований. Тем не менее, Racket вполне практичен. Racket включает в себя много подъязыков (typed racket, lazy racket, frtime racket), включая схему стандартов r5rs и r6rs.— Clojure - Стильный, модный, молодежный лисп с бóльшим уклоном в функциональщину, иммутабельными структурами данных, поддержкой параллельщины с транзакционной памятью, агентами. Ориентированность на JVM сильно отразилась на дизайне языка, что многим не нравится.— Hy - Lisp-синтаксис для Python с анафорическими макросами— Emacs Lisp - его область применения ограничивается емаксом. Является наследником ТОГО САМОГО MacLisp'а.— Tcl - скриптовый язык с немного наркоманскимстранным синтаксисом. Из коробки множество батареек на любой случай жизни, среди которых неповторимый Tk. Язык очень удобен для написания скриптиков, особенно когда к ним требуется приделать графический интерфейс.— Rebol— PicoLisp - Наркоманская хуита— newLISP - Скриптовый лисп с компактным и быстрым интерпретатором и батарейками на любой случай жизни. В первую очередь предназначен для скриптоты, которую обычно пишут на perl, python, tcl, sh: обработка текстов, работа с сетью, базами данных, взаимодействие с ОС, построение графиков и т.п.Список возможностей: http://www.newlisp.org/index.cgi?FeaturesОтличия от других диалектов: http://www.newlisp.org/index.cgi?page=Differences_to_Other_LISPs Как изучить?— Common Lisp + Practical Common Lisp http://www.gigamonkeys.com/book/ или русский перевод — http://lisper.ru/pcl/ + On Lisp http://www.paulgraham.com/onlisp.html + Common Lisp HyperSpec http://www.lispworks.com/documentation/HyperSpec/Front/ — стандарт языка + Art of Metaobject Protocol — подробное описание MOP и CLOS + Попрактиковаться можно на Exercism'е http://exercism.io/languages/lispАлсо, годная статья про проектирование eDSL'ей на CL http://swizard.info/articles/solitaire/article.html — Scheme + http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html + Racket Guide + SICP (это скорее вводные лекции по программированию, а не учебник по схеме, но тоже пойдет) + Попрактиковаться можно на Exercism'е http://exercism.io/languages/scheme — Clojure + Programming Clojure, 2nd edition (для новичков) + The Joy Of Clojure, 2nd edition (есть есть бэкграунд в Лиспе или ФП) + Попрактиковаться можно на Exercism'е http://exercism.io/languages/clojure— Hy + Официальный сайт http://hylang.org/— Tcl/Tk + Официальный учебник http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html + Документация по tcl http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm и tk http://www.tcl.tk/man/tcl8.6/TkCmd/contents.htm + Статьи про Tcl и Tk на wikibooks с примерчиками https://en.wikibooks.org/wiki/Category:Tcl_Programming + TkDocs с примерами на tcl, perl, ruby http://www.tkdocs.com/tutorial/index.htmlСреды разработкиОдно из основных преимуществ лиспа в сравнении с языками с циклом разработки "написал → перекомпилировал → запустил в отладчике" - поддержка интерактивно-итеративного метода разработки. Но без инструментария, обеспечивающего полноценное взаимодействие с реплом, оно сводится на нет. Поэтому писать без использования нормальной среды - значит упустить важную особенность языка. !!Чтобы не пердолиться с емаксом, лучше можно взять уже преднастроенный spacemacs ( https://github.com/syl20bnr/spacemacs ). — Common Lisp + Emacs + SLIME - самый лучший вариант. + vim + SLIMV + LispWorks + AllegroCL IDE упаси боже + Eclipse + cusp + <Что-нибудь для сублайма/атома уже запилили, наверное?> — Scheme + Emacs + geiser + drRacket — Clojure + Emacs + CIDER + LightTable + Vim-fireplace + Cursive Clojure (IntelliJ plugin) + Counterclockwise (Eclipse plugin) — Tcl + Emacs + tcl-mode (только подсветка синтаксиса и простенькое взаимодействие с реплом, но жить можно) Библиотеки— Common Lisp + Quicklisp ( https://www.quicklisp.org/beta/ ) - CPAN из мира CL + Quickdocs ( http://quickdocs.org/ ) - документация по всем пакетам из quicklisp + Cliki ( http://cliki.net/ ) + Обзор экосистемы общелиспа на швабре ( http://habrahabr.ru/post/265589/ ) — Scheme + Racket: http://pkgs.racket-lang.org/ и http://planet.racket-lang.org/ + Chicken: http://wiki.call-cc.org/chicken-projects/egg-index-4.html + http://snow.iro.umontreal.ca/?tab=Packages + http://www.schemespheres.org/spheresПредыдущие треды: http://arhivach.org/?tags=3055,113Шапки: https://titanpad.com/x87hR0KJ2w
Аноны, какой самый живой лишп пригодный для вебразработки?
>>705174 Common lisp
>>705174Общелисп: https://github.com/TatriX/blue-water
>>705174Clojure, Kawa.
>>705186Толсто. Во всех смыслах толсто.
Реквестирую годный туториал по сигналам и рестартам в общелиспе.
>>705206http://lisper.ru/articles/restartsВидел где-то ещё один, но сходу не припомню.
>>705215Читал оригинал. Ну ок.
>>705206http://malisper.me/2015/08/05/debugging-lisp-part-4-restarts/
>>705251Ага, этот бложик тоже читал.
https://github.com/vseloved/lisp-crash-ru
Сап, гайз. Я тут решил окончательно упороться и запилить маленький вебапп на лиспе. Насколько полноценны местные фреймворки? CSRF, JSON-RPC, REST, ORM и другие баззворды поддерживаются?
>>705484Наркоман штолле сука? Пиши код блеять.
как вообще на вашем лишпе что-то серьезное писать?это же половину времени будешь изобретать велосипеды, которые уже изобрели в други языках
>>705734Попробуй библиотеками воспользоваться. Говорят, помогает от велосипедостроительства.
>>705206чтобы понять и начать использовать как работают исключения в мейнстрим языках, нужно сломать головучтобы понять как работают продолжения, сопрограммы в альтернативных языках нужно тожеа соответсвенно чтобы понять работу сигналов в лиспе нужно этот заеб перемножить один на другой..
>>705807Пожалуй.
Музыкальный бамп.https://github.com/byulparan/cl-colliderhttps://www.youtube.com/watch?v=JivNMDUqNQc&feature=youtu.be
http://picolisp.com/https://habrahabr.ru/post/247965/Лиспаны, что думаете насчёт этого странного, наркоманского язычка, именуемого пиколиспом? Вроде и из коробки всего полно, и ffi не замороченный, и веб-гуй пишется удобненько, и на ведро ставится без всяких танцев. Но какой-то он... ебанутый.
>>706007Наркомания какая-то. В топку его.
>>706098Мне кажется, что не так все однозначно. Надо бы придумать, где его можно применить.
>>706292Но зачем? Хотя про ведро где почитать можно?
>>705188Хули толсто, Clojure - самый живой Lisp, а JVM - самая популярная платформа, с ней и посредством Kawa (Scheme) с успехом поиграться можно.
>>706390Уползи обратно в свой жава тред.
>>706390Но кложура - не лисп. Это вообще не язык программирования, а такой хипстерский дсл для скриптования жавы. Специально для тех, кому надоело программировать на xml.
>>706400>>706436Лол. Понятно все с вами, ребята, уползаю в свой Scala-тред.
>>706464Хорошо что ты знаешь своё место.
>>706464Тебя и там за кложу ссаными тряпками закидают.
Добавил в шапку документацию по Emacs Lisp и выделил Racket в отдельный язык.
Как думаете, почему лисп потерял популярность в 90-2000?
>>706909Упал с 2% до 1%? Ну хуй знает.
>>706909Возможно, его вытеснили скриптопараши вроде перла, питона и пыха везде, где все возможности лиспа все равно были не нужны. В целом появляется все больше и больше специализированных языков и они утаскивают прогеров из метаязыков. А чтобы вытащить из жабы быдлокодера, ему еще нужно объяснить, зачем ему все эти фичи.
>>706944Но как так вышло? Ведь было же сообщество. Куда оно проебалось?Впрочем, пых питон и прочая дристня действительно гораздо более дружелюбны к новичкам.
>>706951Похуй, пиши код.
>>706951Возможно, это связано со смертью лисп-машин.
>>706965Ты ебанутый, лисп-машины нахуй не нужны. Питономашин же нет.
>>706953Так я пишу. Хочу просто больше народу в секту.>>706965Как и не появились джава-машины.
>>706976Форт-машины зато появились, предлагаю начать на них фапать.http://www.greenarraychips.com/
(cons vsl '(not dead))
Поцоны, поясните за пик >>649344 (OP)Зачем лисп похитил питона?
>>707315Потому что питон зло, очевидно.
Накидайте видосиков по лиспу.
>>708050Накидал, проверяй
>>708461Но за щекой ничего нет. Ты правильно хоть накидал?
Когда окончательно родят R7RS-large?И когда запилят единый репозиторий библиотек с пакетным менеджером для всех реализаций схемы?Спасибо.
>>708642Ебать ты шизофреник.
>>708633Есть мнение, что не нужно - все живые Схемы обзавелись собственными расширениями над стандартами.
>>708633>И когда запилят единый репозиторий библиотек с пакетным менеджером для всех реализаций схемы?Лол. Никогда. Это ж схема.
>>708647Это путь в никуда.
>>708658Путь вникуда - это сравнимые реализации одного стандарта.
>>708783Да. Но так уж случилось, что реализаций несколько. Исправить это можно единым репозиторием библиотек.
>>708936Просто смирись, что Chicken Scheme это один язык, а Guile это другой.
пацаны, извечный вопрос, почему ни один диалект lisp не пригоден для промышленного использования? Где фреймворки? Где комьюнити? Этого всего нет.
>>7101811. Потому что ты школьник и не можешь в Google.2. Потому что 90 процентов программистов - долбоебы, которые не могут в SICP.
>>710186> Где комьюнити?> Потому что 90 процентов программистов - долбоебы,С таким подходом коммьюнити и не будет.
>>710181Общелисп и есть самый настоящий промышленный язык. Учись пользоваться гуглом.Фреймворки и сообщество есть, но немногочисленгое. Но не количество главное.
>>710230так никому коммунити уровня тупых жабаиндусов или go-детей и ненужно
Реквестирую лисп челендж.
Как сделать чтобы показывало цвет в емаксе?
>>711858Гуглом пользоваться научись, полуебошный.https://julien.danjou.info/projects/emacs-packages#rainbow-mode
>>711868Спасибо, пидор.
>>711778Я бы за, но ближайшую неделю поучаствовать не смогу
>>712121Вообще я просил придумать какую-нибудь задачу, а не предлагал соревнование.
Угадай мелодию.
>>712203Подмосковные вечера, давай сложнее.
>>712528
>>712528В музыкалке учился что ли?
Есть ли возможность написать код на Lisp и залить в Ардуино?
Я слышал, что в лиспе можно накодить функцию, которая будет способна строить другую функцию, а потом ее можно исполнять. Где это искать? Подскажите.
>>713527Лол, это называется "макрос".defmacro гугли
>>713527Еще как вариант это называется "замыкание": http://letoverlambda.com/textmode.cl/guest/chap2.htmlНо тут функция не совсем строится.
>>713537>>713538(defun thank-you () (format t "спасиб"))
>>713593(cons 'vsl '(not dead))
>>713650>'vsl '(not dead)Спорное утверждение.
Кто-нибудь интересовался диалектами на которых до стандартизации лиспа пытались пилить ИИ?
>>713525А чо нет-то.
>>713688Ты про маклисп что ли?
>>713796Интерлисп еще, например.
>>713866>>713796Они выглядят весьма похожими на общелисп или елисп.
>>713883>Критики нового стандарта указывали на его раздутость и чрезмерное внимание, уделённое практическим требованиям, что привело к нарушению «функциональной чистоты» Лиспа и увеличению объёма поддерживающих его Лисп-систем. >Более существенно то, что Интерлисп базируется на динамическом связывании, тогда как все новые версии Лиспа — статические.Кто-нибудь пояснит что за "функциональная чистота" такая нарушилась после стандартизации и что за динамическое связывание было вместо которого запилили статические?
>>713894Может быть, под статическим связыванием подразумевается лексическая область видимости?А функциональной чистотой, насколько мне известно, ни маклисп, ни интерлисп никогда не отличались.
Emacs подсвечивает код как Emacs Lisp, не могу заставить подсвечивать как Common Lisp.Та же ситуация с Flycheck.
>>714630Выкини emacs.
>>714630Заскринь модлайн.
Антош, где-то видел список основных операторов (что-то около 12) на которых написано все остальное. Подскажи пожалуйста - никак не могу найти. Хочу писать только на них
>>715234Ебанутый что-ли?http://www.lispworks.com/documentation/HyperSpec/Body/03_ababa.htm
>>715323Спасибо!. Не ругайся. Нюфак же
>>715323Хотя я видел другой список. Там точно был cond
>>715373Ну так для какого тебе диалекто то надо?http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Special-Form-Syntax.html
>>715415В общем посмотрел я на определения функции cond when and в sbcl. и все они написаны с использованием только if. Получается я могу только на if все писать. Вот же откровение.
>>715373cond это не "основной" оператор, а сахарок для if, реализующийся на макросах. Как в лиспе, так и в схеме.
>>715438Ага, я понял.>>715436
Научите вставлять лиспокод в другой язык, например, Питон и чтобы оно работало. Или хотябы киньте ссыль на хороший гайд по теме для ньюфага.
Как сделать так, чтобы одна функция обрабатывала данные, поступающие в реальном времени, обрабатываемые параллельно 2(или больше) другими функциями? Я слышал, что Лисп может в подобную параллельную обработку или что-то такое.
>>715613http://www.gnu.org/software/guile/>>715625http://www.cliki.net/concurrency
>>714630Всё ебать я разобрался, спасибо пидоры за поддержку.
>>715731> 2017> emask
>>715731Ты уже большой. Видишь, сам справился.
У меня какая-то иррациональная тяга к лиспу, как у некоторых русских к сербам. Что со мной?
>>715840Ты смайлодаун.
>>715842Маловероятно. А ты хуй)
>>715840Потому что лучше интерактивной разработки пока ничего не придумали, очевидно.
>>715859Она есть дохрена где кроме лишпа.
Что думаете про http://www.buildyourownlisp.com/ ?
>>715863>Learn CЛерн си ан билд ватэвер ю факинг вонт. Бат нобади байс ит.
>>715862Например?
>>715871REPL в любой скриптопараше присутствует. Это как минимум.В не-скриптопараше тоже нередок.
>>715863Для этих вещей у нас есть хаскель.
>>715874Не путай репл с интерактивной разработкой. Это не одно и то же.
>>715876В чём разница?
>>715878В том что при интерактивной разработке ты наслаиваешь приложение постепенно, как будто создаешь скульптуру. Ты мгновенно получаешь обратную связь и работаешь с образом своего приложения, а не работаешь по стандартному циклу "Отредактировал, сохранил, перезапустил". Реплы во всем что я пробовал кроме лиспа годятся только для проверки тривильных вещей, а не для полноценной разработки.
>>715885Говно ваша интерактиваня разработка. На нормальной статике в нормальной можно написать целый модуль без твоих циклов "Отредактировал, сохранил, перезапустил", потом этот модуль собрать, и он будет как положено работать.
>>715927Глядите-ка, жабомакака подтянулась, которая по 3 минуты ждет пока у неё хэлло-ворлд запустится.
>>715935Ну да, жабка же единственная статика, и нормальная статика, ничего слаще редьки ты не пробовал. Scala компилирутеся в 2 раза дольше
>>715935Зато фрактал на клиспе работате моментально :3
>>715938>фракталфакториал или фибоначчи, че там у вас за хеловорлд
Вскукарек :: [кококо] -> вскукарекВскукарек<кококо> вскукарек = new Вскукарек<кококо> ();
>>715955Это хачкель или жаба?
>>715955>(cons 'вскукарек '(кок покпок))Че сказать то хотел?
>>715958(with-вскукарек (ко-ко-ко))
>>715733Если не emask, то кто?
>>716002Ничего, так и приходится жрать это говно =(
>>716006SICP закончу и выкину к ебанной матери.
>>716006>>716007Да ты же говноед.
>>715613Для вставления в питон есть Hy в шапке.
(funcall (if (> (random 10) 5) #'+ #'-) 3 4)VS((if (> (rand 10) 5) + -) 3 4)Дискасс.
>>716500бля, ну это специфический момент, тут-то не про синтаксис, а про устройство интерпретатора(одно окружение или несколько),
>>716566Это все тот же всем настоебавший lisp-1 vs lisp-2.Лично мне больше нравится явный funcall, потому что я вообще не с первого раза вдуплил в середине другого куска кода что ((XYNTA) .!)))345)) это вызов функции собранной в результате вычисления.
>>716570так а что же еще, но мне (function +) (или во что там раскроется #'+) кажется немного хуетой, вообще, конечно дело вкуса
>>715958>(setq вскукарек '(кок покпок))
Лиспаны, а макросы, которые могут создавать макросы это только в лиспе так можно или в других языках тоже есть подобное?мимо-могу-немного-в-питон
>>717428Любые макросы могут создавать макросы.
>>717428Можешь генерировать macrolet-формы, например.
>>717660Сам себе отвечу.http://stackoverflow.com/questions/2429240/c-preprocessor-macro-defining-macro
Ответьте без проверки через репл, чем равно значение: (let (#'42) (+ . #'5))
чтяднт?Надо выделить ЦЕЛЬ в ((1(2(3 4 цель))вот так все работает (car (cdr (cdr (car (cdr (car (cdr (car '((1(2(3 4 цель))))))))))))Но когда я пытаюсь в сокращение(caddadadar '((1(2(3 4 цель)))))то* (caddadadar '((1(2(3 4 цель)))))debugger invoked on a UNDEFINED-FUNCTION in thread#<THREAD "main thread" RUNNING {1002A8AEE3}>: The function COMMON-LISP-USER::CADDADADAR is undefined.Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Exit debugger, returning to top level.(SYMBOL-FUNCTION CADDADADAR)0]
>>717832и что тебя удивляет? caddadadar - неопределенная функция, вложенные c*r определены до 4 уровня http://www.lispworks.com/documentation/HyperSpec/Body/f_car_c.htm
>>717842Шпасибо, т.е. это никак c*r не сократить? Странно, что в учебнике задание еще и сократить.
>>717847можно (caddar (cdadar '((1(2(3 4 цель)))))), а можно и самому определить(defun caddadadar (x) (car (cdr (cdr (car (cdr (car (cdr (car x)))))))))
>>717856(destructuring-bind ((_ (_ (_ _ x)))) '((1 (2 (3 4 цель)))) x)
>>717865Точнее вот так(destructuring-bind ((nil (nil (nil nil x)))) '((1 (2 (3 4 цель)))) x)
Для тех, кого тоже заебывает вспоминать директивы формата: C-c C-d ~
>>717866та я вообще на общелиспе мало писал, больше scheme------------>>717856
>>717776Либо нил, либо ошибка.
>>717776>>717898ну, я вот думаю, 47, логика такая(let (#'42) (+ . #'5))(let ((function 42)) (+ . (function 5)))(+ . (42 5))(+ 42 5)47А вообще, поясни потом правильный ответ, и как до него дойти
>>717904Все правильно думаешь, хуле уж тут.Эвалишь код, потом эвалишь + и все становится понятно.
Хочу обновить slime-proxy, чтобы РЕПЛ для parenscriptа юзать. Все правильно делаю?
>>717856>(caddar (cdadar '((1(2(3 4 цель))))))Так и есть скорее всего, ибо на том месте про определение функций в помине нет.
А покажите свои конфиги на emacs.
Какой способ именования лучше: "foo?" или "is-foo"?Первый вариант чуть-чуть лаконичней, но я спотыкаюсь на его чтении. Второй вариант длиннее, но в голове его удобно проговаривать — "из фу" он и есть "из фу", пауз при чтении не возникает.Что является стандартом и почему?
>>718284У меня spacemacs. Конфиг показать не могу, т.к. ноута под рукой нет, но там и смотреть-то практически нечего.
>>718295foo-p или foophttps://google.github.io/styleguide/lispguide.xml?showone=Predicate_names#Predicate_names
>>718295Или если речь о схеме, то, кажется, общепринятым является foo?
>>718295Это тебе вот такое дерьмо удобно проговаривать: (if is-foo) ?is-* имеет смысл как свойство объекта.(if shit.isTasty) ; читается нормальноОба эти варианта читаются отлично:(if foo?)(if foop)
Я занимаюсь по http://progbook.ru/lisp/409-hyuvenen-mir-lispa-tom-1-vvedenie-v-yazyk-lisp.html Мир Лиспа. Том 1. Введение в язык Лисп и функциональное программированиеВ отличии от Practical Common Lisp там практические примеры после каждой главы и подача материала легко усваивается. Что скажите про нее? Щитаю, что она оптимальна для ньюфага.
>>718415PCL не для ньюфагов, а для тех кто знаю как программировать впринципе, хочет выучить CL.
Схемачи, почему этот код не запускается на линуксе?https://ideone.com/hESYOY
>>718434https://ideone.com/WUgQliВ рекурсивном вызове accumulate проебал combiner
>>718444Все равно ошибка.default-load-handler: expected a `module' declaration found: something else in: #<path:/root/Documents/SICP/1.32/1.32.scm> context...: standard-module-name-resolver
>>718461Запускаю так: ./1.32.scm
>>718462хз, с raket не работал, мб сверху, после#!/usr/bin/racketнаписать#lang racket
>>718479Но я ж хочу использовать интерпретатор r5rs.
>>718479Надо же, это сработало.
>>718485так задание же из sicp, там и mit-scheme подойдет(с ней sicp и проходил в свое время)
https://itch.io/jam/spring-2016-lisp-game-jam
Поясните за #. макрос. Читаю спеку и не понимаю, нахуя оно нужно.
>>719246Вроде это для макросов ридера, т.е. переопределение того, как текст преобразуется в s-exp, например, можносделоть инфиксную арифметику и т.д..
>>719253Пропущеная скобочка это не шутки.
>>719255https://github.com/quickdocs/quickdocs-updater/blob/master/quickdocs-updater.asdВот пример использования. Нахуя оно там?
>>719297Ну а как ты сделаешь чтобы квадратная скобка преобразовывалась в #( без макросов ридера?Или тебя что-то конкретное смущает? #\ = символ
>>719329Я спрашиваю про конкрентный макрос: #.Как им пользоваться и нахуя он нужен.
>>719458А, я хз, похоже на сокращенный eval
>>719246Для вычисления выражения на стадии чтения s-exp'а.>>719297Читает строку из файла и подставляет её в выражение, а потом уже раскрывается макрос defsystem
>>719671Ага, я так примерно и понял. Спасибо.
за спиной пара интерпретаторов на scheme, недописанные веб сервер на ней же, ворох других мелких проектов, стоит ли вкатываться в Common Lisp? Если да, с чего лучше стартануть? Интересуют темы метаязыковой абстракции, ии, возможно, анализа евстественного языка
>>720306Конечно, стоит, ведь в схеме жизни нет. Даже по меркам лиспосообщества.
>>720306>с чего лучше стартануть?С On lisp, например.
Я посматриваю за тредом иногда. Пиздец, почему такой долбоебизм царит?Кложа/Clojure охуенна. Причин несколько:- очень развитое комьюнити- иммутабельные структуры данных, что избавляет от рейс кондишенов и позволяет удобно писать асинхронный код- core/async, stm, атомарность, промисы- Clojurescript, где комьюнити тоже совершенно охуенное: есть ом, реагент, куча других либ и биндингов- Отличные макросы (да, есть и в CL)...Список достоинств можно только продолжать. Короче, реально писать не на Кложе вообще смысла не вижу. Главный недостаток это JVM с невозможностью реализовать tail call elimination, stop the world'ом (для сравнения Ерланг/Эликсир -- в BEAM такого нет, там каждый актор заводит свой хип) и долгим стартом (особенность JIT в JVM).И да, если вам понадобятся Акторы, то есть вполне рабочие биндинги к Акке.В общем, программисты выбирают Кложу, а диванные кукаретики продолжают срать под себя. Хуйню тут развели блядь какую-то.
>>720688Тебе в жаваскрипт тред.
>>720688Опять набрасываешь, ирод?На кложе никто не пишет, кроме хипсторов-вебпетухов. И то там кложескрипт, а не сама кложа.Все преимущества, что ты перечислил, сводятся на нет одним базовым принципом кложи - плотной интеграцией в хост-язык, которые имеют совершенно иную, нихуя не совместимую с лиспом идиоматику. Поэтому код на кложе, как правило, представляет из себя ту же яву/яваскрипт, но с чуть отличающимся синтаксисом и немного подсахаренный.
>>720688Не распинайся, тут сидят зашоренные шизики, для которых всё что было после 80х - дохуя сложна, нинужно и нипанятна.
>>720877лол пририсуйте туда эмблему кложи, а ебло замените на маккарти
>>720688>>720688> Главный недостаток это JVM с невозможностью реализовать tail call eliminationИспользуй loop-recur, он компилируется в цикл> stop the world'омДля больших хипов есть Zing VM от Azul> (для сравнения Ерланг/Эликсир -- в BEAM такого нет, там каждый актор заводит свой хип) Если у тебя есть большой кусок данных, то он всё равно должен хранится в хипе какого-то актора, смекаешь?> И да, если вам понадобятся Акторы, то есть вполне рабочие биндинги к Акке.Нахуй акторы, есть core.async
>>720688Но то же самое есть и в общелиспе. Только в отличие от кложи он является языком полноценным, а не дырявойыми оберткойами (таки три платформы - три разных языка) вокруг жавы, жс и додиеза.
>>720956>то он всё равно должен хранится в хипе какого-то актораВ ерлаше бинари >64КБ идут в отдельный хитровыебанный бинарный хип.>Нахуй акторы, есть core.async Это неудобно. А все кто любит чтоб было удобно берут Okku.>>720995Общелисп - обычная переусложнённая императивная говнина с макросами.
>>721051> В ерлаше бинари >64КБ идут в отдельный хитровыебанный бинарный хип.Что такое "бинари"? Большой вектори или мапа это "бинарь"? И какой в этом бинарном хипе GC алгоритм?> Это неудобно.Шта? По-твоему акторы удобнее чем CSP?
>>720995> Но то же самое есть и в общелиспе.А как насчёт> - очень развитое комьюнити
>>721133Вся его развитость заканчивается на лойсах на гитхубе, участии в хипстохакатончиках и, в редких случаях, запиливании недоделанной оберточки над жава/жс-библиотечкой.Вот у хаскела сообщество можно назвать развитым, там действительно наблюдается движение.
>>721132Что такое "бинари"? Бинарный тип данных.> Большой вектори или мапа это "бинарь"?Нiт, но при желании их обоих можно скастовать в бинари. Ну или получить такие сразу, из сети/файла/мемори.>И какой в этом бинарном хипе GC алгоритм?Висят до тех пор, пока на них не останется ссылок откуда бы ни было. В остальном как обычно.>Шта? По-твоему акторы удобнее чем CSP? Разумеется. Анониманя связь по каналам говно, работать без примитивов процесс/узел крайне неудобно. Модель акторов - это самый общий конкурентный концепт, средствами которого можно выразить большинство остальных, тот же ССS или CSP, обратное невозможно.
>>721307> Модель акторов - это самый общий конкурентный концепт, средствами которого можно выразить большинство остальныхПо твоей логике GOTO - самый удобный концепт управления ходом программы, потому что через него можно выразить все остальные.
Анончики, так уж вышло, что для экзамена мне придётся выучить autoLisp. Посоветуйте годноты.Алсо, сам уже больше года пилю бэкенд на дотнете, специальность обучения интересная, вот и не ливаю из универа
>>721357Врядли здесь кто-то из анонов хоть раз щупал этот автолисп.Если не найдется нормальной литературы по автолиспу, попробуй поверхностно проштудировать pcl (ссылки в шапке), чтобы раобраться что да как.
А я вот начал на работке на лиспе лабать. Полет нормальный.
>>723154Подробности?
>>723167Ну надо было сделать парсер одной фигни. Залабал на общелиспе. Оче годно. Плюс пробую тут на общелиспе селениум насиловать. Тоже норм вроде.
>>723173Парсер, кстати, модный. Интерфейс на clack + ningle + cl-markup + parenscript + css-lite
>>723175А чому так много либ для одного парсера? В Clojure вот один Instaparse справляется.
>>723181Это либы для интерфейса. Сам парсер юзает dexador + plump + jsown + cs-csv
>>705167 (OP)Запилил себе иконку уютную - делюсь, мало ли, пригодится кому.Тред про Emacs проебался куда-то, потому сюда.
>>723992
Допилю все методы и отправлю в квиклисп. Все правильно делаю?https://github.com/TatriX/cl-selenium-webdriver
>>724010Этот селениум через вебапи работает шоле?
>>724086Это биндинги к Selenim Server'уРаботает через REST API, да.
Мне надо построить массив, привязанный к пикселям в виде 3дэ сферы, а также чтобы в зависимости от функций, изменяющих числа массива менялся цвет тех пикселей, что привязаны к массиву. Что посоветуете для всей этой графики на лиспе?
>>724894cl-sdl2, sdl2kit, cl-opengl
>>725220Ему чето типа plotlib нужно, а не свой движок писать.>>724894Глянь вон там http://cliki.net/plotting
Гайс, помогите плиз. Нужно сделать лабу по автолиспу, а в нем я не особо шарю. Достаю из файла строку, например "-1 10 9.87 -4.08". Как мне сделать из нее лист чисел, чтобы потом их можно было отсортировать по знаку, большее/меньшее, целые, дробные и тд.
>>726923#include <common-lisp.h>Ну и дальше пишешь на общелиспе.
>>726962Надо именно автолиспом сделать
>>726923Дай ссылку на документация, сходу не гуглится.
>>727041>>727041Не понял, что именно надо?
Emacs'еры использующие org-mode тут есть?Скиньте свои custom agenda или порекомендуйте хороших, а то говно получается.
>>727048Я имел в виду что-то типа общелисповского clhs ( http://www.lispworks.com/documentation/HyperSpec/Front/index.htm ),Но уже нагуглил вот это http://stackoverflow.com/questions/15393797/lisp-splitting-input-into-separate-strings (последний ответ). Почти твоя задача, осталось только строки к числам привести. Код там, конечно, - говно а мож просто автолисп - говно, но суть должна быть понятна.
Открыли ChezScheme
>>727896https://github.com/cisco/ChezScheme
>>727896Ну и хуй с ним?
Тут ни кто для org-mode не пишет лисп-скрипты?
>>727964Там столько всего из коробки, что не приходится. Что нужно-то?
Антохи, дошел до рисовалок в SICP'е, а DrRacket не могет в элементарные рисовалки. Че делать?
>>727964Я писал для org-drill. И то не скрипт, а просто интерактивную функцию.
>>728067Как не могет? Вроде в последний раз мог
>>728077скачал sicp.plt пакет, теперь DrRacket могет в beside/below, но все равно не могет в wave/rogers
(bump)
>>728088rogers тебе не понадобится, он там для примераwave напиши сам, мудак чтоли?
>>705206Нихуя там сложного нет.Просто функции, которые вызываются в динамическом контексте.Что такое динамический контекст? Это список, хранящийся в динамической переменной, которая перебинживается дополненной cons-ячейкой каждый раз когда ты делаешь handler-bind (или там restart-bind для рестартов).Ниже про сигналы. Про рестарты +- все то же.В списке хранятся пары typespec -> функция.Каждый раз когда ты из скопа соответствующей динамической переменной выходишь, соответственно, список возвращается к предыдущему состоянию.Что происходит при signal? Она просто берет, проходится по списку, соответственно снизу вверх, получается, и вызывает все функции, для которых (typep <кондишн который ты ей дал> <соответствующий typespec в паре>) возвращает не nil.Что происходит при warn? То же самое, только если не произошла раскрутка стека, функция еще и пишет message кондишна в stderr.Что происходит при error? То же самое, только если не произошла раскрутка стека, выполняется функция invoke-debugger, которая зависит от реализации.Что такое раскрутка стека? Это процесс нелокального выхода из точки в коде. Т.е. это операторы throw, return-from и go. В процессе раскрутки стека снизу вверх вызываются защищенные формы unwind-protect.handler-case отличается от handler-bind тем что функции-обработчики он за тебя генерирует сам, и в конце каждой помимо твоего кода генерирует оператор return-from, т.е. инициирует раскрутку стека к текущему блоку.
>>732187Ебать ты наркоман. Представляю тебя плешивым дрыщем, сидящем в 6 сантиметровых очках на бабкином стуле и упарывающемся скобками.
>>732198немного не угадал
>>732205Да, про очки ошибся. В остальном все сходится.
>>732210попизди мне тут
>>732205>>732211Поймаю в Бостоне - ебальник разобью. Хотя стоп, не поймаю, тебя же не возьмут в джетбрейнс ОПЯТЬ, ХАХАХА.jdevelop
>>732224Воу воу кто ето, ето бостонский алкаш на связи!
Господа, что не так у меня в сорусе?https://ideone.com/NEDXM1
>>733468Очевидно что у тебя нет так, это Scheme, а не Common Lisp
>>73346825 строка>>(lambda (x) (x))Тут ты не возвращаешь x, а вызываешь его. Правильно будет>>(lambda (x) x)
>>732211love5an, ты шоле?
>>734250он
Привет, lisp'аны. В общем, я читал SICP, делал задачки, что-то получалось. В общем, такой вопрос: я уже прочитал 3 главу целиком, перешел к 4 и ничего не понимаю. Точнее, если напрягаюсь, то понимаю, но мне стало неинтересно. Есть ли смысл читать после 3 главы? Отпишитесь, а то я не знаю, как-то жалко бросать начатое, но в главе про интерпретатор столько всякой мути, что аж рили неинтересно.
>>736019Неинтересно - пропусти. Зачем себя мучать-то?Как заинтересует, так и вернешься.
>>736067Ну, в принципе, я тоже так думаю. Потому что, когда неинтересно, чтение превращается реально в муки.
Зацените лиспаны, прикрутил репл с автодополнением к емаксу: https://github.com/TatriX/kite-mini.elЧерез гуглодебагер.
>>736438Самое главное то забыл: для js.
>>736440А еще забыл сказать что пока оно в ветке https://github.com/TatriX/kite-mini.el/tree/dev и не готово до конца.
>>736438Хуево, что только для хрома. У фурифокса нет аналогичного протокола?
>>736448Есть. Но ебаться не хочется. Уж слишком фурифокс тормозной для разработки.
>>736067а что ему дальше останется, 5 глава, которая целиком опирается на 4ую?(из интерпретаторов ваяем компиляторы)>>736019вообще, если с английским хорошо, можешь лекции на ютубе глянуть(MIT, ведут сами Сассман, Абельсон, на рутрекере видел еще 2010 года лекции из Беркли, но не смотрел)
https://habrahabr.ru/post/282986/Сегодня утром вот поглядел видео и прочитал статью. С автором несогласен. С Сасменом, тоесть.
>>736609поясни мысль, что именно не нравится в его рассуждениях?
>>736612Я неточно выразился, я не несгласен, я просто его аргумент убедительным не нахожу. То, что теперь инжинерия поменялась таким образом, как он сказал, вовсе не означает, что тут же студентоту надо учить мануалы читать. Помему, свои костыли и велосипеды ценнее в практическом смысле, чем использование чужих. Именно при обучении, не в работе.
>>736443Автор потихоньку мержит в апстрим, а пока самое свежее тут: https://github.com/TatriX/kite-mini.elПрикрутил отправку сообщений в консоль. Например, если во время загрузки скрипта все пошло по пизде, мы увидим пикрелейтед.Обновление замыканий, конечно, охуенная вещь.
>>737261А чо там, полное обговление кода без проблем проходит? Ну т.е. допустим, пишу я код на каком-нибудь йобаскрипте, потом модуль транслирую в жс и отправляю браузеру. Он нормально обновится?
>>737909Поддержка сурсмапов в планах. Пока её нема, хотя для личного использования можно в 5 строчек написать.
>>736438Пиздуй игру делать.
Эй, лиспаны, может кто по-хардкору пояснить, как в ecl создать so-шку из asdf-системы. Пробовал так https://common-lisp.net/project/ecl/static/manual/re55.html, но чот оно на выходе выдает эльф.И ещё, кто-нибудь ковырял clasp?
>>738016Я для игры в частности и делаю. Оче удобно.
>>738265На чистом жс хуяришь? Без всяких elm, clojurescript и т.п.?
>>738268Игру-то? Да.
>>738268Ramda хотя бы используется?
>>738272А чего так? Принципиально не используешь или просто лень разбираться?
>>738276На работке пользуемся. Когда я проект начинал про неё еще никто не слышал.>>738278В данном проекте принципиально. Воообще у всех транспайлеров есть куча проблем, с которыми не очень хочется ебаться. Даже несчастный babel и тот мозг ебет, что уж говорить про остальных.
>>738278Кложурскрипт выглядит вкусно, но жаботормознутость перечеркивает все достоинства.
>>738446>Кложурскрипт>жаботормознутостьЧто?
>>738482Оно по твоему само себя компилит? Там нужен жабобол тормозной.
>>738510Разве кложескрипт не на жс написан?
>>738513Ещё тормознее.
>>738513https://github.com/clojure/clojurescript/wiki/Quick-Start> Download the standalone ClojureScript JAR.
>>738510Ты совсем поехавший?
Пока долбоебы плачут от того что нужно скачать О ГОСПАДИ JAR, стартапы на Кложуре получают миллионные фандингиhttp://techcrunch.com/2015/06/30/trucker-path-raises-20m-to-claim-the-uber-for-truckers-moniker/
>>738544С таки же успехом это дерьмо могли написать на phpscript.
>>738518Что за хуйня? В кложескрипте нет функции compile или хотя бы eval, потому что транслятор на яве^Wкложуре?
>>738558люди делятся на два типа: одни зарабатывают деньги, а другие неудачники. Сейчас деньги зарабатывают они.
>>738636Там есть eval, но для этого нужно специальный билд собирать (ибо много весит):https://github.com/clojure/clojurescript/wiki/Optional-Self-hostingА по поводу необходимости ставить JDK, то тут дело скорее в инструменте управления проектами (Leiningen), который написан на обычной JVM-ной Кложе.
>>738868> одни зарабатывают деньги, а другиесидят на трубах скобках
>>738558ПГ так не думает
>>739215Всё правильно делает, нигерам в общелисповском сообществе не место.
>>739215очевидно блядь. Кложура это лучшее что случалось с Лиспом эвар. Только нищие долбоебы до сих пор этого не поняли.
>>739784Нет, кложура слишком узкоспециализирована.
>>739809показательный даун. эталонный
>>740059Clojure объективно не дотягивает до CL.Как язык - никакой. Производительность - так себе. Ну про минусы JVM даже лень рассказывать. Там много говна, начиная от recur, и заканчивая невозможностю нормально делать hot code reload и невнятными стектрейсами.Единственно, что выделяет Clojure, это огромнейший хипстерский хайп вокруг нее, и соответственно, допизды всяких библиотек(95% из них подчиняются известному правилу, но есть и годные). Соответственно, больше людей, в том числе тех у кого что спросить можно.Думаю, причина ответа ПГ именно в этом.
>>740059Знаешь ли, далеко не всем jvm подходит как платформа, а в другие кложура by design не умеет.
>>740061> Как язык - никакой.Гораздо продуманней чем CL.> Производительность - так себе.Лучше чем у CL, если расставить пару тайпхинтов> невозможностю нормально делать hot code reloadЧто блять? Любой динамический var свапается в любой момент. Ты, видимо, не знаешь как на низком уровне делается code reload и веришь в какую-то магию.
>>740220Привет, ClojureScript.
>>740280Это другой язык с другим сообществом и библиотеками.
>>740278>Лучше чем у CL, если расставить пару тайпхинтовАга, видел я эти "пару тайпхинтов", когда код переписывается в ещё более нечитабельную яву-дрисню со скобками.
>>740278>Что блять? Насколько мне известно, там обновление кода через жопу сделано, из-за чего на ведроиде приходится сначала генерировать dex, а потом подгружать.другой анон, если чо
>>740309Нет.Сообщество то же - все кто используют ClojureScript на фронте, используют Clojure на бэке.Библиотеки, не работающие напрямую с платформой, работают и там и там.Например core.async - библиотека CSP и корутин - работает и там и там. Timbre, specter, instaparse, да практически все либы, которые имеет смысл делать кроссплатформенными - сделаны кроссплатформенными (после того как в 1.7 ввели reader conditionals).
>>740380С Андроидом ситуация такая:Dalvik не позволяет использовать classloader в рантайме. А в Clojure всё на этом построено, т.к. исполнение коде в рантайме делается через класслоадер.Поэтому для Android приходится делать AOT компиляцию и отказываться от исполнения кода в рантайме.На других JVM таких проблем нет.
>>740385>Сообщество то же - все кто используют ClojureScript на фронте, используют Clojure на бэке.Судя по проектам на гитхабе, пишут только на кложескрипте, видимо на серверную сторону выбирают что-то полегче jvm.>Библиотеки, не работающие напрямую с платформойТаких не бывает.>Например core.asyncНасколько я помню, там код продублирован отдельно для кложескрипта и отдельно для кложуры.>>740388Ну ок. А существующие объекты после обновления класса используют новую или старую версию?
>>740398> Судя по проектам на гитхабе, пишут только на кложескрипте, видимо на серверную сторону выбирают что-то полегче jvm.Из чего ты деалешь такие выводы? Не знаю ни один проект, где так делают. > Таких не бывает.Смотри список выше.> Насколько я помню, там код продублирован отдельно для кложескрипта и отдельно для кложуры.Да, действительно. Но там дело в том, что она вышла во времена 1.6, а переписывать они не стали. Посмотри остальные популярные либы, там всё через *.cljc
>>740385[code lang=lisp](:import java.lang.StringBuilder [java.io File BufferedReader BufferedWriter InputStream Writer InputStreamReader IOException])(defn read-response [^BufferedReader in] (let [sb (StringBuilder.)] (loop [sb sb c (.read in)] (cond (= c 1) (let [ret (str sb)] (print ret) (recur (StringBuilder.) (.read in))) (= c 0) (str sb) :else (do (.append sb (char c)) (recur sb (.read in)))))))[/code]Разве могут быть в __таком__ языке библиотеки, на работающие с платформой. И ты ещё что-то про бóльшую продуманность говорил.
>>740398> Ну ок. А существующие объекты после обновления класса используют новую или старую версию? Там не сам класс меняется, а используется фича исполнения кода при загрузке класса.Динамичность достигается через varы, которые можно свапать (с определённой семантикой).
>>740428Список выше.
>>740428Кстати, почему просто slurp не используешь?
>>740435Это ты у рича хикки спроси, почему он повсеместно использует подобную дрисню вместо того, чтобы один раз сделать нормальную обертку.>>740427>Из чего ты деалешь такие выводы?Я как-то искал хоть какие-нибудь проекты на кложуре. И это оказалось не так-то просто, везде один лишь кложескрипт.>>740433А, понял. Ну а с объектной системой как? Допустим, написал я в кложе класс, создал несколько объектов, а потом класс изменил.
>>740438> Это ты у рича хикки спроси, почему он повсеместно использует подобную дрисню вместо того, чтобы один раз сделать нормальную обертку.Обёртка есть c версии 1.0, называется slurp: https://clojuredocs.org/clojure.core/slurpКусок кода с BufferedReader выложен на сайте чтобы проиллюстрировать интероп с JVM. > Я как-то искал хоть какие-нибудь проекты на кложуре. И это оказалось не так-то просто, везде один лишь кложескрипт.Просто странная привычка выкладывать искходники продакшен кода есть только у фронтендчиков. И то, примеров кроме Circle CI я на знаю.> Допустим, написал я в кложе класс, создал несколько объектов, а потом класс изменил. Если ты имеешь в виду deftype или defrecord, то их можно менять в рантайме:"deftype and defrecord dynamically generate compiled bytecode for a named class with a set of given fields, and, optionally, methods for one or more protocols and/or interfaces. They are suitable for dynamic and interactive development, need not be AOT compiled, and can be re-evaluated in the course of a single session."(http://clojure.org/reference/datatypes#deftype_and_defrecord)
Что в ОП-посте делает Tcl?
>>740481>Кусок кода с BufferedReader выложен на сайте чтобы проиллюстрировать интероп с JVM. Тот кусок кода взят из реализации кложескрипта с гитхаба.
>>740487А что не так? Tcl - типичный лисп
Вот вроде послушаешь про кложуру - кажется, неплохой язык.Но начинаешь щупать, так появляется стойкое ощущение, что тебя обманули.
>>740662Нашёл. Это используется в чтении ответа от процесса ноды. В обычной жизни такое пишется нечасто.Кстати, в каких языках (кроме Эрланга) читать бинарный поток удобнее?
>>740704Поделись впечатлениями.
>>740767Да там в любой модуль загляни - везде ява-кишки ковыряют.>Кстати, в каких языках (кроме Эрланга) читать бинарный поток удобнее?Ну, как-то на общелиспе pbf разбирал. Вроде не так уж и плохо, хотя эрланговским сопоставлением с образцом было бы удобнее, да.
Clojure язык довольно убогий, но популярный.Хотя я так и не понял, почему все так хвалят его за то что он на JVM, а сами JVM не любят и стараются использовать поменьше.Ну и да, никаких ридер-макросов, код-релоад через жопу, кривое и тормозное STM, нет нормальных примитивных структур данных, нет нормального ООП, макросы говно, мультиметоды - пародия на коммонлисповые, нет сигналов, РЕПЛ ДЛЯ ЕМАКСА ЗАПУСКАЕТ ДВА ЖАВАПРОЦЕССА ПО 600 МЕГАБАЙТ ОПЕРАТИВКИ БЛЯДЬ(у того же SBCL тихо крутится 50мб от силы, и это на 64бит).ClojureScript хорош(но разве что по сравнению со скалажс и собсно жс)А еще вокруг Clojure куча тупых хипстеров и хайп, что дичайше бесит._мимо лавсан_
>>740841А что там не так с кодрелоадом, макросами и мультиметодами?
>>740845рекомендую потыкать CL, разница станет очевиднакодрелоад в JVM это само по себе анал и боль, но в Clojure это вообще смерть как закостылено. Вроде работает, но не как в CL. Макросы слабее. У них не определена семантика, меньше спецформ(macrolet? symbol macros? Не, не слышали. lexenv в макросах? Похуй, сделаем хоть чо то[тут рекомендуется сравнить с SBCL, есличо]). Мультиметоды рядом даже с CL не стояли. В CL дичайшая система обобщенных функций, которая вся выражается через MOP, и компиляцию в рантайме. Еще там классы крутые, но это отдельная история. Короче после CL - Clojure кажется поделкой на коленке.Ну и да - кто там говорил про продуманность Clojure выше? Не особо она продуманная, это скорее что-то типа Python - типа, сделаем на глазок, быстренько и красивенько, поднимем хайп, а на остальное похуй. CL же - это результат эволюции нескольких передовых лиспов из 80х плюс комитет умнейших чуваков, заседавший 10 лет.мимо лавсан
>>740851Жалко только что они из этих лиспов кучу легаси притащили. А еще напрягает что в стандартной либе нихуя нужного нету. Впрочем, есть квиклисп. Но хочется чтобы хотя бы как в елиспе было: на каждый чих готовая функция.
>>740893ну так а что им было делать80, куча лиспов, давление вендоровсейчас стдлиб кажется устаревшим, да, но тогда он был передовымалсо, рекомендую помогать мне пилить новый стдлибhttps://github.com/Lovesan/CLR/
>>740851>это скорее что-то типа Python - типа, сделаем на глазок, быстренько и красивенько, поднимем хайп, а на остальное похуйЧто не так с Питоном?
>>740953Зачем создавать новый велосипед? Почему бы не допилить сузествующий (cl21, например)?Ну и хоть бы планы/цели расписал.
>>740960А что с ним так?
>>740966я тебя спросил
>>740953>прошло полгода>200 slocДавай, удачи!
>>740953Лучше бы показал хоть один написанный тобой проект на CL.
>>740972Нет, не меня
>>740964cl21 это в осн. синтаксический сахар. А у меня там задатки на норм стдлиб, на функциональность. Слизываю с CLR потихому, но а откуда еще слизывать?>>740976работы дохера >>740960- Неконсистентность семантики("чойта тут воткунто?" пример - print - функция или встроенное чото? Или там, лямбды)- Плохая обратная совместимость, конфликт 2 и 3- Тормоза. Бля, CPython(99% питона в мире) тормозит как пиздеееееец. Бедная gentoo евпоча.- GIL- Общая, какая-то, ну не знаю, нейстройность языка. Ну вот нахуя можно использовать окружение как dict? Что за ебаный бред? Это же не скомпилировать, и не оптимизировать нормально. Что за self как явный аргумент, хотя у нас классическое классовое ООП, а не JS, и не смоллтолк? Итд.- Куча хипстеров, с говнобиблиотеками, которым дай волю, ядро прыщей на питон перепишут.- Вообще, все это easy(в противоположность simple), типа php, питона итд, оно провоцирует говнокод и непрофессионализм в программировании. А потом мы удивляемся, почему так упали рейты.- Итд. Спать хочу, забыл апрельские тезисы
>>740991два самые крутых проекта, которые я когда-либо делал для опенсорса на CL, это virgil и doors.На гитхабе есть:https://github.com/LovesanПервый - FFI с подходом полной сериализации в/из сишной памяти. Типа, абсолютно прозрачная работа с сишкой и вообще foreign кодом как с лисповыми объектами.Doors - интерфейсинг WinAPI, но самая доделанная часть, за которую мне не раз спсб говорили - это интерфейс к COM. Можно в т.ч. и создавать свои COM-сервера(для SBCL и других не умеющих в DLL только out-of-process ессно).
>>741000>cl21 это в осн. синтаксический сахар.Ну не совсем. Там больше реструктуризация, избавление от устаревешего говна, прикручивание всяких александрий.>Слизываю с CLR потихому, но а откуда еще слизывать?С дотнета шоле или того забытого проекта или он не clr звался, а как-то похоже обновления общелиспа?>Бедная gentoo евпоча.Она бедная из-за libbash, а не только питона.
>>741016да, CLR типа дуднет.Если полезть в мой код, можно наблюдать там прямой пиздинг интеллектуальной собственности
>>741019А ClojureCLR использовать не думал? Там интеграция с дотнетом теснее некуда.
Подчеркивает как unreachable code (slime + sbcl), хотя вроде все работает. Почему так?
>>706909>Как думаете, почему лисп потерял популярность в 60-70?
>>743663А вот хуй знает.[code]; 728: F7F9 IDIV EAX, ECX; 72A: C1E002 SHL EAX, 2; 72D: 85D2 TEST EDX, EDX; 72F: 7507 JNE L3[/code]Судя по сгенерированному коду, (zerop (mod ...)) на месте.
>>743663> deleting unreachable code> --> LET IF AND IF AND THE IF PLUSP > А, может быть, там подставляется проверка аргументов на неотрицатльность, а затем удаляется, т.к. из их типов ясно, что они положительны.
>>744116>>743663Похоже, так и есть.[code lang=lisp](deftransform mod ((number divisor)) `(let ((rem (rem number divisor))) (if (and (not (zerop rem)) (if (minusp divisor) (plusp number) (minusp number))) (+ rem divisor) rem)))[/code]
Поясните за ньюлисп, почему там интерпретатор 1 мегабайт весит? Разве так бывает?
>>744272Почему нет-то? Это ж просто интерпретатор, а не образ лисп-системы как у общелиспа
>>706909AI Winter
http://lisp-lang.org/Теперь и у лиспа есть хипсторский сайт. Дотянулись таки... суки
>>740701Где мои скобочкии??
>>749038]]]]]]]}}}}}
>>744283>Это ж просто интерпретатор, а не образ лисп-системы как у общелиспаА чем ньюлисп хуже/неполноценнее нормального (того же общелиспа)? Нельзя компилировать код в екзешник или что? Я просто сейчас книжку читаю http://www.fuzzylisp.com/book.html там все примеры на ньюлиспе, возможностей там явно не меньше, чем в каком-нибудь пистоне.
>>749304а откуда мысль, что он хуже, он просто другой
>>749261но они должны быть круглыми!!111 а этом вся суть нелисп!!
>>748136Как будто темку на вордпрессе глянул
Сап аноны.У меня "трагедия", я пишу на ruby за денюжку в одной конторе вот уже почти 5 лет. В последний год раби мне с каждым днем становится противен не знаю пока почему. Решил посмотреть в сторону Си, начать сначала так сказать. но нет. Читаю сейчас SICP, делаю упражнения и вы знаете, для меня будто открывается новый мир совершенно иной настолько яркий. Лисп очень крутой язык. Паралелльно посмотрел на clojure. Прочел статью Пола Грэма http://www.nestor.minsk.by/sr/2003/07/30710.htmlи тут понеслись у меня мысли. Посоветуйте мне на какой путь встать? Продолжать дальше писать на руби и не рыпаться, пересесть на Лисп? Но какой? Common Lisp? Clojure?
>>750771Ну, если найдешь работу, перекатывайся конечно
>>750771Почему "или"? Продолжай писать на руби и перекатывайся на common lisp. Если даже не найдешь ему платного применения, то получишь хотя бы полезный опыт.
>>750771не слушай этих дебилов с комон лиспом. Сейчас даже Пол советует Кложу.
>>750771Однозначно кложура - она сейчас на переднем крае во всех перспективных областях. Достаточно посмотреть на список книжек на любой помойке типа http://it-ebooks.info/tag/clojure/ . Кложуру за несколько лет продвинули в разы дальше, чем коммонлисп за все 160 лет его существования.
Не могу осилить трансдюсеры. Вроде всё понятно, но у меня какое-то постоянное ощущение, что это какое-то неправильное костыльное говно, а Рич Хикка наркоман.
>>752141http://thedeemon.livejournal.com/87320.html
>>751992А что по-твоему ещё он мог посоветовать негру?
>>752124>Однозначно кложура - она сейчас на переднем крае во всех перспективных областях.Или, если перефразировать, часть вебжавахипстеров, что не осилила скалу, использует кложу. На этом её применение заканчивается.>Кложуру за несколько лет продвинули в разы дальше, чем коммонлисп за все 160 лет его существования.Кложу никуда не продвигали, она паразитирует на жвм и лиспах.>>750771В общем, не слушай этих жвм-сектантов. Кложа, если сравнивать с общелиспом, довольно дряной язык: ни сигналов, ни нормального ООП, ни эффективных реализаций, и всё это помножается на многочисленные минусы жвм и жавы, которая там изо всех щелей проглядывает >>740428
Лиспаны, с помощью MOP как-нибудь можно внедриться в процесс генерации сеттеров? Хочу добавлять свой код к телу сеттера, но не хочу занимать after-метод, т.к. он может понадобиться программисту. Что делать?
>>752759Аноны, когда будете читать тот пост помните о том, что его пищет 27-летняя нищая пидораха, которого выперли (не взяли) со всех адекватных работ и он разразился соплями в одном из соседних тредов.А пока пидораха ныл как все плохо, Хик написал еще одну охуительную штуку.http://clojure.org/about/spec
>>752759> она паразитирует на жвм и лиспах.Ваще-то это лиспы сейчас паразитируют на кложуре. Народ сначала осваивает ее, а потом в редких случаях интересуется подножием эволюционной лестницы :)> ни сигналовЗачем они?> ни нормального ООПНормальное там ООП.> ни эффективных реализацийПод JVM и JS - какие тебе еще нужны реализации?> и всё это помножается на многочисленные минусы жвм и жавыЧасть чуда-то как раз в том, что кложура работает на жвм, интероперабельна и хорошо встроена в инфраструктуру.
>>752759>что не осилила скалу, использует кложуАга, а лисп для тех кто не осилил алгол.
>>753488Наоборот, тащемта.>>753182>> ни сигналов>Зачем они?В каком смысле? Ты не знаешь, что это такое? Или не понимаешь, как их использовать?>Под JVM и JS - какие тебе еще нужны реализации?Эффективные, написал же.>Часть чуда-то как раз в том, что кложура работает на жвм, интероперабельна и хорошо встроена в инфраструктуру.Ага, один большой неидиоматичный "плюс" >>740428Уж если бы я оказался прикованным к жвм, то предпочел бы скалу, котлин, которые намного более гармонично вписываются в жава-мир и у которых хотя бы эффективный код на выходе, или в крайнем случае саму жаву, но никак не этот сплошной недостаток с именем "кложура">>753134Эко ж тебя, успешного кложуриста-первокурсника, порвало.
>>753134>http://clojure.org/about/specР. Хикки как всегда на острие технологий.И кого ты этим хотел в лиспотреде удивить?
Всем снова здравствуйте!Спасибо всем за ответы но вы меня еще больше запутали. я сейчас решил почитать The Land of Lisp, а там посмотрю и Common Lisp и Clojure.
Сап, лиспаны. У меня тут какая-то странная проблема нарисовалась. Ставлю sbcl, ставлю на него quicklisp. Выясняется, что встроенный asdf устарел, и надо бы накатить версию посвежее. Качаю дист, запускаю install-asdf.lisp. Пробую поставить какой-нибудь пакет через быстролисп. Работает, радуюсь. Пробую сегодня - некоторые пакеты валятся с ошибкой Unknown &KEY argument :NAMESTRING При вызове uiop/pathname:ensure-pathname путь к uiop :NAMESTRING :NATIVE :ENSURE-DIRECRORY T). Как я понял, в вызов не передается путь к либе. А почему, я так и не понимать.
>>755130Отбой, все починилось установкой самой свежей версии
>>755166Версии sbcl. 1.3.5 поставил.минификс
>>754862ты либо троллишь либо троллишь.
Пробую вот на mcclim писать, а ведь вроде даже и ничего.
>>740701Tcl задрочен на строках, а в остальном схожесть с лиспом не больше, чем у других языков, на которые повлиял последний. Он не больше лисп, чем JavaScript, например. INB4 "Да я овер 100 тисиэлевых килослоков на коленке за вечер пишу, ко-ко-ко…".
>>758160Столман, залогинься.
>>758160А что "остальное"-то?
Есть смысл читать Луку Карделли?
>>758492А это кто?
>>758499))))))
Лейнаны, почясните за раницу между ракетом и схемкой? Сильна ли она?
>>759065И вообще, какие у ракеты слабые места по сравнению с common lisp/clojure?
>>705167 (OP)Я понял!!! Динамические петушки - контрамоты. Они движутся во времени назад. Как было на самом деле: протоцепепе - ЛИСП 50-80 гг. C++ 80-90 гг. Haskell - новая версия цепепе. 90-00 гг. С точки зрения лиспопетушка сначала был Хаскель, в следующей версии он деградировал до цепепе, а в лиспопетушином будущем цепепе деградирует до лиспа.А я все ломал голову, как человек может так ненавидеть будущее, так привязаться к прошлому, что пишет на лиспе? Но для лиспопетушка-контрамота лисп - это и есть будущее. А дальше ВВ2, индустриальная контрреволюция, религиозные войны, рабовладельческий строй, отрастание хвостов и подъем на деревья. Скай из зе лимит!
Лиспаны! а ваш тред хоть раз был в топе?
Почему для того чтобы нарисовать простенький график(https://goo.gl/tqHAHL) racket`у требуется несколько секунд и ~300 мб памяти. У других лиспов (sbcl) такая же лажа?
>>759118>И вообще, какие у ракеты слабые места по сравнению с common lisp/clojure?Реализация. Ракетчики так не осилили запилить нормальный компилятор.
>>759133Вангую, что эти несколько секунд уходят на (require plot).>~300 мб памятиЧто-то дохуя. Даже для ракеты и даже для его жирноватой ide.Попробуй сборщик мусора вызвать.
>>759129Лисп задрал настолько высокую планку, что ни один из прошлых и нынешних сиплюсплюсов её не достиг.
Lisp Engineer - $2500/month - WORK FROM HOMEМосква • 1 июняhttps://hh.ru/vacancy/17258963
Читаю ansi lisp. Там поясняют за указатели. Как вы вообще отличаете, когда функция работает с указателем, а когда - со значением? Тот же пример копирования списка из книги - каким боком я должен догадаться, где передается указатель, а где создается новая область памяти для значения?
>>759322Наркоман что ли? В лиспе всё есть объект, поэтому считай, что передаешь по указателю.
>>759333Окей, ясно. Там просто есть функции, которые конструируют новые объекты, и я затупил на этом примере. Башка не варит что-то. ЗЫ, а циферки типа уже по значению передаются? (setf a 1)(setf b 1)(eql a b) ->T
>>759345Зависит от реализации.
>>759216А какие слабые стороны реализации? Если говорить о скорости, то на бенчмарках racket вполне на уровне (среди других схем) - http://ecraven.github.io/r7rs-benchmarks/benchmark.htmlВ моих кейсах racket тоже оказался самым быстрым(сравнивал с guile и chicken). Расстраивает только потребление памяти и долгая загрузка библиотек. То есть главный недостаток racket - низкая производительность?>>759222>(require plot)А почему он так долго его загружает? Он его с нуля компилирует что-ли?
>>759264>5 years or above c/c++ development>the top 1% of talent>1500-2500$мда
>>759256А haskell?
Программач! посоветуй книгу по common lisp. Чаще всего рекомендуют Practical Common Lisp (пролистав ее сложилось впчетление, что она для brain-damaged), а Норвиг советует ANSI Common Lisp + On Lisp.Или лучше вкатываться в кложуру?
>>759736PCL и Onlisp
>>759488Я с общелиспом сравнивал.Все реализации схемы сосут.
>>759345В реализациях лиспа используются тегированные указатели, а числа, буквы в них упаковываются.
>>759499Так и ищут по удаленке, потому что на нормальных условиях такая работа стоит в 2 раза больше.
Значит так, лайкаем и форкаем мой CLR, новую стдлибу для коммонлиспа.Решил снова за нее взяться.Сегодня ночью впилил нормальные обобщенные словари как в дуднете, и синтаксис для них как в Clojure (типа {:a 1 :b 2})https://github.com/Lovesan/CLRПока реализация есть только для SBCL. А треды и тредпулы только под винду. Потому что я ебал линукс в рот пока не закончу основную реализацию.мимолавсан
>>759800Так, напиздел. Для SBCL-Linux треды и тред-пулы тоже работают. А вот IO первым делом будет под винду.мимолавсан
>>759800>и синтаксис для них как в Clojure (типа {:a 1 :b 2})Фууу, разные скобочки. Чем тебя вариант типа #h(:a 1 :b 2) не устроил?
>>759809хз, привычнее ля кложуреблядков, которых есть замысел переманить после дописывания
>>759811хотя мб голосование потом устроить. поменять то нехуй делать
>>759812О, придумал.#h(...) Это будут сеты. hset. Или #{}хз
>>759811Мелочь-то незначительная, а столько неудобств от неё.Никогда не понимал этих ]}]))}]>>759814#d для словарей, например. Да букв-то полно, хуле. На всех хватит.
>>759800А зачем ты ffi велосипедишь? Не целесообразнее ли взять cffi, которая де-факто стандарт?
После непродожительного паралелльного изучения Common Lisp и Clojure мое мнение:Как сферический язык в вакууме cl заруливает.Как инструмент для решения проблем рулит и педалит кложура
>>759216Зато там батарейки и очешуительные доки
>>760308блджад, если сделают эффективную реализацию и начнут пиарить, Racket может взлететь, мне кажется
>>759756Chez Scheme неплохая. Только у нее в поставке даже srfi нет
>>759755Выбрал The Joy of Clojure
>>760287ни один уважающий себя современный разработчик не выберет язык с мутабельными типами данных и отсутствием нормальных конкарренси примитивов.
>>760447Толсто
>>760450ни один уважающий себя современный разработчик не выберет язык без зависимых типов. А тем более жаву да ещё и с покореженным синтаксисом.
>>760469Не джаву, а jvm.И синтаксис гораздо лучше чем в common lisp.
>>759916Это будет библиотека абсолютно без внешних зависимостей
>>760471Маня, синтаксис в Common Lisp это вопрос решаемый не приходя в сознаниеЕсли бы ты смотрел мой доклад на ITGM, где я из CL сделал сначала JS, а потом PHP, понял бы что к чеммимолавсан
>>760474>>я из CL сделал сначала JS, а потом PHPТолку от этого ноль
> мимолавсанкто такой, чем знаменит?
>>760478Поборник лиспа и мелкософта из /c/. Вел охуительный блог http://juick.com/lovesan/ где знатно доставлял, поливая всех и вся говном. Особенно не любит швабодную ос и пиздолизов. Читать в первую очередь теги долбоебы, прыщи, *Haskell (его тоже в основном говном поливает). Не взяли в джетбрейнс. В свободное время пишет биндинги на коммон лиспе. Верит, что метапрограммирование спасет мир.
>>760479может он уже дропнулся? новых записей ни в жж, ни в жуйке, ни на лоре с 2015.
>>760481он же был какой-то пиздастрадалец омежка и заливался от этого огненой водой.
>>760481На гитхабе коммитить начал снова недавно ведь.
>>760487ага, 5 коммитов вчера, из запоя что-ли вышел?Пропил мозги нахуй.Вообще печально что архимаг забросил, тот реально лиспкун, и его вклад в рашнлиспкомьюнити на уровне ксача.
Почему в CL нельзя просто взять и передать функцию аргументом, як в Scheme? Нужно квотить, делать funcall. С чем это связанно? Я нуп.
>>760721У CL раздельные пространства имен для функций, переменных, пакетов и т.д., а у схемы одно на всё.
>>760741Предвосхищая вопрос зачем это - из-за того что в cl макросы не hygenic
>>760743Можешь раскрыть, как это может быть взаимосвязано?
>>760741А почему через лямбду можно? Если смотреть в топ-левеле, то лямбда вроде возвращает то же.((lambda (x) ( x x)) 4) <--работает((symbol-function ') 4 4) <--нет
>>760778В symbol-function подаётся '*
>>760755В Lisp 2 гораздо проще избежать коллизию имен.
>>760803Типа, логика в том, что больше неймспейсов -> меньше коллизий -> гигиена нинужна?
>>760893тут крушал поинт именно в том, что функции(которые обычно глобальные) в отдельном неймспейсе, да
>>760897ну и говно
>>760929У clojure один namespace
>>760988Там можно кастомные неймспейсы создавать.
>>761068Я имел в виду что, в кложе имен функций и переменных находятся в обном пространстве, как и должно быть в функциональном языке
Лиспач! стоит ли читать Purely Functional Data Structures?
>>761277А call/cc вам завезли?
>>761919Смешно.мимо кложурист
>>761919Нет (
>>761920А мне грустно
>>761920>>761922В какие-то ограничения жвм все упирается, что ли? В Kawa Scheme же запилили как-то.
Кто нибудь может объяснить, чего Хикки так тащится от JVM?
>>762587Ему gc самому было лень делать?
http://www.opennet.ru/opennews/art.shtml?num=44420
>>765131мне бы в джаваскрипт...
>>765144parenscript
>>765144jscl жи есть
Господа, что я делаю не так в реализации итеративного вычисления цепной дроби? https://ideone.com/7fiRh4У островных полубогов код точно такой же, но рабочий:http://wat-aro.hatenablog.com/entry/2015/10/08/061911
>>767936[code] (define (frac i) (if (__<__ i k)[/code][code] (define (recur i) (if (__=__ i k)[/code]
>>767979Рекурсивное говно, а надо сделать итеративно.
>>767996Сравнение, говорю, у тебя не то. Должно быть =, а у тебя <
>>767998>Должно быть =, а у тебя <Я спрашиваю про реализацию cont-frac-iter в моем коде на идеоне. У меня там =.
Странно, что по запросу SICP выдается столько японских сайтов. У пидорашек книга непопулярна.
>>768020А, вижу. Ты с именем там обосрался. У тебя frac-iter, а должно быть просто iter.Воспользуйся рэкетом, там подобные ошибки сразу выявляются.
>>768033У нас просто не принято вести блоги о решении задач для первокурсников.
>>768037Неа, вычисляется неправильно.https://ideone.com/64MST8
>>768053Оно и не должно: (lambda (i) 1.0)
>>768039Потому что даже их осилить не могут или пишут в блогах про "смотрите, какая хуйня случилась в этом фреймворке, и вот как я с ней справился".
>>768060Что там осиливать? Задачи рассчитаны на первокурсников.Уж не с политача ли ты залётный? Не понимаю, что за тенденция такая выставлять себя хуже в сравнении с какой-то другой нацией.
>>768083>что за тенденция такая выставлять себя хуже в сравнении с какой-то другой нациейА чем мы лучше? По технологиям мы сосем, наши бабы известны на весь мир как отъявленные шлюхи. Нет ничего проще, чем снять Наташку и купить русского быдлокодера для аутсорса.
>>768088ясно
>>768088Однако сильная штука, эта ваша пропаганда. Что ж такое человеку-то нужно сказать, чтоб он сам себя ненавидеть начал.
>>768108Он не себя ненавидит, а считает что вокруг него одни говноеды, а он сам рыцарь на белом коне, просто ему видите-ли не повезло родится в этом болоте.
>>768083задетектил лавсана. не обращайте внимания, местная ебанутая нищенка
>>768199Сомневаюсь, что то был лавсан, потому что писал я
>>705167 (OP)В список диалектов AutoLISP добавьте (скриптовый язык AutoCAD), до Clojure это был самый популярный лисп.
>>769886Он никогда не был популярнее общилиспа
>>770116>общебыстрофикс
>>769886Сам и добавь. Шапка в титанпаде
>>705167 (OP)Кложурогоспода, как мне запилить структуру с состоянием? Прочитал про type, но вот не пойму как в нем хранить внутреннее состояние.Допустим, мне нужно хранить состояние подключения во внутреннем поле типа Database. Я объявляю тип как(deftype Database [url] (connect [db] ...) (disconnect [db]))Экземпяр Connection мне нужно хранить в приватном поле, и создавать его при вызове метода connect, а если я укажу его в квадратных скобках при объявлении типа, то он будет публичным. Тащемта может дело в том, что я думаю объектно-ориентированно, но вот для этой задачи ооп на мой взгляд луше всехо подходит, ибо экземпляров Database нужно несколько, и у каждого из них будет свое состояние.
>>773346а почему тебе не завести атом для состояния подключения и написать для него функции-обработчики?
>>773346А зачем тебе изменяемое поле для соединения?(connect {:host host :port port :database db ...}) => {:connection conn :conn-info {:host ...}}И то я сомневаюсь, что эта информация не продублирована в самом объекте соединения.
>>773413>А зачем тебе изменяемое поле для соединения?Идея в том, чтобы те кто работают с Database не пользовались даже connect. Я хочу при обращении к методу read-data проверять наличие соединения, и если оно есть то реюзать, а если нету то устанавливать новое с помощью connect. Вот, и вопрос в том где хранить это состояние. Database должен сам менеджить свое внутреннее состояние, а те кто обращаются к read-data могут. Сейчас я вижу только один выход: при образении е методам Database ему еще должен передавать хешмап, в который он будет складывать свое состояние, и так при вызове каждого метода. Если так и нужно поступать в данном случае то ок, но вообще я искал решения похожего на классическое ооп с его инкапсуляциями.
>>773394потому что само по себе подключение это особенность реализации Database. Database реализует протокол Readable в моем поделии, а кроме него есть еще TextFile, который тоже реализует Readable, но у него нет connection внутри, ему даже и хранить своего состояние не нужно.
Помогите разобраться, как развернуть рекурсивный вызов в последовательность применения функций. Я запутался. И еще: почему-то лямбда, примененная к значения, не печатает число на экран даже если использовать (display).https://ideone.com/DZZxwq
Это снова я, нашет вот такой гист https://gist.github.com/shinmuro/9338262Попробовал в репле:user=> (defprotocol IEditName #_=> (get-name [this]) #_=> (set-name! [this val]))IEditNameuser=> (deftype PersonName [^:volatile-mutable lname] #_=> IEditName #_=> (get-name [this] (. this lname)) #_=> (set-name! [this val] (set! lname val)))user.PersonNameuser=> (def pname (PersonName. "hoge"))#'user/pnameuser=> (def pname (PersonName.))CompilerException java.lang.IllegalArgumentException: No matching ctor found for class user.PersonName, compiling:(/tmp/form-init3993095858741703866.clj:1:12) Меня бы устроил этот вариант решения проблемы, я бы хранил внутреннее состояние Database в volatile-mutable, но вот теперь в конструктор нужно передавать все параметры, как-то это напрягает. Ниже я в репле воспроизвел то, о чем говорил ранее:user=> (defprotocol Readable1 (connect [this state]) (read-data [this state]))Readable1user=> (deftype Database [url] Readable1 (connect [this state] (assoc state :connection "Fake connection")) (read-data [this state] (if (state :connection) "Lorem ipsum dolor" "ERROR")))user.Databaseuser=> (deftype TextFile [name] Readable1 (connect [this state] nil) (read-data [this state] "File content"))user.TextFileuser=> (def db (Database. "jdbc://blablalba"))#'user/dbuser=> (read-data db {})"ERROR"В этом решении состояние Database мне приходится таскать с собой, а для TextFile мне это состояние как корове пятая нога. Вот два варианта решения я придумал, но что-то мне подсказывает что оба они неправильные, поэтому прошу помощи здесь.
>>773546На данный момент вывод моей программы такой:106255#<procedure:...SICP/1.43/ex.scm:27:8>#<procedure:...SICP/1.43/ex.scm:10:8>Почему-то вместо значения выводится <procedure...https://ideone.com/GXmoZSА на идеоне это вообще не работает.
>>773550>А на идеоне это вообще не работаетС этим я разобрался. Это из-за #!https://ideone.com/GXmoZS
Что-то общелисперы совсем расслабились, тред уже кложуристы со схемерами начинают захватывать.
>>773513Храни соединение в динамической переменной.read-data будет её проверять и, если она не забинжена, будет устанавливать соединение.
>>773550>Почему-то вместо значения выводится <procedure...Ну подскажите, блеадь, что я делаю не так, когда разворачиваю рекурсию в последовательность применения функций.
>>773773Скинь код, в котором это выводится
>>773778Вот: https://ideone.com/GXmoZSХочу проверить, правильно ли я понимаю, как выполняется repeated, и убедиться в этом, вычислив значения развернутых выражений.
>>773781Не выводится там никакой><procedure:..
>>773782В ракете выводится. И то, что не выводится вообще ничего - не то, что я хочу.
>>773787Тебя интересуют две последнии лямбды, я так понимаю?
>>773787В твоем коде ничего кроме двух чисел в stdout не должно выводиться.
>>773793Да. Таким образом я хочу смоделировать вызов ((repeated inc 5) 0) на каждом этапе рекурсии. Чтобы убедиться в том, что я делаю это правильно, получившуюся функцию я хочу применить к тому же значению, к которому применяется ((repeated inc 5) 0) - к нулю.
>>773801https://ideone.com/9r0U3bЭто ты хотел? Ты там лишних лямбд нафуговал без вызова
>>773816Откуда там 555?
>>774091А, не посмотрел, что там нету newline, и все три результата выводятся на одной строке.
Анон, подскажи гайд по привинчиванию гуя к программе на CL.
>>781242Вариантов два - Покупаешь LispWorks, используешь CAPI. - Ищешь биндинги для библиотек тулкитов, пердолишься с ними.
>>781242https://github.com/CodyReichert/awesome-cl#gui
>>781606Есть ещё третий стул — McCLIM. Но у него только из стабильных бекендов только CLX.>>781765К тому списку нужно добавить qtools-ui. На данный момент он, пожалуй, самый пригодный для использования, но у него один большой минус — smoke. Автор вроде собирается избавиться от этого говна и запилить нормальные биндинги
Почему в CL (= 1/10 0.1)NILвот такая вот хуйня происходит?
>>782266Целочисленная операция / примененная к 1 и 10 дает 0.Floating point numbers нельзя сравнивать на равенство.
>>781848>McCLIMCAPI от него и пошел. И недалеко ушел (это комплимент).CLIM сейчас активно пытаются допиливать и перепиливать.
>>782277>Целочисленная операция / примененная к 1 и 10 дает 0.(= 1/10 0)NIL
>>782266Потому что одно число рациональное другое дробное?
>>782289Тебе про (/ 1 10) говорят, ты даже не понимаешь, только картинками запасся
>>782338>Тебе про (/ 1 10) говорят(= (/ 1 10) 0)NIL>ты даже не понимаешьОчевидно, что не понимаю - иначе и не спрашивал бы.
>>782360> (print (/ 1 10))> 0
>>782360> (= (/ 1 10) 0)> t> GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
>>782392> (print (/ 1 10))> 1/10>>782396>(= (/ 1 10) 0)>NIL>This is SBCL 1.3.6, an implementation of ANSI Common Lisp.
>>782277Что с вами не так то?
А можно ли на лиспе сделать типы в виде функций?
>>782862На Shen можно. И даже больше.
>>782862Параметризируемые шоле? Можно. Даже встроенные есть: integer &optional min max, cons &optional car cdr, simple-array type length и т.д
>>782266http://ideone.com/O9vxO3http://stackoverflow.com/questions/32889606/equality-check-with-fractions-in-common-lisp
>>782889Огромное спасибо!
Какая есть удобная библиотека для нейроных сетей?
>>785472Сам не пользовался, но что-то слышал про mgl или clml. Пощупай их.
Пора бы, кстати, перекат запилить.
>>785486 (OP)>>785486 (OP)>>785486 (OP)Перекатываемся