Этого треда уже нет.
Это копия, сохраненная 23 июля 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
59 Кб, 500x527
Лиспотред №6 #705167 В конец треда | Веб
Лисп - семейство языков программирования. Характерные особенности лиспов: динамичность, гомоиконность (код как данные), программируемость.

Основные диалекты
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
#2 #705174
Аноны, какой самый живой лишп пригодный для вебразработки?
#3 #705183
>>705174
Common lisp
#4 #705184
#5 #705186
>>705174
Clojure, Kawa.
>>705188
#6 #705188
>>705186
Толсто. Во всех смыслах толсто.
>>706390
#7 #705206
Реквестирую годный туториал по сигналам и рестартам в общелиспе.
#8 #705215
>>705206
http://lisper.ru/articles/restarts
Видел где-то ещё один, но сходу не припомню.
>>705222
#9 #705222
>>705215
Читал оригинал. Ну ок.
#11 #705359
>>705251
Ага, этот бложик тоже читал.
#13 #705484
Сап, гайз. Я тут решил окончательно упороться и запилить маленький вебапп на лиспе. Насколько полноценны местные фреймворки? CSRF, JSON-RPC, REST, ORM и другие баззворды поддерживаются?
>>705516
#14 #705516
>>705484
Наркоман штолле сука? Пиши код блеять.
#15 #705734
как вообще на вашем лишпе что-то серьезное писать?
это же половину времени будешь изобретать велосипеды, которые уже изобрели в други языках
>>705759
#16 #705759
>>705734
Попробуй библиотеками воспользоваться. Говорят, помогает от велосипедостроительства.
#17 #705807
>>705206
чтобы понять и начать использовать как работают исключения в мейнстрим языках, нужно сломать голову
чтобы понять как работают продолжения, сопрограммы в альтернативных языках нужно тоже
а соответсвенно чтобы понять работу сигналов в лиспе нужно этот заеб перемножить один на другой..
>>705816
#18 #705816
>>705807
Пожалуй.
#20 #706007
http://picolisp.com/
https://habrahabr.ru/post/247965/
Лиспаны, что думаете насчёт этого странного, наркоманского язычка, именуемого пиколиспом? Вроде и из коробки всего полно, и ffi не замороченный, и веб-гуй пишется удобненько, и на ведро ставится без всяких танцев. Но какой-то он... ебанутый.
>>706098
#21 #706098
>>706007
Наркомания какая-то. В топку его.
>>706292
#22 #706292
>>706098
Мне кажется, что не так все однозначно. Надо бы придумать, где его можно применить.
>>706315
#23 #706315
>>706292
Но зачем? Хотя про ведро где почитать можно?
#24 #706390
>>705188
Хули толсто, Clojure - самый живой Lisp, а JVM - самая популярная платформа, с ней и посредством Kawa (Scheme) с успехом поиграться можно.
>>706400>>706436
#25 #706400
>>706390
Уползи обратно в свой жава тред.
>>706464
#26 #706436
>>706390
Но кложура - не лисп. Это вообще не язык программирования, а такой хипстерский дсл для скриптования жавы. Специально для тех, кому надоело программировать на xml.
>>706464
#27 #706464
>>706400
>>706436
Лол. Понятно все с вами, ребята, уползаю в свой Scala-тред.
>>706474>>706482
#28 #706474
>>706464
Хорошо что ты знаешь своё место.
#29 #706482
>>706464
Тебя и там за кложу ссаными тряпками закидают.
#30 #706517
Добавил в шапку документацию по Emacs Lisp и выделил Racket в отдельный язык.
#31 #706909
Как думаете, почему лисп потерял популярность в 90-2000?
#32 #706917
>>706909
Упал с 2% до 1%? Ну хуй знает.
#33 #706944
>>706909
Возможно, его вытеснили скриптопараши вроде перла, питона и пыха везде, где все возможности лиспа все равно были не нужны. В целом появляется все больше и больше специализированных языков и они утаскивают прогеров из метаязыков. А чтобы вытащить из жабы быдлокодера, ему еще нужно объяснить, зачем ему все эти фичи.
>>706951
#34 #706951
>>706944
Но как так вышло? Ведь было же сообщество. Куда оно проебалось?
Впрочем, пых питон и прочая дристня действительно гораздо более дружелюбны к новичкам.
>>706953>>706965
#35 #706953
>>706951
Похуй, пиши код.
>>706976
#36 #706965
>>706951
Возможно, это связано со смертью лисп-машин.
>>706968>>706976
#37 #706968
>>706965
Ты ебанутый, лисп-машины нахуй не нужны. Питономашин же нет.
#38 #706976
>>706953
Так я пишу. Хочу просто больше народу в секту.
>>706965
Как и не появились джава-машины.
>>707271
#39 #707271
>>706976
Форт-машины зато появились, предлагаю начать на них фапать.

http://www.greenarraychips.com/
sage #40 #707273
(cons vsl '(not dead))
#41 #707315
Поцоны, поясните за пик >>649344 (OP)
Зачем лисп похитил питона?
>>707940
#42 #707940
>>707315
Потому что питон зло, очевидно.
#43 #708050
Накидайте видосиков по лиспу.
>>708461
#44 #708461
>>708050
Накидал, проверяй
>>708509
#45 #708509
>>708461
Но за щекой ничего нет. Ты правильно хоть накидал?
#46 #708633
Когда окончательно родят R7RS-large?
И когда запилят единый репозиторий библиотек с пакетным менеджером для всех реализаций схемы?
Спасибо.
>>708647>>708654
#47 #708645
>>708642
Ебать ты шизофреник.
#48 #708647
>>708633
Есть мнение, что не нужно - все живые Схемы обзавелись собственными расширениями над стандартами.
>>708658
#49 #708654
>>708633

>И когда запилят единый репозиторий библиотек с пакетным менеджером для всех реализаций схемы?


Лол. Никогда. Это ж схема.
#50 #708658
>>708647
Это путь в никуда.
>>708783
#51 #708783
>>708658
Путь вникуда - это сравнимые реализации одного стандарта.
>>708936
#52 #708936
>>708783
Да. Но так уж случилось, что реализаций несколько. Исправить это можно единым репозиторием библиотек.
>>708995
#53 #708995
>>708936
Просто смирись, что Chicken Scheme это один язык, а Guile это другой.
#54 #710181
пацаны, извечный вопрос, почему ни один диалект lisp не пригоден для промышленного использования? Где фреймворки? Где комьюнити? Этого всего нет.
>>710186>>710315
#55 #710186
>>710181
1. Потому что ты школьник и не можешь в Google.
2. Потому что 90 процентов программистов - долбоебы, которые не могут в SICP.
>>710230
#56 #710230
>>710186

> Где комьюнити?


> Потому что 90 процентов программистов - долбоебы,


С таким подходом коммьюнити и не будет.
>>711370
#57 #710315
>>710181
Общелисп и есть самый настоящий промышленный язык. Учись пользоваться гуглом.
Фреймворки и сообщество есть, но немногочисленгое. Но не количество главное.
#58 #711370
>>710230
так никому коммунити уровня тупых жабаиндусов или go-детей и ненужно
#59 #711778
Реквестирую лисп челендж.
>>712121
207 Кб, 338x427
#60 #711858
Как сделать чтобы показывало цвет в емаксе?
>>711868
#61 #711868
>>711858
Гуглом пользоваться научись, полуебошный.
https://julien.danjou.info/projects/emacs-packages#rainbow-mode
>>711870
#62 #711870
>>711868
Спасибо, пидор.
#63 #712121
>>711778
Я бы за, но ближайшую неделю поучаствовать не смогу
>>712185
#64 #712185
>>712121
Вообще я просил придумать какую-нибудь задачу, а не предлагал соревнование.
34 Кб, 545x421
#65 #712203
Угадай мелодию.
>>712528
#66 #712528
>>712203
Подмосковные вечера, давай сложнее.
>>712596>>712710
15 Кб, 279x284
#67 #712596
#68 #712710
>>712528
В музыкалке учился что ли?
#69 #713525
Есть ли возможность написать код на Lisp и залить в Ардуино?
>>713716
#70 #713527
Я слышал, что в лиспе можно накодить функцию, которая будет способна строить другую функцию, а потом ее можно исполнять. Где это искать? Подскажите.
>>713537>>713538
#71 #713537
>>713527
Лол, это называется "макрос".
defmacro гугли
>>713617
#72 #713538
>>713527
Еще как вариант это называется "замыкание": http://letoverlambda.com/textmode.cl/guest/chap2.html

Но тут функция не совсем строится.
>>713617
21 Кб, 368x638
Типичный лиспер sage #73 #713593
>>713650
#74 #713617
>>713537
>>713538
(defun thank-you () (format t "спасиб"))
#75 #713650
>>713593
(cons 'vsl '(not dead))
>>713682
16 Кб, 578x129
#76 #713682
>>713650

>'vsl '(not dead)


Спорное утверждение.
#77 #713688
Кто-нибудь интересовался диалектами на которых до стандартизации лиспа пытались пилить ИИ?
>>713796
#78 #713716
>>713525
А чо нет-то.
#79 #713796
>>713688
Ты про маклисп что ли?
>>713866>>713883
#80 #713866
>>713796
Интерлисп еще, например.
>>713883
#81 #713883
>>713866
>>713796
Они выглядят весьма похожими на общелисп или елисп.
>>713894
#82 #713894
>>713883

>Критики нового стандарта указывали на его раздутость и чрезмерное внимание, уделённое практическим требованиям, что привело к нарушению «функциональной чистоты» Лиспа и увеличению объёма поддерживающих его Лисп-систем.



>Более существенно то, что Интерлисп базируется на динамическом связывании, тогда как все новые версии Лиспа — статические.



Кто-нибудь пояснит что за "функциональная чистота" такая нарушилась после стандартизации и что за динамическое связывание было вместо которого запилили статические?
>>713904
#83 #713904
>>713894
Может быть, под статическим связыванием подразумевается лексическая область видимости?
А функциональной чистотой, насколько мне известно, ни маклисп, ни интерлисп никогда не отличались.
42 Кб, 453x604
ХЕЛП #84 #714630
Emacs подсвечивает код как Emacs Lisp, не могу заставить подсвечивать как Common Lisp.

Та же ситуация с Flycheck.
#85 #714753
>>714630
Выкини emacs.
#86 #714908
>>714630
Заскринь модлайн.
#87 #715234
Антош, где-то видел список основных операторов (что-то около 12) на которых написано все остальное. Подскажи пожалуйста - никак не могу найти. Хочу писать только на них
>>715323
#89 #715372
>>715323
Спасибо!. Не ругайся. Нюфак же
#90 #715373
>>715323
Хотя я видел другой список. Там точно был cond
>>715415>>715438
#91 #715415
>>715373
Ну так для какого тебе диалекто то надо?
http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Special-Form-Syntax.html
>>715436
#92 #715436
>>715415
В общем посмотрел я на определения функции cond when and в sbcl. и все они написаны с использованием только if. Получается я могу только на if все писать. Вот же откровение.
>>715444
#93 #715438
>>715373
cond это не "основной" оператор, а сахарок для if, реализующийся на макросах. Как в лиспе, так и в схеме.
>>715444
#94 #715444
>>715438
Ага, я понял.>>715436
#95 #715613
Научите вставлять лиспокод в другой язык, например, Питон и чтобы оно работало. Или хотябы киньте ссыль на хороший гайд по теме для ньюфага.
>>715652>>716226
#96 #715625
Как сделать так, чтобы одна функция обрабатывала данные, поступающие в реальном времени, обрабатываемые параллельно 2(или больше) другими функциями? Я слышал, что Лисп может в подобную параллельную обработку или что-то такое.
>>715652
283 Кб, 1821x1290
#98 #715731
>>714630
Всё ебать я разобрался, спасибо пидоры за поддержку.
>>715733>>715734
#99 #715733
>>715731

> 2017


> emask

>>716002
#100 #715734
>>715731
Ты уже большой. Видишь, сам справился.
#101 #715840
У меня какая-то иррациональная тяга к лиспу, как у некоторых русских к сербам. Что со мной?
>>715842>>715859
#102 #715842
>>715840
Ты смайлодаун.
>>715858
#103 #715858
>>715842
Маловероятно. А ты хуй)
#104 #715859
>>715840
Потому что лучше интерактивной разработки пока ничего не придумали, очевидно.
>>715862
#105 #715862
>>715859
Она есть дохрена где кроме лишпа.
>>715871
#106 #715863
Что думаете про http://www.buildyourownlisp.com/ ?
>>715866>>715875
#107 #715866
>>715863

>Learn C


Лерн си ан билд ватэвер ю факинг вонт. Бат нобади байс ит.
#108 #715871
>>715862
Например?
>>715874
#109 #715874
>>715871
REPL в любой скриптопараше присутствует. Это как минимум.
В не-скриптопараше тоже нередок.
>>715876
#110 #715875
>>715863
Для этих вещей у нас есть хаскель.
#111 #715876
>>715874
Не путай репл с интерактивной разработкой. Это не одно и то же.
>>715878
#112 #715878
>>715876
В чём разница?
>>715885
#113 #715885
>>715878
В том что при интерактивной разработке ты наслаиваешь приложение постепенно, как будто создаешь скульптуру. Ты мгновенно получаешь обратную связь и работаешь с образом своего приложения, а не работаешь по стандартному циклу "Отредактировал, сохранил, перезапустил". Реплы во всем что я пробовал кроме лиспа годятся только для проверки тривильных вещей, а не для полноценной разработки.
>>715927
#114 #715927
>>715885
Говно ваша интерактиваня разработка. На нормальной статике в нормальной можно написать целый модуль без твоих циклов "Отредактировал, сохранил, перезапустил", потом этот модуль собрать, и он будет как положено работать.
>>715935
#115 #715935
>>715927
Глядите-ка, жабомакака подтянулась, которая по 3 минуты ждет пока у неё хэлло-ворлд запустится.
>>715936>>715938
#116 #715936
>>715935
Ну да, жабка же единственная статика, и нормальная статика, ничего слаще редьки ты не пробовал. Scala компилирутеся в 2 раза дольше
#117 #715938
>>715935
Зато фрактал на клиспе работате моментально :3
>>715944
#118 #715944
>>715938

>фрактал


факториал или фибоначчи, че там у вас за хеловорлд
#119 #715955
Вскукарек :: [кококо] -> вскукарек
Вскукарек<кококо> вскукарек = new Вскукарек<кококо> ();
>>715956>>715958
#120 #715956
>>715955
Это хачкель или жаба?
#121 #715958
>>715955

>(cons 'вскукарек '(кок покпок))


Че сказать то хотел?
>>715971>>717261
#122 #715971
>>715958
(with-вскукарек
(ко-ко-ко))
#123 #716002
>>715733
Если не emask, то кто?
>>716006
#124 #716006
>>716002
Ничего, так и приходится жрать это говно =(
>>716007>>716197
#125 #716007
>>716006
SICP закончу и выкину к ебанной матери.
>>716197
#126 #716197
>>716006
>>716007
Да ты же говноед.
#127 #716226
>>715613
Для вставления в питон есть Hy в шапке.
#128 #716500
(funcall (if (> (random 10) 5) #'+ #'-) 3 4)
VS
((if (> (rand 10) 5) + -) 3 4)

Дискасс.
>>716566
#129 #716566
>>716500
бля, ну это специфический момент, тут-то не про синтаксис, а про устройство интерпретатора(одно окружение или несколько),
>>716570
#130 #716570
>>716566
Это все тот же всем настоебавший lisp-1 vs lisp-2.
Лично мне больше нравится явный funcall, потому что я вообще не с первого раза вдуплил в середине другого куска кода что ((XYNTA) .!)))345)) это вызов функции собранной в результате вычисления.
>>716768
#131 #716768
>>716570
так а что же еще, но мне (function +) (или во что там раскроется #'+) кажется немного хуетой, вообще, конечно дело вкуса
#132 #717261
>>715958

>(setq вскукарек '(кок покпок))

#133 #717428
Лиспаны, а макросы, которые могут создавать макросы это только в лиспе так можно или в других языках тоже есть подобное?
мимо-могу-немного-в-питон
>>717660>>717692
#134 #717660
>>717428
Любые макросы могут создавать макросы.
>>717764
#135 #717692
>>717428
Можешь генерировать macrolet-формы, например.
#137 #717776
Ответьте без проверки через репл, чем равно значение:
(let (#'42) (+ . #'5))
>>717898>>717904
#138 #717832
чтяднт?
Надо выделить ЦЕЛЬ в ((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]
>>717842
#139 #717842
>>717832
и что тебя удивляет? caddadadar - неопределенная функция, вложенные c*r определены до 4 уровня http://www.lispworks.com/documentation/HyperSpec/Body/f_car_c.htm
>>717847
#140 #717847
>>717842
Шпасибо, т.е. это никак c*r не сократить? Странно, что в учебнике задание еще и сократить.
>>717856
#141 #717856
>>717847
можно (caddar (cdadar '((1(2(3 4 цель)))))), а можно и самому определить
(defun caddadadar (x) (car (cdr (cdr (car (cdr (car (cdr (car x)))))))))
#142 #717865
>>717856
(destructuring-bind ((_ (_ (_ _ x)))) '((1 (2 (3 4 цель)))) x)
>>717866
#143 #717866
>>717865
Точнее вот так
(destructuring-bind ((nil (nil (nil nil x)))) '((1 (2 (3 4 цель)))) x)
>>717878
172 Кб, 957x1079
#144 #717871
Для тех, кого тоже заебывает вспоминать директивы формата: C-c C-d ~
#145 #717878
>>717866
та я вообще на общелиспе мало писал, больше scheme
------------
>>717856
#146 #717898
>>717776
Либо нил, либо ошибка.
>>717904
#147 #717904
>>717776
>>717898
ну, я вот думаю, 47, логика такая
(let (#'42) (+ . #'5))
(let ((function 42)) (+ . (function 5)))
(+ . (42 5))
(+ 42 5)
47

А вообще, поясни потом правильный ответ, и как до него дойти
>>718004
#148 #718004
>>717904
Все правильно думаешь, хуле уж тут.
Эвалишь код, потом эвалишь + и все становится понятно.
#149 #718010
Хочу обновить slime-proxy, чтобы РЕПЛ для parenscriptа юзать. Все правильно делаю?
#150 #718130
>>717856

>(caddar (cdadar '((1(2(3 4 цель))))))


Так и есть скорее всего, ибо на том месте про определение функций в помине нет.
#151 #718284
А покажите свои конфиги на emacs.
>>718298
#152 #718295
Какой способ именования лучше: "foo?" или "is-foo"?
Первый вариант чуть-чуть лаконичней, но я спотыкаюсь на его чтении. Второй вариант длиннее, но в голове его удобно проговаривать — "из фу" он и есть "из фу", пауз при чтении не возникает.
Что является стандартом и почему?
#153 #718298
>>718284
У меня spacemacs. Конфиг показать не могу, т.к. ноута под рукой нет, но там и смотреть-то практически нечего.
#155 #718303
>>718295
Или если речь о схеме, то, кажется, общепринятым является foo?
#156 #718327
>>718295
Это тебе вот такое дерьмо удобно проговаривать: (if is-foo) ?
is-* имеет смысл как свойство объекта.
(if shit.isTasty) ; читается нормально

Оба эти варианта читаются отлично:
(if foo?)
(if foop)
#157 #718415
Я занимаюсь по http://progbook.ru/lisp/409-hyuvenen-mir-lispa-tom-1-vvedenie-v-yazyk-lisp.html
Мир Лиспа. Том 1. Введение в язык Лисп и функциональное программирование
В отличии от Practical Common Lisp там практические примеры после каждой главы и подача материала легко усваивается. Что скажите про нее? Щитаю, что она оптимальна для ньюфага.
>>718421
#158 #718421
>>718415
PCL не для ньюфагов, а для тех кто знаю как программировать впринципе, хочет выучить CL.
#159 #718434
Схемачи, почему этот код не запускается на линуксе?

https://ideone.com/hESYOY
>>718444
#160 #718444
>>718434
https://ideone.com/WUgQli

В рекурсивном вызове accumulate проебал combiner
>>718461
#161 #718461
>>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
>>718462
#162 #718462
>>718461
Запускаю так: ./1.32.scm
>>718479
#163 #718479
>>718462
хз, с raket не работал, мб сверху, после
#!/usr/bin/racket
написать
#lang racket
>>718485>>718488
#164 #718485
>>718479
Но я ж хочу использовать интерпретатор r5rs.
>>718491
#165 #718488
>>718479
Надо же, это сработало.
#166 #718491
>>718485
так задание же из sicp, там и mit-scheme подойдет(с ней sicp и проходил в свое время)
#168 #719246
Поясните за #. макрос. Читаю спеку и не понимаю, нахуя оно нужно.
>>719255>>719671
43 Кб, 600x415
#169 #719253
>>719260
#170 #719255
>>719246
Вроде это для макросов ридера, т.е. переопределение того, как текст преобразуется в s-exp, например, можносделоть инфиксную арифметику и т.д..
>>719297
#171 #719260
>>719253
Пропущеная скобочка это не шутки.
#172 #719297
>>719255
https://github.com/quickdocs/quickdocs-updater/blob/master/quickdocs-updater.asd

Вот пример использования. Нахуя оно там?
>>719329>>719671
#173 #719329
>>719297
Ну а как ты сделаешь чтобы квадратная скобка преобразовывалась в #( без макросов ридера?
Или тебя что-то конкретное смущает? #\ = символ
>>719458
#174 #719458
>>719329
Я спрашиваю про конкрентный макрос: #.
Как им пользоваться и нахуя он нужен.
>>719638
#175 #719638
>>719458
А, я хз, похоже на сокращенный eval
#176 #719671
>>719246
Для вычисления выражения на стадии чтения s-exp'а.
>>719297
Читает строку из файла и подставляет её в выражение, а потом уже раскрывается макрос defsystem
>>719694
#177 #719694
>>719671
Ага, я так примерно и понял. Спасибо.
#178 #720306
за спиной пара интерпретаторов на scheme, недописанные веб сервер на ней же, ворох других мелких проектов, стоит ли вкатываться в Common Lisp? Если да, с чего лучше стартануть? Интересуют темы метаязыковой абстракции, ии, возможно, анализа евстественного языка
>>720477>>720481
#179 #720477
>>720306
Конечно, стоит, ведь в схеме жизни нет. Даже по меркам лиспосообщества.
#180 #720481
>>720306

>с чего лучше стартануть?


С On lisp, например.
#181 #720688
Я посматриваю за тредом иногда. Пиздец, почему такой долбоебизм царит?

Кложа/Clojure охуенна. Причин несколько:
- очень развитое комьюнити
- иммутабельные структуры данных, что избавляет от рейс кондишенов и позволяет удобно писать асинхронный код
- core/async, stm, атомарность, промисы
- Clojurescript, где комьюнити тоже совершенно охуенное: есть ом, реагент, куча других либ и биндингов
- Отличные макросы (да, есть и в CL)
...
Список достоинств можно только продолжать.
Короче, реально писать не на Кложе вообще смысла не вижу. Главный недостаток это JVM с невозможностью реализовать tail call elimination, stop the world'ом (для сравнения Ерланг/Эликсир -- в BEAM такого нет, там каждый актор заводит свой хип) и долгим стартом (особенность JIT в JVM).

И да, если вам понадобятся Акторы, то есть вполне рабочие биндинги к Акке.

В общем, программисты выбирают Кложу, а диванные кукаретики продолжают срать под себя. Хуйню тут развели блядь какую-то.
#182 #720700
>>720688
Тебе в жаваскрипт тред.
#183 #720859
>>720688
Опять набрасываешь, ирод?
На кложе никто не пишет, кроме хипсторов-вебпетухов. И то там кложескрипт, а не сама кложа.
Все преимущества, что ты перечислил, сводятся на нет одним базовым принципом кложи - плотной интеграцией в хост-язык, которые имеют совершенно иную, нихуя не совместимую с лиспом идиоматику. Поэтому код на кложе, как правило, представляет из себя ту же яву/яваскрипт, но с чуть отличающимся синтаксисом и немного подсахаренный.
30 Кб, 480x360
#184 #720877
>>720688
Не распинайся, тут сидят зашоренные шизики, для которых всё что было после 80х - дохуя сложна, нинужно и нипанятна.
>>720879
sage #185 #720879
>>720877
лол пририсуйте туда эмблему кложи, а ебло замените на маккарти
#186 #720956
>>720688
>>720688

> Главный недостаток это JVM с невозможностью реализовать tail call elimination


Используй loop-recur, он компилируется в цикл

> stop the world'ом


Для больших хипов есть Zing VM от Azul

> (для сравнения Ерланг/Эликсир -- в BEAM такого нет, там каждый актор заводит свой хип)


Если у тебя есть большой кусок данных, то он всё равно должен хранится в хипе какого-то актора, смекаешь?

> И да, если вам понадобятся Акторы, то есть вполне рабочие биндинги к Акке.


Нахуй акторы, есть core.async
>>721051
#187 #720995
>>720688
Но то же самое есть и в общелиспе. Только в отличие от кложи он является языком полноценным, а не дырявойыми оберткойами (таки три платформы - три разных языка) вокруг жавы, жс и додиеза.
>>721051>>721133
#188 #721051
>>720956

>то он всё равно должен хранится в хипе какого-то актора


В ерлаше бинари >64КБ идут в отдельный хитровыебанный бинарный хип.

>Нахуй акторы, есть core.async


Это неудобно. А все кто любит чтоб было удобно берут Okku.

>>720995
Общелисп - обычная переусложнённая императивная говнина с макросами.
>>721132
#189 #721132
>>721051

> В ерлаше бинари >64КБ идут в отдельный хитровыебанный бинарный хип.


Что такое "бинари"? Большой вектори или мапа это "бинарь"? И какой в этом бинарном хипе GC алгоритм?

> Это неудобно.


Шта? По-твоему акторы удобнее чем CSP?
>>721307
#190 #721133
>>720995

> Но то же самое есть и в общелиспе.


А как насчёт

> - очень развитое комьюнити

>>721220
#191 #721220
>>721133
Вся его развитость заканчивается на лойсах на гитхубе, участии в хипстохакатончиках и, в редких случаях, запиливании недоделанной оберточки над жава/жс-библиотечкой.
Вот у хаскела сообщество можно назвать развитым, там действительно наблюдается движение.
#192 #721307
>>721132
Что такое "бинари"?
Бинарный тип данных.

> Большой вектори или мапа это "бинарь"?


Нiт, но при желании их обоих можно скастовать в бинари. Ну или получить такие сразу, из сети/файла/мемори.

>И какой в этом бинарном хипе GC алгоритм?


Висят до тех пор, пока на них не останется ссылок откуда бы ни было. В остальном как обычно.

>Шта? По-твоему акторы удобнее чем CSP?


Разумеется. Анониманя связь по каналам говно, работать без примитивов процесс/узел крайне неудобно. Модель акторов - это самый общий конкурентный концепт, средствами которого можно выразить большинство остальных, тот же ССS или CSP, обратное невозможно.
>>721335
#193 #721335
>>721307

> Модель акторов - это самый общий конкурентный концепт, средствами которого можно выразить большинство остальных


По твоей логике GOTO - самый удобный концепт управления ходом программы, потому что через него можно выразить все остальные.
#194 #721357
Анончики, так уж вышло, что для экзамена мне придётся выучить autoLisp. Посоветуйте годноты.
Алсо, сам уже больше года пилю бэкенд на дотнете, специальность обучения интересная, вот и не ливаю из универа
>>721462
#195 #721462
>>721357
Врядли здесь кто-то из анонов хоть раз щупал этот автолисп.
Если не найдется нормальной литературы по автолиспу, попробуй поверхностно проштудировать pcl (ссылки в шапке), чтобы раобраться что да как.
#196 #723154
А я вот начал на работке на лиспе лабать. Полет нормальный.
>>723167
#197 #723167
>>723154
Подробности?
>>723173
#198 #723173
>>723167
Ну надо было сделать парсер одной фигни. Залабал на общелиспе. Оче годно. Плюс пробую тут на общелиспе селениум насиловать. Тоже норм вроде.
>>723175
#199 #723175
>>723173
Парсер, кстати, модный. Интерфейс на clack + ningle + cl-markup + parenscript + css-lite
>>723181
#200 #723181
>>723175
А чому так много либ для одного парсера? В Clojure вот один Instaparse справляется.
>>723185
#201 #723185
>>723181
Это либы для интерфейса. Сам парсер юзает dexador + plump + jsown + cs-csv
#202 #723992
>>705167 (OP)
Запилил себе иконку уютную - делюсь, мало ли, пригодится кому.
Тред про Emacs проебался куда-то, потому сюда.
>>723994
281 Кб, 900x900
#203 #723994
#204 #724010
Допилю все методы и отправлю в квиклисп. Все правильно делаю?
https://github.com/TatriX/cl-selenium-webdriver
>>724086
#205 #724086
>>724010
Этот селениум через вебапи работает шоле?
>>724104
#206 #724104
>>724086
Это биндинги к Selenim Server'у
Работает через REST API, да.
21 Кб, 263x192
#207 #724894
Мне надо построить массив, привязанный к пикселям в виде 3дэ сферы, а также чтобы в зависимости от функций, изменяющих числа массива менялся цвет тех пикселей, что привязаны к массиву. Что посоветуете для всей этой графики на лиспе?
>>725220>>726129
#208 #725220
>>724894
cl-sdl2, sdl2kit, cl-opengl
>>726129
#209 #726129
>>725220
Ему чето типа plotlib нужно, а не свой движок писать.
>>724894
Глянь вон там http://cliki.net/plotting
#210 #726923
Гайс, помогите плиз. Нужно сделать лабу по автолиспу, а в нем я не особо шарю. Достаю из файла строку, например "-1 10 9.87 -4.08". Как мне сделать из нее лист чисел, чтобы потом их можно было отсортировать по знаку, большее/меньшее, целые, дробные и тд.
>>726962>>727041
#211 #726962
>>726923
#include <common-lisp.h>
Ну и дальше пишешь на общелиспе.
>>726999
#212 #726999
>>726962
Надо именно автолиспом сделать
#213 #727041
>>726923
Дай ссылку на документация, сходу не гуглится.
>>727048
#214 #727048
>>727041
>>727041
Не понял, что именно надо?
>>727068
#215 #727052
Emacs'еры использующие org-mode тут есть?
Скиньте свои custom agenda или порекомендуйте хороших, а то говно получается.
#216 #727068
>>727048
Я имел в виду что-то типа общелисповского clhs ( http://www.lispworks.com/documentation/HyperSpec/Front/index.htm ),
Но уже нагуглил вот это http://stackoverflow.com/questions/15393797/lisp-splitting-input-into-separate-strings (последний ответ). Почти твоя задача, осталось только строки к числам привести. Код там, конечно, - говно а мож просто автолисп - говно, но суть должна быть понятна.
#217 #727896
Открыли ChezScheme
>>727897>>727932
#219 #727932
>>727896
Ну и хуй с ним?
#220 #727964
Тут ни кто для org-mode не пишет лисп-скрипты?
>>728022>>728074
#221 #728022
>>727964
Там столько всего из коробки, что не приходится. Что нужно-то?
#222 #728067
Антохи, дошел до рисовалок в SICP'е, а DrRacket не могет в элементарные рисовалки. Че делать?
>>728077
#223 #728074
>>727964
Я писал для org-drill. И то не скрипт, а просто интерактивную функцию.
#224 #728077
>>728067
Как не могет? Вроде в последний раз мог
>>728088
#225 #728088
>>728077
скачал sicp.plt пакет, теперь DrRacket могет в beside/below, но все равно не могет в wave/rogers
>>732029
#226 #731724
(bump)
#227 #732029
>>728088
rogers тебе не понадобится, он там для примера
wave напиши сам, мудак чтоли?
#228 #732187
>>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, т.е. инициирует раскрутку стека к текущему блоку.
>>732198
#229 #732198
>>732187
Ебать ты наркоман. Представляю тебя плешивым дрыщем, сидящем в 6 сантиметровых очках на бабкином стуле и упарывающемся скобками.
>>732205
182 Кб, 1280x859
#230 #732205
>>732198
немного не угадал
>>732210>>732224
#231 #732210
>>732205
Да, про очки ошибся. В остальном все сходится.
>>732211
111 Кб, 960x960
#232 #732211
>>732210
попизди мне тут
>>732224>>734250
#233 #732224
>>732205
>>732211
Поймаю в Бостоне - ебальник разобью. Хотя стоп, не поймаю, тебя же не возьмут в джетбрейнс ОПЯТЬ, ХАХАХА.
jdevelop
>>732228
#234 #732228
>>732224
Воу воу кто ето, ето бостонский алкаш на связи!
#235 #733468
Господа, что не так у меня в сорусе?

https://ideone.com/NEDXM1
>>733504>>733514
#236 #733504
>>733468
Очевидно что у тебя нет так, это Scheme, а не Common Lisp
#237 #733514
>>733468
25 строка

>>(lambda (x) (x))


Тут ты не возвращаешь x, а вызываешь его. Правильно будет

>>(lambda (x) x)

#238 #734250
>>732211
love5an, ты шоле?
>>735623
#239 #735623
#240 #736019
Привет, lisp'аны. В общем, я читал SICP, делал задачки, что-то получалось. В общем, такой вопрос: я уже прочитал 3 главу целиком, перешел к 4 и ничего не понимаю. Точнее, если напрягаюсь, то понимаю, но мне стало неинтересно. Есть ли смысл читать после 3 главы? Отпишитесь, а то я не знаю, как-то жалко бросать начатое, но в главе про интерпретатор столько всякой мути, что аж рили неинтересно.
>>736067>>736608
#241 #736067
>>736019
Неинтересно - пропусти. Зачем себя мучать-то?
Как заинтересует, так и вернешься.
>>736078>>736608
#242 #736078
>>736067
Ну, в принципе, я тоже так думаю. Потому что, когда неинтересно, чтение превращается реально в муки.
#243 #736438
Зацените лиспаны, прикрутил репл с автодополнением к емаксу: https://github.com/TatriX/kite-mini.el
Через гуглодебагер.
#244 #736440
>>736438
Самое главное то забыл: для js.
>>736443
#245 #736443
>>736440
А еще забыл сказать что пока оно в ветке https://github.com/TatriX/kite-mini.el/tree/dev и не готово до конца.
>>737261
#246 #736448
>>736438
Хуево, что только для хрома. У фурифокса нет аналогичного протокола?
>>736464
#247 #736464
>>736448
Есть. Но ебаться не хочется. Уж слишком фурифокс тормозной для разработки.
#248 #736608
>>736067
а что ему дальше останется, 5 глава, которая целиком опирается на 4ую?(из интерпретаторов ваяем компиляторы)
>>736019
вообще, если с английским хорошо, можешь лекции на ютубе глянуть(MIT, ведут сами Сассман, Абельсон, на рутрекере видел еще 2010 года лекции из Беркли, но не смотрел)
#249 #736609
https://habrahabr.ru/post/282986/
Сегодня утром вот поглядел видео и прочитал статью. С автором несогласен. С Сасменом, тоесть.
>>736612
#250 #736612
>>736609
поясни мысль, что именно не нравится в его рассуждениях?
>>736614
#251 #736614
>>736612
Я неточно выразился, я не несгласен, я просто его аргумент убедительным не нахожу. То, что теперь инжинерия поменялась таким образом, как он сказал, вовсе не означает, что тут же студентоту надо учить мануалы читать. Помему, свои костыли и велосипеды ценнее в практическом смысле, чем использование чужих. Именно при обучении, не в работе.
26 Кб, 942x195
#252 #737261
>>736443
Автор потихоньку мержит в апстрим, а пока самое свежее тут: https://github.com/TatriX/kite-mini.el
Прикрутил отправку сообщений в консоль. Например, если во время загрузки скрипта все пошло по пизде, мы увидим пикрелейтед.

Обновление замыканий, конечно, охуенная вещь.
>>737909
#253 #737909
>>737261
А чо там, полное обговление кода без проблем проходит? Ну т.е. допустим, пишу я код на каком-нибудь йобаскрипте, потом модуль транслирую в жс и отправляю браузеру. Он нормально обновится?
>>737915
#254 #737915
>>737909
Поддержка сурсмапов в планах. Пока её нема, хотя для личного использования можно в 5 строчек написать.
#255 #738016
>>736438
Пиздуй игру делать.
>>738265
#256 #738238
Эй, лиспаны, может кто по-хардкору пояснить, как в ecl создать so-шку из asdf-системы. Пробовал так https://common-lisp.net/project/ecl/static/manual/re55.html, но чот оно на выходе выдает эльф.
И ещё, кто-нибудь ковырял clasp?
#257 #738265
>>738016
Я для игры в частности и делаю. Оче удобно.
>>738268
#258 #738268
>>738265
На чистом жс хуяришь? Без всяких elm, clojurescript и т.п.?
>>738272>>738276
#259 #738272
>>738268
Игру-то? Да.
>>738278
#260 #738276
>>738268
Ramda хотя бы используется?
>>738444
#261 #738278
>>738272
А чего так? Принципиально не используешь или просто лень разбираться?
>>738444>>738446
#262 #738444
>>738276
На работке пользуемся. Когда я проект начинал про неё еще никто не слышал.
>>738278
В данном проекте принципиально. Воообще у всех транспайлеров есть куча проблем, с которыми не очень хочется ебаться. Даже несчастный babel и тот мозг ебет, что уж говорить про остальных.
#263 #738446
>>738278
Кложурскрипт выглядит вкусно, но жаботормознутость перечеркивает все достоинства.
>>738482
#264 #738482
>>738446

>Кложурскрипт


>жаботормознутость


Что?
>>738510
#265 #738510
>>738482
Оно по твоему само себя компилит? Там нужен жабобол тормозной.
>>738513>>738536
#266 #738513
>>738510
Разве кложескрипт не на жс написан?
>>738516>>738518
#267 #738516
>>738513
Ещё тормознее.
#268 #738518
>>738513
https://github.com/clojure/clojurescript/wiki/Quick-Start

> Download the standalone ClojureScript JAR.

>>738636
#269 #738536
>>738510
Ты совсем поехавший?
#270 #738544
Пока долбоебы плачут от того что нужно скачать О ГОСПАДИ JAR, стартапы на Кложуре получают миллионные фандинги
http://techcrunch.com/2015/06/30/trucker-path-raises-20m-to-claim-the-uber-for-truckers-moniker/
>>738558
#271 #738558
>>738544
С таки же успехом это дерьмо могли написать на phpscript.
>>738868>>739215
#272 #738636
>>738518
Что за хуйня? В кложескрипте нет функции compile или хотя бы eval, потому что транслятор на яве^Wкложуре?
>>739046
#273 #738868
>>738558
люди делятся на два типа: одни зарабатывают деньги, а другие неудачники. Сейчас деньги зарабатывают они.
>>739060
#274 #739046
>>738636
Там есть eval, но для этого нужно специальный билд собирать (ибо много весит):
https://github.com/clojure/clojurescript/wiki/Optional-Self-hosting

А по поводу необходимости ставить JDK, то тут дело скорее в инструменте управления проектами (Leiningen), который написан на обычной JVM-ной Кложе.
#275 #739060
>>738868

> одни зарабатывают деньги, а другие


сидят на трубах скобках
88 Кб, 643x421
#276 #739215
>>738558
ПГ так не думает
>>739296>>739784
#277 #739296
>>739215
Всё правильно делает, нигерам в общелисповском сообществе не место.
#278 #739784
>>739215
очевидно блядь. Кложура это лучшее что случалось с Лиспом эвар. Только нищие долбоебы до сих пор этого не поняли.
>>739809
#279 #739809
>>739784
Нет, кложура слишком узкоспециализирована.
>>740059
#280 #740059
>>739809
показательный даун. эталонный
>>740061>>740220
#281 #740061
>>740059
Clojure объективно не дотягивает до CL.
Как язык - никакой. Производительность - так себе. Ну про минусы JVM даже лень рассказывать. Там много говна, начиная от recur, и заканчивая невозможностю нормально делать hot code reload и невнятными стектрейсами.

Единственно, что выделяет Clojure, это огромнейший хипстерский хайп вокруг нее, и соответственно, допизды всяких библиотек(95% из них подчиняются известному правилу, но есть и годные). Соответственно, больше людей, в том числе тех у кого что спросить можно.

Думаю, причина ответа ПГ именно в этом.
>>740278
#282 #740220
>>740059
Знаешь ли, далеко не всем jvm подходит как платформа, а в другие кложура by design не умеет.
>>740280
#283 #740278
>>740061

> Как язык - никакой.


Гораздо продуманней чем CL.

> Производительность - так себе.


Лучше чем у CL, если расставить пару тайпхинтов

> невозможностю нормально делать hot code reload


Что блять? Любой динамический var свапается в любой момент. Ты, видимо, не знаешь как на низком уровне делается code reload и веришь в какую-то магию.
>>740372>>740380
#284 #740280
>>740220
Привет, ClojureScript.
>>740309
#285 #740309
>>740280
Это другой язык с другим сообществом и библиотеками.
>>740385
#286 #740372
>>740278

>Лучше чем у CL, если расставить пару тайпхинтов


Ага, видел я эти "пару тайпхинтов", когда код переписывается в ещё более нечитабельную яву-дрисню со скобками.
#287 #740380
>>740278

>Что блять?


Насколько мне известно, там обновление кода через жопу сделано, из-за чего на ведроиде приходится сначала генерировать dex, а потом подгружать.
другой анон, если чо
>>740388
#288 #740385
>>740309
Нет.
Сообщество то же - все кто используют ClojureScript на фронте, используют Clojure на бэке.
Библиотеки, не работающие напрямую с платформой, работают и там и там.
Например core.async - библиотека CSP и корутин - работает и там и там. Timbre, specter, instaparse, да практически все либы, которые имеет смысл делать кроссплатформенными - сделаны кроссплатформенными (после того как в 1.7 ввели reader conditionals).
>>740398>>740428
#289 #740388
>>740380
С Андроидом ситуация такая:
Dalvik не позволяет использовать classloader в рантайме. А в Clojure всё на этом построено, т.к. исполнение коде в рантайме делается через класслоадер.
Поэтому для Android приходится делать AOT компиляцию и отказываться от исполнения кода в рантайме.
На других JVM таких проблем нет.
>>740398
#290 #740398
>>740385

>Сообщество то же - все кто используют ClojureScript на фронте, используют Clojure на бэке.


Судя по проектам на гитхабе, пишут только на кложескрипте, видимо на серверную сторону выбирают что-то полегче jvm.

>Библиотеки, не работающие напрямую с платформой


Таких не бывает.

>Например core.async


Насколько я помню, там код продублирован отдельно для кложескрипта и отдельно для кложуры.
>>740388
Ну ок. А существующие объекты после обновления класса используют новую или старую версию?
>>740427>>740433
#291 #740427
>>740398

> Судя по проектам на гитхабе, пишут только на кложескрипте, видимо на серверную сторону выбирают что-то полегче jvm.


Из чего ты деалешь такие выводы? Не знаю ни один проект, где так делают.

> Таких не бывает.


Смотри список выше.

> Насколько я помню, там код продублирован отдельно для кложескрипта и отдельно для кложуры.


Да, действительно. Но там дело в том, что она вышла во времена 1.6, а переписывать они не стали.
Посмотри остальные популярные либы, там всё через *.cljc
>>740438
#292 #740428
>>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]
Разве могут быть в __таком__ языке библиотеки, на работающие с платформой. И ты ещё что-то про бóльшую продуманность говорил.
#293 #740433
>>740398

> Ну ок. А существующие объекты после обновления класса используют новую или старую версию?


Там не сам класс меняется, а используется фича исполнения кода при загрузке класса.
Динамичность достигается через varы, которые можно свапать (с определённой семантикой).
>>740438
#294 #740434
>>740428
Список выше.
#295 #740435
>>740428
Кстати, почему просто slurp не используешь?
>>740438
#296 #740438
>>740435
Это ты у рича хикки спроси, почему он повсеместно использует подобную дрисню вместо того, чтобы один раз сделать нормальную обертку.
>>740427

>Из чего ты деалешь такие выводы?


Я как-то искал хоть какие-нибудь проекты на кложуре. И это оказалось не так-то просто, везде один лишь кложескрипт.
>>740433
А, понял. Ну а с объектной системой как? Допустим, написал я в кложе класс, создал несколько объектов, а потом класс изменил.
>>740481
#297 #740481
>>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)
>>740662
36 Кб, 300x320
#298 #740487
Что в ОП-посте делает Tcl?
>>740701
#299 #740662
>>740481

>Кусок кода с BufferedReader выложен на сайте чтобы проиллюстрировать интероп с JVM.


Тот кусок кода взят из реализации кложескрипта с гитхаба.
>>740767
#300 #740701
>>740487
А что не так? Tcl - типичный лисп
>>749038>>758160
#301 #740704
Вот вроде послушаешь про кложуру - кажется, неплохой язык.
Но начинаешь щупать, так появляется стойкое ощущение, что тебя обманули.
>>740768
#302 #740767
>>740662
Нашёл. Это используется в чтении ответа от процесса ноды. В обычной жизни такое пишется нечасто.
Кстати, в каких языках (кроме Эрланга) читать бинарный поток удобнее?
>>740836
#303 #740768
>>740704
Поделись впечатлениями.
#304 #740836
>>740767
Да там в любой модуль загляни - везде ява-кишки ковыряют.

>Кстати, в каких языках (кроме Эрланга) читать бинарный поток удобнее?


Ну, как-то на общелиспе pbf разбирал. Вроде не так уж и плохо, хотя эрланговским сопоставлением с образцом было бы удобнее, да.
#305 #740841
Clojure язык довольно убогий, но популярный.

Хотя я так и не понял, почему все так хвалят его за то что он на JVM, а сами JVM не любят и стараются использовать поменьше.

Ну и да, никаких ридер-макросов, код-релоад через жопу, кривое и тормозное STM, нет нормальных примитивных структур данных, нет нормального ООП, макросы говно, мультиметоды - пародия на коммонлисповые, нет сигналов, РЕПЛ ДЛЯ ЕМАКСА ЗАПУСКАЕТ ДВА ЖАВАПРОЦЕССА ПО 600 МЕГАБАЙТ ОПЕРАТИВКИ БЛЯДЬ(у того же SBCL тихо крутится 50мб от силы, и это на 64бит).

ClojureScript хорош(но разве что по сравнению со скалажс и собсно жс)

А еще вокруг Clojure куча тупых хипстеров и хайп, что дичайше бесит.

_мимо лавсан_
>>740845
#306 #740845
>>740841
А что там не так с кодрелоадом, макросами и мультиметодами?
>>740851
#307 #740851
>>740845
рекомендую потыкать CL, разница станет очевидна

кодрелоад в JVM это само по себе анал и боль, но в Clojure это вообще смерть как закостылено. Вроде работает, но не как в CL. Макросы слабее. У них не определена семантика, меньше спецформ(macrolet? symbol macros? Не, не слышали. lexenv в макросах? Похуй, сделаем хоть чо то[тут рекомендуется сравнить с SBCL, есличо]). Мультиметоды рядом даже с CL не стояли. В CL дичайшая система обобщенных функций, которая вся выражается через MOP, и компиляцию в рантайме. Еще там классы крутые, но это отдельная история. Короче после CL - Clojure кажется поделкой на коленке.

Ну и да - кто там говорил про продуманность Clojure выше? Не особо она продуманная, это скорее что-то типа Python - типа, сделаем на глазок, быстренько и красивенько, поднимем хайп, а на остальное похуй. CL же - это результат эволюции нескольких передовых лиспов из 80х плюс комитет умнейших чуваков, заседавший 10 лет.

мимо лавсан
>>740893>>740960
#308 #740893
>>740851
Жалко только что они из этих лиспов кучу легаси притащили. А еще напрягает что в стандартной либе нихуя нужного нету. Впрочем, есть квиклисп. Но хочется чтобы хотя бы как в елиспе было: на каждый чих готовая функция.
>>740953
#309 #740953
>>740893
ну так а что им было делать
80, куча лиспов, давление вендоров

сейчас стдлиб кажется устаревшим, да, но тогда он был передовым

алсо, рекомендую помогать мне пилить новый стдлиб
https://github.com/Lovesan/CLR/
#310 #740960
>>740851

>это скорее что-то типа Python - типа, сделаем на глазок, быстренько и красивенько, поднимем хайп, а на остальное похуй


Что не так с Питоном?
>>740966>>741000
#311 #740964
>>740953
Зачем создавать новый велосипед? Почему бы не допилить сузествующий (cl21, например)?
Ну и хоть бы планы/цели расписал.
>>741000
#312 #740966
>>740960
А что с ним так?
>>740972
#313 #740972
>>740966
я тебя спросил
>>740992
#314 #740976
>>740953

>прошло полгода


>200 sloc



Давай, удачи!
>>741000
#315 #740991
>>740953
Лучше бы показал хоть один написанный тобой проект на CL.
>>741005
#316 #740992
>>740972
Нет, не меня
#317 #741000
>>740964
cl21 это в осн. синтаксический сахар. А у меня там задатки на норм стдлиб, на функциональность. Слизываю с CLR потихому, но а откуда еще слизывать?
>>740976
работы дохера
>>740960
- Неконсистентность семантики("чойта тут воткунто?" пример - print - функция или встроенное чото? Или там, лямбды)
- Плохая обратная совместимость, конфликт 2 и 3
- Тормоза. Бля, CPython(99% питона в мире) тормозит как пиздеееееец. Бедная gentoo евпоча.
- GIL
- Общая, какая-то, ну не знаю, нейстройность языка. Ну вот нахуя можно использовать окружение как dict? Что за ебаный бред? Это же не скомпилировать, и не оптимизировать нормально. Что за self как явный аргумент, хотя у нас классическое классовое ООП, а не JS, и не смоллтолк? Итд.
- Куча хипстеров, с говнобиблиотеками, которым дай волю, ядро прыщей на питон перепишут.
- Вообще, все это easy(в противоположность simple), типа php, питона итд, оно провоцирует говнокод и непрофессионализм в программировании. А потом мы удивляемся, почему так упали рейты.
- Итд. Спать хочу, забыл апрельские тезисы
>>741016
#318 #741005
>>740991
два самые крутых проекта, которые я когда-либо делал для опенсорса на CL, это virgil и doors.
На гитхабе есть:
https://github.com/Lovesan
Первый - FFI с подходом полной сериализации в/из сишной памяти. Типа, абсолютно прозрачная работа с сишкой и вообще foreign кодом как с лисповыми объектами.
Doors - интерфейсинг WinAPI, но самая доделанная часть, за которую мне не раз спсб говорили - это интерфейс к COM. Можно в т.ч. и создавать свои COM-сервера(для SBCL и других не умеющих в DLL только out-of-process ессно).
#319 #741016
>>741000

>cl21 это в осн. синтаксический сахар.


Ну не совсем. Там больше реструктуризация, избавление от устаревешего говна, прикручивание всяких александрий.

>Слизываю с CLR потихому, но а откуда еще слизывать?


С дотнета шоле или того забытого проекта или он не clr звался, а как-то похоже обновления общелиспа?

>Бедная gentoo евпоча.


Она бедная из-за libbash, а не только питона.
>>741019
#320 #741019
>>741016
да, CLR типа дуднет.
Если полезть в мой код, можно наблюдать там прямой пиздинг интеллектуальной собственности
>>741432
#321 #741432
>>741019
А ClojureCLR использовать не думал? Там интеграция с дотнетом теснее некуда.
9 Кб, 651x64
#322 #743663
Подчеркивает как unreachable code (slime + sbcl), хотя вроде все работает. Почему так?
#323 #743870
>>706909

>Как думаете, почему лисп потерял популярность в 60-70?

#324 #744110
>>743663
А вот хуй знает.[code]
; 728: F7F9 IDIV EAX, ECX
; 72A: C1E002 SHL EAX, 2
; 72D: 85D2 TEST EDX, EDX
; 72F: 7507 JNE L3
[/code]
Судя по сгенерированному коду, (zerop (mod ...)) на месте.
#325 #744116
>>743663

> deleting unreachable code


> --> LET IF AND IF AND THE IF PLUSP >


А, может быть, там подставляется проверка аргументов на неотрицатльность, а затем удаляется, т.к. из их типов ясно, что они положительны.
>>744119
#326 #744119
>>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]
#327 #744272
Поясните за ньюлисп, почему там интерпретатор 1 мегабайт весит? Разве так бывает?
>>744283
#328 #744283
>>744272
Почему нет-то? Это ж просто интерпретатор, а не образ лисп-системы как у общелиспа
>>749304
#329 #745700
>>706909
AI Winter
#330 #748136
http://lisp-lang.org/
Теперь и у лиспа есть хипсторский сайт. Дотянулись таки... суки
>>750030
#331 #749038
>>740701
Где мои скобочкии??
>>749261
#332 #749261
>>749038
]]]]]]]}}}}}
>>749378
#333 #749304
>>744283

>Это ж просто интерпретатор, а не образ лисп-системы как у общелиспа


А чем ньюлисп хуже/неполноценнее нормального (того же общелиспа)? Нельзя компилировать код в екзешник или что? Я просто сейчас книжку читаю http://www.fuzzylisp.com/book.html там все примеры на ньюлиспе, возможностей там явно не меньше, чем в каком-нибудь пистоне.
>>749325
#334 #749325
>>749304
а откуда мысль, что он хуже, он просто другой
#335 #749378
>>749261
но они должны быть круглыми!!111 а этом вся суть нелисп!!
#336 #750030
>>748136
Как будто темку на вордпрессе глянул
#337 #750771
Сап аноны.
У меня "трагедия", я пишу на ruby за денюжку в одной конторе вот уже почти 5 лет. В последний год раби мне с каждым днем становится противен не знаю пока почему. Решил посмотреть в сторону Си, начать сначала так сказать. но нет. Читаю сейчас SICP, делаю упражнения и вы знаете, для меня будто открывается новый мир совершенно иной настолько яркий. Лисп очень крутой язык. Паралелльно посмотрел на clojure. Прочел статью Пола Грэма http://www.nestor.minsk.by/sr/2003/07/30710.html
и тут понеслись у меня мысли. Посоветуйте мне на какой путь встать? Продолжать дальше писать на руби и не рыпаться, пересесть на Лисп? Но какой? Common Lisp? Clojure?
#338 #751137
>>750771
Ну, если найдешь работу, перекатывайся конечно
#339 #751633
>>750771
Почему "или"? Продолжай писать на руби и перекатывайся на common lisp. Если даже не найдешь ему платного применения, то получишь хотя бы полезный опыт.
#340 #751992
>>750771
не слушай этих дебилов с комон лиспом. Сейчас даже Пол советует Кложу.
>>752748
#341 #752124
>>750771
Однозначно кложура - она сейчас на переднем крае во всех перспективных областях. Достаточно посмотреть на список книжек на любой помойке типа http://it-ebooks.info/tag/clojure/ . Кложуру за несколько лет продвинули в разы дальше, чем коммонлисп за все 160 лет его существования.
>>752759
#342 #752141
Не могу осилить трансдюсеры. Вроде всё понятно, но у меня какое-то постоянное ощущение, что это какое-то неправильное костыльное говно, а Рич Хикка наркоман.
>>752152
#344 #752748
>>751992
А что по-твоему ещё он мог посоветовать негру?
#345 #752759
>>752124

>Однозначно кложура - она сейчас на переднем крае во всех перспективных областях.


Или, если перефразировать, часть вебжавахипстеров, что не осилила скалу, использует кложу. На этом её применение заканчивается.

>Кложуру за несколько лет продвинули в разы дальше, чем коммонлисп за все 160 лет его существования.


Кложу никуда не продвигали, она паразитирует на жвм и лиспах.
>>750771
В общем, не слушай этих жвм-сектантов. Кложа, если сравнивать с общелиспом, довольно дряной язык: ни сигналов, ни нормального ООП, ни эффективных реализаций, и всё это помножается на многочисленные минусы жвм и жавы, которая там изо всех щелей проглядывает >>740428
#346 #752800
Лиспаны, с помощью MOP как-нибудь можно внедриться в процесс генерации сеттеров? Хочу добавлять свой код к телу сеттера, но не хочу занимать after-метод, т.к. он может понадобиться программисту. Что делать?
#347 #753134
>>752759
Аноны, когда будете читать тот пост помните о том, что его пищет 27-летняя нищая пидораха, которого выперли (не взяли) со всех адекватных работ и он разразился соплями в одном из соседних тредов.

А пока пидораха ныл как все плохо, Хик написал еще одну охуительную штуку.
http://clojure.org/about/spec
>>753769>>753807
#348 #753182
>>752759

> она паразитирует на жвм и лиспах.


Ваще-то это лиспы сейчас паразитируют на кложуре. Народ сначала осваивает ее, а потом в редких случаях интересуется подножием эволюционной лестницы :)

> ни сигналов


Зачем они?

> ни нормального ООП


Нормальное там ООП.

> ни эффективных реализаций


Под JVM и JS - какие тебе еще нужны реализации?

> и всё это помножается на многочисленные минусы жвм и жавы


Часть чуда-то как раз в том, что кложура работает на жвм, интероперабельна и хорошо встроена в инфраструктуру.
>>753769
#349 #753488
>>752759

>что не осилила скалу, использует кложу


Ага, а лисп для тех кто не осилил алгол.
>>753769
#350 #753769
>>753488
Наоборот, тащемта.
>>753182

>> ни сигналов


>Зачем они?


В каком смысле? Ты не знаешь, что это такое? Или не понимаешь, как их использовать?

>Под JVM и JS - какие тебе еще нужны реализации?


Эффективные, написал же.

>Часть чуда-то как раз в том, что кложура работает на жвм, интероперабельна и хорошо встроена в инфраструктуру.


Ага, один большой неидиоматичный "плюс" >>740428
Уж если бы я оказался прикованным к жвм, то предпочел бы скалу, котлин, которые намного более гармонично вписываются в жава-мир и у которых хотя бы эффективный код на выходе, или в крайнем случае саму жаву, но никак не этот сплошной недостаток с именем "кложура"
>>753134
Эко ж тебя, успешного кложуриста-первокурсника, порвало.
#351 #753807
>>753134

>http://clojure.org/about/spec


Р. Хикки как всегда на острие технологий.
И кого ты этим хотел в лиспотреде удивить?
#352 #754862
Всем снова здравствуйте!
Спасибо всем за ответы но вы меня еще больше запутали. я сейчас решил почитать The Land of Lisp, а там посмотрю и Common Lisp и Clojure.
>>755886
#353 #755130
Сап, лиспаны. У меня тут какая-то странная проблема нарисовалась. Ставлю sbcl, ставлю на него quicklisp. Выясняется, что встроенный asdf устарел, и надо бы накатить версию посвежее. Качаю дист, запускаю install-asdf.lisp. Пробую поставить какой-нибудь пакет через быстролисп. Работает, радуюсь. Пробую сегодня - некоторые пакеты валятся с ошибкой
Unknown &KEY argument :NAMESTRING
При вызове uiop/pathname:ensure-pathname путь к uiop :NAMESTRING :NATIVE :ENSURE-DIRECRORY T). Как я понял, в вызов не передается путь к либе. А почему, я так и не понимать.
>>755166
#354 #755166
>>755130
Отбой, все починилось установкой самой свежей версии
>>755170
#355 #755170
>>755166
Версии sbcl. 1.3.5 поставил.
минификс
#356 #755886
>>754862
ты либо троллишь либо троллишь.
#357 #757598
Пробую вот на mcclim писать, а ведь вроде даже и ничего.
#358 #758160
>>740701
Tcl задрочен на строках, а в остальном схожесть с лиспом не больше, чем у других языков, на которые повлиял последний. Он не больше лисп, чем JavaScript, например. INB4 "Да я овер 100 тисиэлевых килослоков на коленке за вечер пишу, ко-ко-ко…".
>>758173>>758377
#359 #758173
>>758160
Столман, залогинься.
#360 #758377
>>758160
А что "остальное"-то?
#361 #758492
Есть смысл читать Луку Карделли?
>>758499
#362 #758499
>>758492
А это кто?
>>758981
#363 #758981
>>758499
))))))
#364 #759065
Лейнаны, почясните за раницу между ракетом и схемкой? Сильна ли она?
>>759118
#365 #759118
>>759065
И вообще, какие у ракеты слабые места по сравнению с common lisp/clojure?
>>759216
#366 #759129
>>705167 (OP)
Я понял!!! Динамические петушки - контрамоты. Они движутся во времени назад. Как было на самом деле: протоцепепе - ЛИСП 50-80 гг. C++ 80-90 гг. Haskell - новая версия цепепе. 90-00 гг. С точки зрения лиспопетушка сначала был Хаскель, в следующей версии он деградировал до цепепе, а в лиспопетушином будущем цепепе деградирует до лиспа.
А я все ломал голову, как человек может так ненавидеть будущее, так привязаться к прошлому, что пишет на лиспе? Но для лиспопетушка-контрамота лисп - это и есть будущее. А дальше ВВ2, индустриальная контрреволюция, религиозные войны, рабовладельческий строй, отрастание хвостов и подъем на деревья. Скай из зе лимит!
>>759256
#367 #759130
Лиспаны! а ваш тред хоть раз был в топе?
157 Кб, 540x720
#368 #759133
Почему для того чтобы нарисовать простенький график(https://goo.gl/tqHAHL) racket`у требуется несколько секунд и ~300 мб памяти. У других лиспов (sbcl) такая же лажа?
>>759222
#369 #759216
>>759118

>И вообще, какие у ракеты слабые места по сравнению с common lisp/clojure?


Реализация. Ракетчики так не осилили запилить нормальный компилятор.
>>759488>>760308
#370 #759222
>>759133
Вангую, что эти несколько секунд уходят на (require plot).

>~300 мб памяти


Что-то дохуя. Даже для ракеты и даже для его жирноватой ide.
Попробуй сборщик мусора вызвать.
>>759488
#371 #759256
>>759129
Лисп задрал настолько высокую планку, что ни один из прошлых и нынешних сиплюсплюсов её не достиг.
>>759513
#372 #759264
Lisp Engineer - $2500/month - WORK FROM HOME
Москва • 1 июня

https://hh.ru/vacancy/17258963
>>759499
#373 #759322
Читаю ansi lisp. Там поясняют за указатели. Как вы вообще отличаете, когда функция работает с указателем, а когда - со значением? Тот же пример копирования списка из книги - каким боком я должен догадаться, где передается указатель, а где создается новая область памяти для значения?
>>759333
#374 #759333
>>759322
Наркоман что ли? В лиспе всё есть объект, поэтому считай, что передаешь по указателю.
>>759345
sage #375 #759345
>>759333
Окей, ясно. Там просто есть функции, которые конструируют новые объекты, и я затупил на этом примере. Башка не варит что-то.

ЗЫ, а циферки типа уже по значению передаются?
(setf a 1)
(setf b 1)
(eql a b) ->T
>>759391>>759758
#376 #759391
>>759345
Зависит от реализации.
84 Кб, 1000x667
#377 #759488
>>759216
А какие слабые стороны реализации? Если говорить о скорости, то на бенчмарках racket вполне на уровне (среди других схем) - http://ecraven.github.io/r7rs-benchmarks/benchmark.html
В моих кейсах racket тоже оказался самым быстрым(сравнивал с guile и chicken). Расстраивает только потребление памяти и долгая загрузка библиотек.
То есть главный недостаток racket - низкая производительность?
>>759222

>(require plot)


А почему он так долго его загружает? Он его с нуля компилирует что-ли?
>>759756
#378 #759499
>>759264

>5 years or above c/c++ development


>the top 1% of talent


>1500-2500$


мда
>>759763
#379 #759513
>>759256
А haskell?
#380 #759736
Программач! посоветуй книгу по common lisp. Чаще всего рекомендуют Practical Common Lisp (пролистав ее сложилось впчетление, что она для brain-damaged), а Норвиг советует ANSI Common Lisp + On Lisp.
Или лучше вкатываться в кложуру?
>>759755
#381 #759755
>>759736
PCL и Onlisp
>>760447
#382 #759756
>>759488
Я с общелиспом сравнивал.
Все реализации схемы сосут.
>>760313
#383 #759758
>>759345
В реализациях лиспа используются тегированные указатели, а числа, буквы в них упаковываются.
#384 #759763
>>759499
Так и ищут по удаленке, потому что на нормальных условиях такая работа стоит в 2 раза больше.
#385 #759800
Значит так, лайкаем и форкаем мой CLR, новую стдлибу для коммонлиспа.

Решил снова за нее взяться.
Сегодня ночью впилил нормальные обобщенные словари как в дуднете, и синтаксис для них как в Clojure (типа {:a 1 :b 2})

https://github.com/Lovesan/CLR

Пока реализация есть только для SBCL. А треды и тредпулы только под винду. Потому что я ебал линукс в рот пока не закончу основную реализацию.

мимолавсан
#386 #759802
>>759800
Так, напиздел. Для SBCL-Linux треды и тред-пулы тоже работают. А вот IO первым делом будет под винду.

мимолавсан
#387 #759809
>>759800

>и синтаксис для них как в Clojure (типа {:a 1 :b 2})


Фууу, разные скобочки. Чем тебя вариант типа #h(:a 1 :b 2) не устроил?
>>759811
#388 #759811
>>759809
хз, привычнее ля кложуреблядков, которых есть замысел переманить после дописывания
>>759812>>759819
#389 #759812
>>759811
хотя мб голосование потом устроить. поменять то нехуй делать
>>759814
#390 #759814
>>759812
О, придумал.
#h(...) Это будут сеты. hset. Или #{}
хз
>>759819
#391 #759819
>>759811
Мелочь-то незначительная, а столько неудобств от неё.
Никогда не понимал этих ]}]))}]
>>759814
#d для словарей, например. Да букв-то полно, хуле. На всех хватит.
#392 #759916
>>759800
А зачем ты ffi велосипедишь? Не целесообразнее ли взять cffi, которая де-факто стандарт?
>>760472
#393 #760287
После непродожительного паралелльного изучения Common Lisp и Clojure мое мнение:
Как сферический язык в вакууме cl заруливает.
Как инструмент для решения проблем рулит и педалит кложура
>>760450
#394 #760308
>>759216
Зато там батарейки и очешуительные доки
>>760310
#395 #760310
>>760308
блджад, если сделают эффективную реализацию и начнут пиарить, Racket может взлететь, мне кажется
#396 #760313
>>759756
Chez Scheme неплохая. Только у нее в поставке даже srfi нет
#397 #760447
>>759755
Выбрал The Joy of Clojure
>>760467
#398 #760450
>>760287
ни один уважающий себя современный разработчик не выберет язык с мутабельными типами данных и отсутствием нормальных конкарренси примитивов.
>>760469
#399 #760467
>>760447
Толсто
#400 #760469
>>760450
ни один уважающий себя современный разработчик не выберет язык без зависимых типов. А тем более жаву да ещё и с покореженным синтаксисом.
>>760471
#401 #760471
>>760469
Не джаву, а jvm.И синтаксис гораздо лучше чем в common lisp.
>>760474
#402 #760472
>>759916
Это будет библиотека абсолютно без внешних зависимостей
#403 #760474
>>760471
Маня, синтаксис в Common Lisp это вопрос решаемый не приходя в сознание

Если бы ты смотрел мой доклад на ITGM, где я из CL сделал сначала JS, а потом PHP, понял бы что к чем

мимолавсан
>>760477
#404 #760477
>>760474

>>я из CL сделал сначала JS, а потом PHP


Толку от этого ноль
#405 #760478

> мимолавсан


кто такой, чем знаменит?
>>760479
#406 #760479
>>760478
Поборник лиспа и мелкософта из /c/. Вел охуительный блог http://juick.com/lovesan/ где знатно доставлял, поливая всех и вся говном. Особенно не любит швабодную ос и пиздолизов. Читать в первую очередь теги долбоебы, прыщи, *Haskell (его тоже в основном говном поливает). Не взяли в джетбрейнс. В свободное время пишет биндинги на коммон лиспе. Верит, что метапрограммирование спасет мир.
>>760481
#407 #760481
>>760479
может он уже дропнулся? новых записей ни в жж, ни в жуйке, ни на лоре с 2015.
>>760482>>760487
#408 #760482
>>760481
он же был какой-то пиздастрадалец омежка и заливался от этого огненой водой.
#409 #760487
>>760481
На гитхабе коммитить начал снова недавно ведь.
>>760490
#410 #760490
>>760487
ага, 5 коммитов вчера, из запоя что-ли вышел?
Пропил мозги нахуй.
Вообще печально что архимаг забросил, тот реально лиспкун, и его вклад в рашнлиспкомьюнити на уровне ксача.
sage #411 #760721
Почему в CL нельзя просто взять и передать функцию аргументом, як в Scheme? Нужно квотить, делать funcall. С чем это связанно? Я нуп.
>>760741
#412 #760741
>>760721
У CL раздельные пространства имен для функций, переменных, пакетов и т.д., а у схемы одно на всё.
>>760743>>760778
#413 #760743
>>760741
Предвосхищая вопрос зачем это - из-за того что в cl макросы не hygenic
>>760755
#414 #760755
>>760743
Можешь раскрыть, как это может быть взаимосвязано?
>>760803
sage #415 #760778
>>760741
А почему через лямбду можно? Если смотреть в топ-левеле, то лямбда вроде возвращает то же.
((lambda (x) ( x x)) 4) <--работает
((symbol-function '
) 4 4) <--нет
>>760779
sage #416 #760779
>>760778
В symbol-function подаётся '*
#417 #760803
>>760755
В Lisp 2 гораздо проще избежать коллизию имен.
>>760893
#418 #760893
>>760803
Типа, логика в том, что больше неймспейсов -> меньше коллизий -> гигиена нинужна?
>>760897
#419 #760897
>>760893
тут крушал поинт именно в том, что функции(которые обычно глобальные) в отдельном неймспейсе, да
>>760929
#420 #760929
>>760897
ну и говно
>>760988
#421 #760988
>>760929
У clojure один namespace
>>761068
#422 #761068
>>760988
Там можно кастомные неймспейсы создавать.
>>761277
#423 #761277
>>761068
Я имел в виду что, в кложе имен функций и переменных находятся в обном пространстве, как и должно быть в функциональном языке
>>761919
#424 #761902
Лиспач! стоит ли читать Purely Functional Data Structures?
#425 #761919
>>761277
А call/cc вам завезли?
>>761920>>761922
#426 #761920
>>761919
Смешно.
мимо кложурист
>>761923>>761925
#427 #761922
>>761919
Нет (
>>761925
#428 #761923
>>761920
А мне грустно
#429 #761925
>>761920
>>761922
В какие-то ограничения жвм все упирается, что ли? В Kawa Scheme же запилили как-то.
#430 #762587
Кто нибудь может объяснить, чего Хикки так тащится от JVM?
>>762589
#431 #762589
>>762587
Ему gc самому было лень делать?
#433 #765144
>>765131
мне бы в джаваскрипт...
>>765446>>767818
#434 #765446
>>765144
parenscript
#435 #767818
>>765144
jscl жи есть
#436 #767936
Господа, что я делаю не так в реализации итеративного вычисления цепной дроби? https://ideone.com/7fiRh4

У островных полубогов код точно такой же, но рабочий:
http://wat-aro.hatenablog.com/entry/2015/10/08/061911
>>767979
#437 #767979
>>767936
[code]
(define (frac i)
(if (__<__ i k)[/code]
[code]
(define (recur i)
(if (__=__ i k)[/code]
>>767996
#438 #767996
>>767979
Рекурсивное говно, а надо сделать итеративно.
>>767998
#439 #767998
>>767996
Сравнение, говорю, у тебя не то. Должно быть =, а у тебя <
>>768020
#440 #768020
>>767998

>Должно быть =, а у тебя <


Я спрашиваю про реализацию cont-frac-iter в моем коде на идеоне. У меня там =.
>>768037
#441 #768033
Странно, что по запросу SICP выдается столько японских сайтов. У пидорашек книга непопулярна.
>>768039
#442 #768037
>>768020
А, вижу. Ты с именем там обосрался. У тебя frac-iter, а должно быть просто iter.
Воспользуйся рэкетом, там подобные ошибки сразу выявляются.
>>768053
#443 #768039
>>768033
У нас просто не принято вести блоги о решении задач для первокурсников.
>>768060
#444 #768053
>>768037
Неа, вычисляется неправильно.
https://ideone.com/64MST8
>>768054
#445 #768054
>>768053
Оно и не должно: (lambda (i) 1.0)
#446 #768060
>>768039
Потому что даже их осилить не могут или пишут в блогах про "смотрите, какая хуйня случилась в этом фреймворке, и вот как я с ней справился".
>>768083
#447 #768083
>>768060
Что там осиливать? Задачи рассчитаны на первокурсников.
Уж не с политача ли ты залётный? Не понимаю, что за тенденция такая выставлять себя хуже в сравнении с какой-то другой нацией.
>>768088>>768199
#448 #768088
>>768083

>что за тенденция такая выставлять себя хуже в сравнении с какой-то другой нацией


А чем мы лучше? По технологиям мы сосем, наши бабы известны на весь мир как отъявленные шлюхи. Нет ничего проще, чем снять Наташку и купить русского быдлокодера для аутсорса.
>>768090>>768108
#449 #768090
>>768088
ясно
#450 #768108
>>768088
Однако сильная штука, эта ваша пропаганда. Что ж такое человеку-то нужно сказать, чтоб он сам себя ненавидеть начал.
>>768185
#451 #768185
>>768108
Он не себя ненавидит, а считает что вокруг него одни говноеды, а он сам рыцарь на белом коне, просто ему видите-ли не повезло родится в этом болоте.
#452 #768199
>>768083
задетектил лавсана. не обращайте внимания, местная ебанутая нищенка
>>768243
#453 #768243
>>768199
Сомневаюсь, что то был лавсан, потому что писал я
#454 #769886
>>705167 (OP)
В список диалектов AutoLISP добавьте (скриптовый язык AutoCAD), до Clojure это был самый популярный лисп.
>>770116>>770230
#455 #770116
>>769886
Он никогда не был популярнее общилиспа
>>770117
#456 #770117
>>770116

>обще


быстрофикс
#457 #770230
>>769886
Сам и добавь. Шапка в титанпаде
#458 #773346
>>705167 (OP)
Кложурогоспода, как мне запилить структуру с состоянием? Прочитал про type, но вот не пойму как в нем хранить внутреннее состояние.
Допустим, мне нужно хранить состояние подключения во внутреннем поле типа Database. Я объявляю тип как
(deftype Database [url] (connect [db] ...) (disconnect [db]))
Экземпяр Connection мне нужно хранить в приватном поле, и создавать его при вызове метода connect, а если я укажу его в квадратных скобках при объявлении типа, то он будет публичным. Тащемта может дело в том, что я думаю объектно-ориентированно, но вот для этой задачи ооп на мой взгляд луше всехо подходит, ибо экземпляров Database нужно несколько, и у каждого из них будет свое состояние.
>>773394>>773413
#459 #773394
>>773346
а почему тебе не завести атом для состояния подключения и написать для него функции-обработчики?
>>773518
#460 #773413
>>773346
А зачем тебе изменяемое поле для соединения?
(connect {:host host :port port :database db ...}) => {:connection conn :conn-info {:host ...}}
И то я сомневаюсь, что эта информация не продублирована в самом объекте соединения.
>>773513
#461 #773513
>>773413

>А зачем тебе изменяемое поле для соединения?


Идея в том, чтобы те кто работают с Database не пользовались даже connect. Я хочу при обращении к методу read-data проверять наличие соединения, и если оно есть то реюзать, а если нету то устанавливать новое с помощью connect. Вот, и вопрос в том где хранить это состояние. Database должен сам менеджить свое внутреннее состояние, а те кто обращаются к read-data могут.

Сейчас я вижу только один выход: при образении е методам Database ему еще должен передавать хешмап, в который он будет складывать свое состояние, и так при вызове каждого метода. Если так и нужно поступать в данном случае то ок, но вообще я искал решения похожего на классическое ооп с его инкапсуляциями.
>>773759
#462 #773518
>>773394
потому что само по себе подключение это особенность реализации Database. Database реализует протокол Readable в моем поделии, а кроме него есть еще TextFile, который тоже реализует Readable, но у него нет connection внутри, ему даже и хранить своего состояние не нужно.
#463 #773546
Помогите разобраться, как развернуть рекурсивный вызов в последовательность применения функций. Я запутался. И еще: почему-то лямбда, примененная к значения, не печатает число на экран даже если использовать (display).

https://ideone.com/DZZxwq
>>773550
#464 #773547
Это снова я, нашет вот такой гист https://gist.github.com/shinmuro/9338262

Попробовал в репле:
user=> (defprotocol IEditName
#_=> (get-name [this])
#_=> (set-name! [this val]))
IEditName
user=> (deftype PersonName [^:volatile-mutable lname]
#_=> IEditName
#_=> (get-name [this] (. this lname))
#_=> (set-name! [this val] (set! lname val)))
user.PersonName
user=> (def pname (PersonName. "hoge"))
#'user/pname
user=> (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]))
Readable1
user=> (deftype Database [url] Readable1
(connect [this state] (assoc state :connection "Fake connection"))
(read-data [this state] (if (state :connection) "Lorem ipsum dolor" "ERROR")))
user.Database
user=> (deftype TextFile [name] Readable1 (connect [this state] nil) (read-data [this state] "File content"))
user.TextFile
user=> (def db (Database. "jdbc://blablalba"))
#'user/db
user=> (read-data db {})
"ERROR"

В этом решении состояние Database мне приходится таскать с собой, а для TextFile мне это состояние как корове пятая нога. Вот два варианта решения я придумал, но что-то мне подсказывает что оба они неправильные, поэтому прошу помощи здесь.
#464 #773547
Это снова я, нашет вот такой гист https://gist.github.com/shinmuro/9338262

Попробовал в репле:
user=> (defprotocol IEditName
#_=> (get-name [this])
#_=> (set-name! [this val]))
IEditName
user=> (deftype PersonName [^:volatile-mutable lname]
#_=> IEditName
#_=> (get-name [this] (. this lname))
#_=> (set-name! [this val] (set! lname val)))
user.PersonName
user=> (def pname (PersonName. "hoge"))
#'user/pname
user=> (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]))
Readable1
user=> (deftype Database [url] Readable1
(connect [this state] (assoc state :connection "Fake connection"))
(read-data [this state] (if (state :connection) "Lorem ipsum dolor" "ERROR")))
user.Database
user=> (deftype TextFile [name] Readable1 (connect [this state] nil) (read-data [this state] "File content"))
user.TextFile
user=> (def db (Database. "jdbc://blablalba"))
#'user/db
user=> (read-data db {})
"ERROR"

В этом решении состояние Database мне приходится таскать с собой, а для TextFile мне это состояние как корове пятая нога. Вот два варианта решения я придумал, но что-то мне подсказывает что оба они неправильные, поэтому прошу помощи здесь.
#465 #773550
>>773546
На данный момент вывод моей программы такой:

10
625
5
#<procedure:...SICP/1.43/ex.scm:27:8>
#<procedure:...SICP/1.43/ex.scm:10:8>

Почему-то вместо значения выводится <procedure...

https://ideone.com/GXmoZS

А на идеоне это вообще не работает.
>>773552>>773773
#466 #773552
>>773550

>А на идеоне это вообще не работает


С этим я разобрался. Это из-за #!
https://ideone.com/GXmoZS
#467 #773717
Что-то общелисперы совсем расслабились, тред уже кложуристы со схемерами начинают захватывать.
#468 #773759
>>773513
Храни соединение в динамической переменной.
read-data будет её проверять и, если она не забинжена, будет устанавливать соединение.
#469 #773773
>>773550

>Почему-то вместо значения выводится <procedure...


Ну подскажите, блеадь, что я делаю не так, когда разворачиваю рекурсию в последовательность применения функций.
>>773778
#470 #773778
>>773773
Скинь код, в котором это выводится
>>773781
#471 #773781
>>773778
Вот: https://ideone.com/GXmoZS
Хочу проверить, правильно ли я понимаю, как выполняется repeated, и убедиться в этом, вычислив значения развернутых выражений.
>>773782
#472 #773782
>>773781
Не выводится там никакой

><procedure:..

>>773787
#473 #773787
>>773782
В ракете выводится. И то, что не выводится вообще ничего - не то, что я хочу.
>>773793>>773797
#474 #773793
>>773787
Тебя интересуют две последнии лямбды, я так понимаю?
>>773801
#475 #773797
>>773787
В твоем коде ничего кроме двух чисел в stdout не должно выводиться.
#476 #773801
>>773793
Да. Таким образом я хочу смоделировать вызов ((repeated inc 5) 0) на каждом этапе рекурсии. Чтобы убедиться в том, что я делаю это правильно, получившуюся функцию я хочу применить к тому же значению, к которому применяется ((repeated inc 5) 0) - к нулю.
>>773816
#477 #773816
>>773801
https://ideone.com/9r0U3b
Это ты хотел? Ты там лишних лямбд нафуговал без вызова
>>774091
#478 #774091
>>773816
Откуда там 555?
>>774094
#479 #774094
>>774091
А, не посмотрел, что там нету newline, и все три результата выводятся на одной строке.
#480 #781242
Анон, подскажи гайд по привинчиванию гуя к программе на CL.
>>781606>>781765
#481 #781606
>>781242
Вариантов два
- Покупаешь LispWorks, используешь CAPI.
- Ищешь биндинги для библиотек тулкитов, пердолишься с ними.
>>781848
#483 #781848
>>781606
Есть ещё третий стул — McCLIM. Но у него только из стабильных бекендов только CLX.
>>781765
К тому списку нужно добавить qtools-ui. На данный момент он, пожалуй, самый пригодный для использования, но у него один большой минус — smoke. Автор вроде собирается избавиться от этого говна и запилить нормальные биндинги
>>782279
#484 #782266
Почему в CL
(= 1/10 0.1)
NIL
вот такая вот хуйня происходит?
#485 #782277
>>782266
Целочисленная операция / примененная к 1 и 10 дает 0.
Floating point numbers нельзя сравнивать на равенство.
>>782289>>782802
#486 #782279
>>781848

>McCLIM


CAPI от него и пошел. И недалеко ушел (это комплимент).
CLIM сейчас активно пытаются допиливать и перепиливать.
35 Кб, 212x212
#487 #782289
>>782277

>Целочисленная операция / примененная к 1 и 10 дает 0.


(= 1/10 0)
NIL
>>782338
#488 #782293
>>782266
Потому что одно число рациональное другое дробное?
#489 #782338
>>782289
Тебе про (/ 1 10) говорят, ты даже не понимаешь, только картинками запасся
>>782360
#490 #782360
>>782338

>Тебе про (/ 1 10) говорят


(= (/ 1 10) 0)
NIL

>ты даже не понимаешь


Очевидно, что не понимаю - иначе и не спрашивал бы.
>>782392>>782396
#491 #782392
>>782360

> (print (/ 1 10))


> 0

>>782417
#492 #782396
>>782360

> (= (/ 1 10) 0)


> t


> GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)

>>782417
#493 #782417
>>782392

> (print (/ 1 10))


> 1/10


>>782396

>(= (/ 1 10) 0)


>NIL


>This is SBCL 1.3.6, an implementation of ANSI Common Lisp.

8 Кб, 333x157
#494 #782802
>>782277
Что с вами не так то?
#495 #782862
А можно ли на лиспе сделать типы в виде функций?
>>782872>>782885
#496 #782872
>>782862
На Shen можно. И даже больше.
#497 #782885
>>782862
Параметризируемые шоле? Можно. Даже встроенные есть: integer &optional min max, cons &optional car cdr, simple-array type length и т.д
34 Кб, 400x267
#499 #783004
>>782889
Огромное спасибо!
#500 #785472
Какая есть удобная библиотека для нейроных сетей?
>>785478
#501 #785478
>>785472
Сам не пользовался, но что-то слышал про mgl или clml. Пощупай их.
#502 #785480
Пора бы, кстати, перекат запилить.
#503 #785489
>>785486 (OP)
>>785486 (OP)
>>785486 (OP)
Перекатываемся
Тред утонул или удален.
Это копия, сохраненная 23 июля 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски