Сохранен 504
https://2ch.hk/pr/res/592797.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Лиспотред №3

 Аноним 30/11/15 Пнд 20:45:48 #1 №592797 
14489055488720.jpg
Прерыдущий: >>565035 (OP) Текущая версия шапки: http://pastebin.com/x0jupErn

Лисп - семейство языков программирования. Характерные особенности лиспов: динамичность, гомоиконность (код как данные), программируемость.

Основные диалекты
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 сильно отразилась на дизайне языка, что многим не нравится.
Emacs Lisp - его область применения ограничивается емаксом. Является наследником ТОГО САМОГО MacLisp'а.
Tcl - скриптовый язык, оче удобен для написания скриптиков с окошками или edsl
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
Алсо, годная статья про проектирование 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 (это скорее вводные лекции по программированию, а не учебник по схеме, но тоже пойдет)

Clojure
+ Programming Clojure, 2nd edition (для новичков)
+ The Joy Of Clojure, 2nd edition (есть есть бэкграунд в Лиспе или ФП)

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


Среды разработки
Одно из основных преимуществ лиспа в сравнении с языками с циклом разработки "написал → перекомпилировал → запустил в отладчике" - поддержка интерактивно-итеративного метода разработки. Но без инструментария, обеспечивающего полноценное взаимодействие с реплом, оно сводится на нет. Поэтому писать без использования нормальной среды - значит упустить важную особенность языка.

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 (только подсветка синтаксиса и простенькое взаимодействие с реплом, но жить можно)

Чтобы не пердолиться с емаксом, можно взять уже преднастроенный spacemacs ( https://github.com/syl20bnr/spacemacs ) или prelude ( https://github.com/bbatsov/prelude ).


Библиотеки
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
Аноним 30/11/15 Пнд 20:49:39 #2 №592802 
>>592797 (OP)
Предыдущие треды на архиваче http://arhivach.org/?tags=3055,113
Аноним 30/11/15 Пнд 20:57:11 #3 №592807 
Таки проебали мою ссылку, пидоры: http://exercism.io/languages/lisp
Аноним 30/11/15 Пнд 21:01:40 #4 №592815 
>>592807
Лучше сразу в шапку запили, а то опять проебем.
Аноним 30/11/15 Пнд 22:46:13 #5 №592905 
SBCL вышел новый
http://sbcl.org/news.html?1.3.1#1.3.1
Аноним 30/11/15 Пнд 23:17:00 #6 №592924 
>>592905
А где обзор с переводом новости?
Аноним 30/11/15 Пнд 23:18:31 #7 №592927 
>>592924
Пока что нигде. Можешь сам запилить.
Аноним 30/11/15 Пнд 23:42:04 #8 №592943 
14489161245450.png
Пилю игру из Land of Lisp ИТТ.
Аноним 01/12/15 Втр 13:13:56 #9 №593202 
>>592943
Какая-то уебанская схема. Узлы отдельно, ребра отдельно. Чому бы не запихать все в одну структуру.
Аноним 01/12/15 Втр 13:18:28 #10 №593208 
14489651082150.gif
Везде пишут, что лучше использовать Clack вместо Hunchentoot. Где-то есть подробнее про него, чтоб разжевано?

И еще как сделать emacs тёмным, меня эта белая тема уже доебала просто.
Аноним 01/12/15 Втр 13:32:52 #11 №593214 
Что еще кроме кложуры компилится в жс?
Вот нашел интересную штуку: http://lispyscript.com/
Кто-нибудь пробовал?
Аноним 01/12/15 Втр 13:33:30 #12 №593215 
14489660109200.png
>>593208
>Где-то есть подробнее про него, чтоб разжевано?
На официальном сайте?
>Везде пишут, что лучше использовать Clack вместо Hunchentoot.
Hunchentoot - веб-сервер, а clack - слой абстракций над ними.
Аноним 01/12/15 Втр 13:35:47 #13 №593216 
>>593208
>И еще как сделать emacs тёмным, меня эта белая тема уже доебала просто.
Тему поменяй. Если не умеешь в настройку емакса, то лучше возьми spacemacs.
>>593214
>Что еще кроме кложуры компилится в жс?
jscl, parenscript
Аноним 01/12/15 Втр 13:38:04 #14 №593218 
>>593214
Нашел вот такое: http://ceaude.twoticketsplease.de/js-lisps.html
Аноним 01/12/15 Втр 13:47:40 #15 №593220 
>>593218
Да там же старьё одно. Половину проектов, если не больше, уже забросили.
>>593214
>Вот нашел интересную штуку: http://lispyscript.com/
Тот же js, только со скобками и парой перделок.
Аноним 01/12/15 Втр 13:49:36 #16 №593222 
>>593216
>spacemacs
Вроде делаю по инструкции, но ничего не запускается автоматически. У меня винда.
Аноним 01/12/15 Втр 13:58:55 #17 №593224 
>>593216
jscl выглядит интересно. Посмотрим-с.
Аноним 01/12/15 Втр 13:59:54 #18 №593225 
>>593224
Там только не полная реализация CL.
Аноним 01/12/15 Втр 14:00:23 #19 №593226 
14489676233990.png
>>593224
Ах ты ж ебаный ж ты ж нахуй.
Неужели придется обмазываться кложурскриптом. Нехотеть.
Аноним 01/12/15 Втр 14:02:06 #20 №593227 
>>593225
>>593226
Обещалка на главной parenscript выглядит вкусно. Какие подводные камни?
Аноним 01/12/15 Втр 14:05:43 #21 №593229 
>>593227
Он своеобразный.
Аноним 01/12/15 Втр 14:08:39 #22 №593230 
>>593226
Интересно, а почему там loop не запилен?
Аноним 01/12/15 Втр 14:09:01 #23 №593231 
>>593229
Нда, хуита какая-то. Придется видимо таки обмазаться кложурскриптом.
Аноним 01/12/15 Втр 14:09:45 #24 №593232 
>>593222
Что не запускается? Ты в шинде переменные окружения настроил?
Аноним 01/12/15 Втр 14:12:17 #25 №593233 
>>593232
Настроил, кидаю папку spacemacs в user, запускаю emacs и.. нихуя.
Аноним 01/12/15 Втр 14:14:03 #26 №593234 
>>593233
В .emacs.d переименуй.
Аноним 01/12/15 Втр 14:15:38 #27 №593235 
>>593234
А у меня такая есть, в неё я тоже кидал, только не удалял из неё другие файлы, там elpa и еще че-то, удалять их?
Аноним 01/12/15 Втр 14:17:43 #28 №593236 
>>593235
>А у меня такая есть
Удали/перемести/переименуй её.
Аноним 01/12/15 Втр 14:22:45 #29 №593238 
>>593236
Помогло, но мой emacs остался белым, где-то опять проебался?
Аноним 01/12/15 Втр 14:25:20 #30 №593239 
>>593238
Нажми M-m T h и выбери тему.
Аноним 01/12/15 Втр 14:31:17 #31 №593242 
14489694772990.gif
>>593239
Только не бей, где прочитать про эти сочетания клавиш?
Аноним 01/12/15 Втр 14:43:58 #32 №593246 
>>593242
Тут за темы поясняют https://github.com/syl20bnr/spacemacs/blob/master/doc/DOCUMENTATION.org#color-themes
Тут за M-m вместо SPC https://github.com/syl20bnr/spacemacs/blob/master/doc/DOCUMENTATION.org#emacs

Внезапно узнал, что у спейсмакса довольно подробная документация.
Аноним 01/12/15 Втр 17:23:02 #33 №593310 
Кто-нибудь пробовал https://github.com/capitaomorte/sly ?
Чем лучше/хуже слайма?
Аноним 01/12/15 Втр 18:22:11 #34 №593354 
Как мне в слайме сделать так, чтобы дебагер показывал на какой строчке кода ошибка вылетела?
Аноним 01/12/15 Втр 18:47:22 #35 №593373 
14489848423650.png
>>593354
https://common-lisp.net/project/slime/doc/html/Examining-frames.html#Examining-frames
Аноним 01/12/15 Втр 18:52:13 #36 №593376 
>>593373
unhandled DEBUG-CONDITION:
#<SB-DI::COMPILED-DEBUG-FUN ADD> has no debug-block information.
Что за чудо nesca 01/12/15 Втр 19:09:03 #37 №593382 
О аноны помогите http://2ch.hk/pr/res/593375.html
Аноним 01/12/15 Втр 19:23:04 #38 №593390 
Пртарды помогите плиз, мне нужен ддос прога, уебан знакомый, перешел мне дорогу, у меня есть его IP и хотелось бы насрать ему в тапки.
Аноним 01/12/15 Втр 19:28:33 #39 №593394 
>>593390
ping 127.0.0.1
Аноним 01/12/15 Втр 19:47:47 #40 №593404 
>>593376
Как ты это сделал?
Аноним 01/12/15 Втр 23:14:07 #41 №593549 
>>593404
Нажал v в дебагере.
Аноним 01/12/15 Втр 23:32:21 #42 №593587 
14490019412750.png
>>592807
Какого хуя ни один из вас, ленивых пидоров еще не начал делать упражнения?
Аноним 01/12/15 Втр 23:33:30 #43 №593595 
>>593549
На чем? Даже если компилить с debug 0 оно переходит к определению функции.
Аноним 02/12/15 Срд 00:13:46 #44 №593641 
14490044265300.png
>>593595
Аноним 02/12/15 Срд 00:15:59 #45 №593643 
>>593641
Ну? А нажимаешь - вылетает та >>593376 ошибка?
Аноним 02/12/15 Срд 00:16:03 #46 №593644 
>>593641
При этом в код 1 и 2 переходит нормально.
Аноним 02/12/15 Срд 00:16:40 #47 №593645 
>>593643
Ошибку на скрине же видно в минибуфере.
Аноним 02/12/15 Срд 00:17:42 #48 №593647 
>>593645
А, вижу. Вангую, что оно инлайнит find-if
Аноним 02/12/15 Срд 00:19:28 #49 №593649 
>>593647
Не, хуйню сказал. Сначала показалось, что там та же ошибка, что и была.
>>593645
Исходники sbcl у тебя не установлены.
Аноним 02/12/15 Срд 01:17:06 #50 №593686 
14490082265610.png
>>593649
Наоборот. На код из стандартной библиотеки переходит без проблем. Но вот перейти в мою функцию, которую я заэвалил через C-c С-с, не может, выдает ошибку.
Аноним 02/12/15 Срд 17:42:28 #51 №594122 
Парни, а вы понимаете что лисп просто пиздец как крут? Вот смарите, есть классификаторы результат треньки нейросети https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml да? Где он у них? Лежит отдельно! А лиспобоги могут сохранить СОСТОЯНИЕ, закрыть консольку/емакс, пойти покушать, потом запустить sbcl и что? Правильно, продолжить тренировку дальше! Вот мне раньше казалось это пиздец каким долбоебизмом, типа вот есть данные, а вот алгоритм, а вот выхлоп, а вот еще что-то. Почему я раньше не понимал эту красоту лиспа?
Аноним 02/12/15 Срд 17:49:41 #52 №594130 
>>594122
Любой динамический язык так умеет. Бери pyopencv и не выебывайся.
Аноним 02/12/15 Срд 17:50:25 #53 №594131 
>>594130
Сохранить состояние рантайма? Питон? Попизди мне тут.
Аноним 02/12/15 Срд 20:02:06 #54 №594272 
>>594122
Он у них ещё и в богомерзком xml. А мог бы описываться edsl'ем.
Аноним 02/12/15 Срд 20:10:33 #55 №594289 
>>594122
Это скорее смолтолковская фича.
Но вообще так на любом языке можно, если хранить состояние в отдельной переменной.
Аноним 02/12/15 Срд 20:12:28 #56 №594293 
>>594289
Смолтолк делался по образу и подобию лиспа.
Аноним 02/12/15 Срд 20:13:28 #57 №594295 
>>594289
В любом языке ты не сможешь сохранить состояние полностью в любой момент времени.
Аноним 02/12/15 Срд 20:22:20 #58 №594302 
>>594295
Что значит "полностью"? Снэпшот виртуальной машины? Для JVM есть Terracota, например.
Это не свойство языка, и даже не свойство рантайма, это просто инструментарий (не особо понятно зачем нужный, кстати, разве что машины в кластере балансировать)
Аноним 02/12/15 Срд 20:27:33 #59 №594313 
>>594295
Да, кстати, в Линуксе можно снапшот любого процесса снимать и запускать.
Тут основная проблема в переносе открытых файлов, сокетов и прочего, и плюс непонятно что делать, если ты собираешься запускать снапшот на процессоре с другой архитектурой.
Гораздо проще делать снапшот пользовательского состояния программы, и по этому состоянию запустить заново. А это можно сделать на любом языке, хоть на вижуал бэйсике. Главное состояние хранить отдельно.
Аноним 02/12/15 Срд 20:31:52 #60 №594321 
>>594302
В лиспе эта фича вытекает из свойств языка. Усыплять и пробуждать ту же JVM особо смысла не имеет, потому что ты, по сути, просто приостановишь процесс.
Аноним 02/12/15 Срд 20:57:06 #61 №594351 
>>594321
Ясно-понятно. А что это за свойство языка такое, как называется? И как реализовано восстановление состояния? Стэк восстанавливается? А регистры? Очень интересно послушать.
Аноним 02/12/15 Срд 21:03:23 #62 №594356 
>>594351
Ты знаком со смолтолком? Если да, то там всё то же самое.
Аноним 02/12/15 Срд 21:07:12 #63 №594360 
>>594356
Вот я и говорю - снэпшот виртуальной машины. Это много где есть. И это всего лишь инструментарий, к языку относится косвенно. На JVM вообще много языков, снапшот VM один.
Аноним 02/12/15 Срд 21:09:46 #64 №594363 
>>594360
А для чего это в жвм? В разработку "наживую" там умеет, насколько мне известно, только кложура.
Аноним 02/12/15 Срд 21:33:55 #65 №594375 
>>594363
А для чего это в других местах? Терракота сделана для балансировки в кластере.
А разрабатывать "наживую" проще вынося пользовательские данные в глобальные переменные и подменяя их. Я так и со Спрингом делал через Груви-консоль. Это всё в структуру приложения упирается.
Аноним 02/12/15 Срд 21:36:36 #66 №594378 
>>594375
>вынося пользовательские данные в глобальные переменные и подменяя их
Это не разработка наживую, черт знает что.
Аноним 02/12/15 Срд 21:39:26 #67 №594381 
>>594375
>Терракота сделана для балансировки в кластере.
Так это совсем другой тип снапшотов с другими целями. Что смолтолк, что лисп потока выполнения в образе не хранит.
Аноним 02/12/15 Срд 21:57:55 #68 №594398 
>>594381
В общем, разработка что на смолтолке, что на лиспе представляет из себя изменения состояния смолтолк-/лисп-системы. Сохранение образа нужно для фиксации этих изменений.
А терракота, как я понял, просто замораживает процессжвм.
Аноним 02/12/15 Срд 23:22:40 #69 №594484 
>>594398
Ты уже по третьему кругу идёшь.
Ну ладно, я за тебя посмотрел, как SBCL делает снапшоты: http://sbcl.org/1.0/manual/Saving-a-Core-Image.html
Это не снапшот VM как в Смолтолке, а сохранение состояния на уровне приложения. Стэк не сохраняется. Открытые ресурсы тоже. Устраняюсь от дискуссии.
Аноним 02/12/15 Срд 23:30:14 #70 №594501 
>>594484
В смолтолке образ сохраняется точно так же.
Аноним 02/12/15 Срд 23:37:41 #71 №594506 
>>594484
>>594501
http://stackoverflow.com/questions/3561145/what-is-a-smalltalk-image
Аноним 04/12/15 Птн 21:21:03 #72 №595896 
>>592943
Пощупал CEPL. Он ругался, пердел и падал. Теперь вот обычный SDL2 щупаю.
Алсо пилю поинт-энд-клик квест:
http://www.youtube.com/watch?v=dMe_dhLf_88
Аноним 04/12/15 Птн 21:22:13 #73 №595897 
>>595896
Чому падал?
Аноним 04/12/15 Птн 22:44:56 #74 №595991 
>>595897
Сначала ругнулся на то что ему нужен opengl3.3, потом начал выдавать ошибку как в одной из issue на гитхабе нерешенной. Проблема висит уже почти пол года, движения нет. Судя по всему ментейнер положил хуй на проект.
Аноним 04/12/15 Птн 22:47:22 #75 №595995 
>>595991
А, я на него тоже забил из-за опенгл. Моя говновидюха даже в шейдеры не умеет.
Аноним 06/12/15 Вск 00:41:54 #76 №596803 
Анон,
Есть известная копипаста бугуртящего олдскул программиста:
http://habrahabr.ru/post/122665/

В частности, там есть такое:
>CompSci 101, курс по структурам данных, и когда сталкиваются с работой с указателями

>Другим сложным для многих студентов был курс, в котором изучалось функциональное программирование, в том числе рекурсивное программирование. В Массачусетском Технологическом Институте была очень высоко поставлена планка по этим курсам, разработан обязательный курс (6.001) и учебник ( Абельсон и Сассман, Структуры и Интерпретация Компьютерных Программ

Если вторую книгу (сисп) можно найти в инете, то о чем идет речь в первом? Современный курс CompSci_101 на сайте его универа вообще не о том. Какую книгу посоветуешь для изучения темы указателей?
Спасибо.
Аноним 06/12/15 Вск 01:24:21 #77 №596823 
>>596803
>Какую книгу посоветуешь для изучения темы указателей?
Очевидный K&R.
Аноним 06/12/15 Вск 03:44:39 #78 №596916 
>>596823
Там есть это?
> курс структур данных, со связанными списками, хеш-таблицами и прочими мелочами, с широким использованием указателей
Аноним 06/12/15 Вск 04:22:58 #79 №596925 
>>596916

> Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 11. Хеш-таблицы. // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 2-е изд. — М.: Вильямс, 2005. — 1296 с. — ISBN 5-8459-0857-4.
Аноним 06/12/15 Вск 13:59:58 #80 №597069 
Начал учить это ваше программирование через SICP и буквально на первом же упражнении обосрался.

> Упражнение 1.3
> Определите процедуру, которая принимает в качестве аргументов три числа и возвращает сумму квадратов двух больших из них.

Я в математике не ебу вообще, и как правильно найти два наибольших числа не знаю. Так что как допер, так и сделал: типа нужно найти наименьшее число, тогда два остальных будут наибольшими.

[CODE](define (ex1-3 x y z) ; определение процедуры ex1-3 с аргументами x, y и z
(cond ((and (< x y) (< x z)) (+ ( y y) ( z z))) ; если x - наименьшее число, то y и z - наибольшие
((and (< y x) (< y z)) (+ ( x x) ( z z))) ; если y - наименьшее число, то x и z - наибольшие
((and (< z x) (< z y)) (+ ( x x) ( y y))))) ; если z - наименьшее число, то x и y - наибольшие[/CODE]

Вроде все должно работать, cond возвращать значение выражения-следствия единственного истинного предиката. А вот хуй! Интерпретатор все время возвращает 17, или что-то такое:

[CODE]1 ]=> ex1-3 3 2 1

;Value 17: #[compound-procedure 17 ex1-3]

1 ]=>
;Value: 3

1 ]=>
;Value: 2

1 ]=>
;Value: 1[/CODE]

Что делать-то? Я не понимаю где тут ошибка. Может cond работает как-то по другому? хз блять
Аноним 06/12/15 Вск 14:04:49 #81 №597072 
>>597069
Чтобы осилить программирование, ты должен быть способен доказать, объединение и пересечение алгебраических множеств есть алгебраическое множество. Алсо, должен уметь на пальцах объяснить, что такое топология Зарисского.
Аноним 06/12/15 Вск 14:09:26 #82 №597073 
>>597069
Еще и с разметкой обосрался.
Вот тут отформатированный код:
http://pastebin.com/D731B8xy

И да, интерпретатор выдает не 17, а тупо возвращает назад аргументы. Тогда что эта строка с 17 значит?

>>597072
При чем тут топология вообще, наркоман?
Вменяемо можешь подсказать что не так с этой конкретной процедурой?
Аноним 06/12/15 Вск 14:10:57 #83 №597075 
>>597073
Ты функцию вызываешь неправильно.
(ex1-3 3 2 1)
Аноним 06/12/15 Вск 14:14:29 #84 №597079 
14494004693840.png
>>597075
Феерический обосрамс.
Спасибо за помощь. Держи няшку.
Аноним 06/12/15 Вск 14:22:55 #85 №597089 
>>597073
>При чем тут топология вообще, наркоман?
Просто если ты не можешь осилить такую элементарную вещь как топология, то и в кодинге ты дальше макаки не продвинешься.
Аноним 06/12/15 Вск 14:29:07 #86 №597094 
>>597089
Борщевик-второкурсник, ето ти?
Аноним 06/12/15 Вск 14:29:20 #87 №597095 
>>597079
http://ideone.com/lB3ph3
Нужно больше функциональщины!
Аноним 06/12/15 Вск 14:49:27 #88 №597104 
>>597094
Не стал бы отвечать на резюме петушков, которые не могут вычислить идеал аффинного многообразия и объяснить, чем нильпотенты отличаются от порядка элемента.
Аноним 06/12/15 Вск 14:50:24 #89 №597106 
>>597104
Да тебя бы никто и спрашивать не стал.
Аноним 06/12/15 Вск 14:54:33 #90 №597109 
>>597106
Курлык-курлык.
Аноним 07/12/15 Пнд 18:49:40 #91 №598298 
'()
Аноним 07/12/15 Пнд 22:46:18 #92 №598549 
>>592797 (OP)
А есть что-нибудь с поддержкой win mobile?
Я слышал только про tcl/tk. А с остальным что?
Аноним 10/12/15 Чтв 06:59:54 #93 №600523 
(bump *)
Аноним 10/12/15 Чтв 10:21:45 #94 №600594 
>>600523
; in: BUMB
; (BUMB
)
;
; caught STYLE-WARNING:
; undefined function: BUMB
;
; compilation unit finished
; Undefined function:
; BUMB
; caught 1 STYLE-WARNING condition
Аноним 10/12/15 Чтв 14:43:27 #95 №600716 
>>592797 (OP)
Для чего его используют?
Аноним 10/12/15 Чтв 17:15:06 #96 №600863 
>>600716
Ты будешь смеяться, но НИ ДЛЯ ЧЕГО
Аноним 10/12/15 Чтв 22:41:41 #97 №600879 
>>600716
Кого именно? В шапке восемь языков перечислено. У каждого своя область применения.
Аноним 10/12/15 Чтв 23:41:59 #98 №600896 
>>600879
Ну и какое применение самое популярное?

>>600863
Зачем он вообще существует?
Аноним 10/12/15 Чтв 23:48:17 #99 №600899 
>>600896
>Зачем он вообще существует?
Прост)0))0)
Аноним 10/12/15 Чтв 23:52:01 #100 №600901 
>>600899
А если серьёзно? На что можно рассчитывать если хорошо его изучу? Разные диалекты и библиотеки? Можно найти работу? И что на ней нужно будет делать?
Аноним 11/12/15 Птн 00:17:31 #101 №600902 
14497822520100.png
>>600901
>его изучу?
Что «его», кого его-то, ёпта, кого «его»? Здесь восемь разных языков, блядь, семейство одно, а языки разные, ёпта.
> На что можно рассчитывать если хорошо его изучу?
На свои знания.
Аноним 12/12/15 Суб 01:48:13 #102 №601392 
Смотрите. Мне в Схеме надо преобразовать строчную запись числа в обычное число, т.е. функция получает на входе "1488" и выдает просто числом. Как я понял, без стринг-листа не обойтись, только он выдает (#\1 #\4 #\8 #\8).
Как, собственно, лучше всего избавиться от этих решеточек и слэшев?
Аноним 12/12/15 Суб 01:50:20 #103 №601393 
>>601392
Алсо, попытался через map применить лямбда-функцию и caddr к каждому элемента списка, только как-то не удалось.
Аноним 12/12/15 Суб 04:56:45 #104 №601414 
>>601392
char->integer
Аноним 12/12/15 Суб 12:59:51 #105 №601499 
>>600902
А что делать если изучу все восемь? Что вы на них пишите? Кто-нибудь из вас работает на лиспе?
Аноним 12/12/15 Суб 13:06:23 #106 №601505 
>>601499
>Что вы на них пишите?
Что за тупой вопрос? То же, что спросить: "А что на C/C++ пишут?"
Кто-то игры, кто-то сайты, кто-то естественными языками занимается, кто-то числодробилки пилит, кто-то скриптоту для автоматизации повседневщины, кто-то обработкой изображений и т.д.
Аноним 12/12/15 Суб 13:11:16 #107 №601508 
>>601505
Почему для этого выбирают лисп? А не другие инструменты?
Аноним 12/12/15 Суб 13:24:42 #108 №601514 
Лисп - это чтобы угарно проёбывать свободное время, пока учишься в школе/инстике и сидишь на шее у родаков, и потом вспоминать с улыбкой, и не жалеть, даже осознавая, насколько это ненужно и бессмысленно.
Аноним 12/12/15 Суб 13:27:53 #109 №601517 
>>601508
Рассуждать об абстрактном лиспе не имеет смысла, потому как разница между диалектами довольно ощутимая. Это то же, что рассуждать сразу о всех языках с си-подобным синтаксисом.
Характерными же для всех диалектов особенностями можно назвать макросы (с сишными не имеют ничего общего) и полную динамичность (горячая замена кода, обновление определений классов и т.д.), из которой вытекает и интерактивно-итеративный метод разработки.
Аноним 12/12/15 Суб 13:30:42 #110 №601519 
>>601514
Ну, не всем же после учебы в менеджеры идти. У некоторых все-таки выходит найти своим навыкам более полезное применение.
Аноним 12/12/15 Суб 13:40:48 #111 №601526 
>>601519
Навыки кодоволкинга мокролитами и написания синтакс-трансформеров не используются в разработке реального программного обеспечения.
Аноним 12/12/15 Суб 13:54:28 #112 №601539 
Что такое мокролиты? Что такое пандорические макросы и динамический ветер? Где прочитать про все это говно? Почему все это не гуглится даже на английском?
Аноним 12/12/15 Суб 14:02:04 #113 №601546 
>>601526
Ну, в некоторых реальных проектах вообще средств построения абстракций не используется, но это же не значит, что так должно быть везде.
Аноним 12/12/15 Суб 14:03:08 #114 №601550 
>>601539
On Lisp читай. Дядя Грехем там по-хардкору поясняет за лисп-way.
Аноним 12/12/15 Суб 14:33:21 #115 №601588 
>>601546
Плодить синтаксические абстракции - это то, что психологи называют "representational overactivity". Для одной и той же функции/алгоритма/етц можно придумать очень много всяких нескучных синтаксисов её вызова/использоция, но продуктивность это не повышает, а скорее наоборот. Ведь кроме того, что делает функция, теперь надо знать ещё и новый специальный синтаксис вызова.
Как делают прикладные математики - сводят всё к числам и матрицам, чтобы потом использовать все давно готовые инструменты для работы с ними
Как делают прикладные программисты - сводят всё к переменным, циклам, объектам, функциям/методам, чтобы использовать готовые инструменты для работы с ними
Как делают теоретические математики, логики, лисперы, хаскелисты - даже давно известное и понятное сводят к новопридуманным концепциям, логикам, языкам, синтаксисам, для которых нихуя ничего нет, для которых надо пересоздать с нуля мир, которые надо дополнительно выучить и проникнуться феласофией и тд
Аноним 12/12/15 Суб 14:40:37 #116 №601594 
>>601588
>то, что психологи называют "representational overactivity"
Пошел нахуй.
Аноним 12/12/15 Суб 15:02:05 #117 №601619 
>>601588
А плодить бойлерплэйты - это как психологи называют? А использовать xml в качестве DSL? А превращать лаконично определенный алгоритм в развесистый семантический шум, в котором без поллитры не разберешь? Это как называется?

Я не говорю, что нужно плодить синтаксические расширения на каждый чих (плодить сущностей без надобности в любой парадигме вредно), но и категорически отрицать их полезность тоже глупо.

>Ведь кроме того, что делает функция, теперь надо знать ещё и новый специальный синтаксис вызова.
Для использования любой сущности, в том числе и макросов, нужно изучить её интерфейс. И нет, это не так сложно, как тебе с дивана представляется. Особенно если сравнивать с java-стайл ООП.

>Как делают теоретические математики, логики, лисперы, хаскелисты - даже давно известное и понятное сводят к новопридуманным концепциям, логикам, языкам, синтаксисам, для которых нихуя ничего нет, для которых надо пересоздать с нуля мир, которые надо дополнительно выучить и проникнуться феласофией и тд
Ты сейчас говоришьворчишь как SENIOR PHP DEVELOPER 20 YEARS EXPERIENCE: "Ишь понавыдумывали! 20 лет писал без всяких ваших этих самых, и вы тут устроили это самое... психологи ещё это representational overactivity называют".
Аноним 12/12/15 Суб 15:15:14 #118 №601639 
>>601619
Нет, я это говорю как человек, слегка разочаровавшийся в том, что профит от этого всего строго отрицательный. Если не плодить на каждый чих - то зачем тогда лисп, синтаксис которого оптимизирован для этого? Оптимизировать нужно под НАИБОЛЕЕ частоиспользуемые сценарии. А не плодить на каждый чих - это придумать одну джаву, html, css, json, и успокоиться. Тебя походу выебали в детстве какими-нибудь JavaEE, но современные спринги, либы на аннотациях типа refit, библиотечки на флюент-апи, и так далее - это и есть хорошо сбалансированные легковесные абстракции без хуйни, без размножения несовместимого ни с чем синтаксиса и так далее.
Аноним 12/12/15 Суб 15:24:17 #119 №601649 
>>601639
>я это говорю как человек, слегка разочаровавшийся в том, что профит от этого всего строго отрицательный
Ох. Ну давай, поделись своим опытом.
Судя по
>без размножения несовместимого ни с чем синтаксиса и так далее
ты плохо представляешь то, о чем рассуждаешь.

>о современные спринги, либы на аннотациях типа refit, библиотечки на флюент-апи, и так далее
Это вообще пушка! Даже комментировать не хочу. Тебя походу выебали в детстве какими-нибудь JavaEE.
Аноним 12/12/15 Суб 15:25:44 #120 №601650 
>>601619
>А плодить бойлерплэйты - это как психологи называют?
А это то же самое. Разные виды программистов страдают этим по-разному. Глупо думать, что язык от этого защищает.
Аноним 12/12/15 Суб 15:27:38 #121 №601652 
> refit
Вернее, retrofit. Хороший пример метапрограммирования, сделанного правильно: http://square.github.io/retrofit/
Аноним 12/12/15 Суб 15:30:01 #122 №601655 
>>601650
Многие языки, из-за весьма ограниченной гибкости, вынуждают из раза в раз повторять один и тот же код.
Как, например, ассемблер заставляет каждый раз писать служебный код для эмуляции абстракции "процедура".
Аноним 12/12/15 Суб 15:32:24 #123 №601656 
>>601655
Были бы в нем необходимые средства, эту проблему можно было бы решить единожды наиболее эффективным путем. Но увы.
Аноним 12/12/15 Суб 15:34:16 #124 №601657 
>>601655
Ассемблер - это не язык.
Аноним 12/12/15 Суб 15:36:08 #125 №601660 
>>601649
Блять, ну что тебе объяснять. У меня LOL и AMOP в бумажном виде есть ещё с универа. Я макроискпандил секспры с мокролитами в /c/ ещё когда ты под стол ходил. Хули я тебе буду расписывать, про все свои лиспопознания? По конкретным темам типа iterate/loop/reducers/transducers я сто раз уже писал на этих обоссаных анонимных парашах. И я ответственно заявляю, что всё это нахуй не надо. Это не бесполезно, а вредно блять. Строго вредно и контрпродуктивно.
Аноним 12/12/15 Суб 15:36:10 #126 №601661 
>>601657
Язык, язык. Хоть и примитивный.
Аноним 12/12/15 Суб 15:37:22 #127 №601664 
>>601656
Зачастую копипаста - способ лучше, чем пытаться выделить абстракции там, где это дороже.
Аноним 12/12/15 Суб 15:50:26 #128 №601678 
>>601664
"Дороже" по трудозатратам только в кратковременной перспективе. В долгосрочной же поддержка бойлерплэйтов выходит в разы дороже. Но интерпрайзу именно это и нужно.
>>601660
А я сразу и понял, что это ты. Все твои кококо-аргументы всегда плавно циркулируют между ВРЕДНА И НИНУЖНА, ОЙ НУ ТАМ НОВЫЙ СИНТАКСИС, ЕГО Ж ТРУДНА ИЗУЧИТЬ и ВОТ В ЖС ИЛИ ЖАВЕ АБСТРАКЦИИ ХАРОШИЕ, А ТУТ ПЛАХИЕ.
>Хули я тебе буду расписывать, про все свои лиспопознания?
Да забей, я и так знаю, что тебе сказать нечего.
Аноним 12/12/15 Суб 15:54:51 #129 №601681 
>>601652
Да, для явы выглядит неплохо.
Но в лиспе такое сплошь и рядом, а для явы это скорее исключение.
Аноним 12/12/15 Суб 15:58:34 #130 №601683 
>>601678
> Да забей, я и так знаю, что тебе сказать нечего.
Ну ты меня по сути попросил доказать, что на лиспе невозможно написать что-то лучше чем на других языках. Гораздо проще привести хоть один пример чего-то такого и доказать этим, что я не прав. Так что предлагаю привести пример какого-то полезного прикладного лиспо-dsl, а я попробую доказать, что быдлоязыках то же самое делается лучше и дешевле.
Аноним 12/12/15 Суб 16:02:47 #131 №601686 
>>601681
В спрингах там всяких тоже всё на аннотациях сейчас, никто давно не ебёт xml. При этом нет никакого необычного синтаксиса со специальными правилами. Аннотации - это просто прицеплённые метаданные, которые обрабатываются потом через рефлексию и тд. Аналогично для подобного метапрограммирования на json'е в жаваскрипте. Решения в таком духе и в плане юзабилити, и в плане разработки легковеснее синтаксических макросов.
Аноним 12/12/15 Суб 17:05:29 #132 №601738 
>>601686
>никто давно не ебёт xml
Не прошло и двадцати лет. Или уже прошло?
> При этом нет никакого необычного синтаксиса со специальными правилами.
> Аннотации
Это и есть специальный синтаксис. Вся разница только в том, что в яве его захардкодили, а в лиспе это библиотека.
Кроме того, строки в аннотациях тоже имеют "специальный синтаксис или структуру, которые нужно изучать".
>Аналогично для подобного метапрограммирования на json'е в жаваскрипте.
Ага. Я видел. Они там пытаются сделать то же, что в лиспе, но через жопу, еваля строки или обвешивая жсон нечитабельной лапшой калбеков.
Алсо, структура жсона - это тоже что-то уровня "специального синтаксиса, который нужно изучать".
>Решения в таком духе и в плане юзабилити, и в плане разработки легковеснее синтаксических макросов.
Где не нужны хитрые абстракции, там их вменяемый программист не использует.
А долбоеб - он и в ПХП, и яве, и в хаскеле, и в лиспе долбоеб. Это уже не языка проблема.
Аноним 12/12/15 Суб 17:15:50 #133 №601744 
>>601738
В типикал лисподиеселе у тебя будет и специальный синтаксис типа defapi, defapicall и тд, и внутри ещё специальный синтаксис для роута. В аннотации только второй. Аналогично со всем остальным. Содержательная предметная информация - это минимально необходимое, незачем делать больше. На лиспе же чаще всего до реальных задач вообще не доходят и застряют где-то на этапе дизайна своих правильных лямбд или циклов. Ждём примеров, где реально нужны хитрые абстракции, а умные лисперы оказались не долбоёбы и хорошо решили задачу, получше чем на яве или жс.
Аноним 12/12/15 Суб 17:29:12 #134 №601750 
>>601744
PEG, например, и прочие парсеры. В жс в таких случаях строки евалят, а в жабе интерпретатор или кодогенератор с нуля пилят. В первом случае страдает эффективность и удобство, во втором большие трудозатраты и малое удобство в использовании (поддержки со стороны ИДЕ нет, нужно изъёбыватся со сборкой и т.д.)
Аноним 12/12/15 Суб 17:50:01 #135 №601771 
>>601750
> строки евалят
Объясни, чем строка как здесь:
https://github.com/zaach/jison#usage-from-a-commonjs-module
хуже секспра. И в строке два символа оверхеда на открытие и закрытие, и в секспре. И строка и секспр не тайпчекаются. И строку и секпр можно вручную по-всякому провалидировать в коде.
> большие трудозатраты
Насчёт парсер-генераторов с этим ещё можно согласиться, но так получается по большей части из-за требований к производительности, а потому и генерации хайперфоманс стейт-машин целевого языка. И ещё, задача решена везде. Куда ни глянь - есть свои вариации lex/yacc.
> и малое удобство в использовании, поддержки со стороны ИДЕ нет
Чем поддержка произвольных секспров, которые разбирает твой макрос, в каком-нибудь slime лучше поддержки строк или жсона в типичном кодоблокнотике? Там же не будет ни комплишенов никаких, ничего. Только если сам плагин запишишь для емакса.
Аноним 12/12/15 Суб 18:03:00 #136 №601785 
>>601771
>"return 'HEX';"
Блядь, ну это вообще пиздец. На сишных макросах и то лучше бы было.
>И строку и секпр можно вручную по-всякому провалидировать в коде.
Если бы было можно, то запилили бы, а не это говно выкатили как готовую библиотеку.
>Чем поддержка произвольных секспров, которые разбирает твой макрос, в каком-нибудь slime лучше поддержки строк или жсона в типичном кодоблокнотике?
autodoc, macroexpand, семантическое выравнивание кода.
Аноним 12/12/15 Суб 18:13:25 #137 №601793 
>>601771
>Только если сам плагин запишишь для емакса.
Кстати, в некоторых библиотеках вместе с кодом расширение для сванка идёт.
Аноним 12/12/15 Суб 18:18:32 #138 №601797 
>>601785
> Если бы было можно, то запилили бы
Так там и запилили. Когда делаешь 'parser.generate', у тебя выскочит ошибка, если там где-то неправильный синтаксис.
> autodoc, macroexpand, семантическое выравнивание кода
Какое ещё семантическое выравнивание? О семантике твоих кастомных секспров внутри вызова макроса емакс ничего не знает. А макроекспанд полезен только для мелких инфраструктурных макросов типа defapi, которые вредные, и которых вообще не должно существовать. Выхлоп парсер-генератора в макроекспанде - это что-то типа чтения ассемблера, который ты не знаешь. Autodoc тебе покажет инфу только для топлевел вызова макроса, для произвольных секспров внутри, которые описывают грамматику, он ничего не покажет. В случае с жс, топлевел вызов - это функция, потому обычный комплишн кодоблокнотиков/ide сработает.
Аноним 12/12/15 Суб 18:23:55 #139 №601802 
>>601785
> ну это вообще пиздец
А как тебе хочется? Ты хоть понимаешь, что можно сделать, например,
var token = (name) => "return '" + name + "';";
и будет уже
["[a-f0-9]+", token('HEX')]
Аноним 12/12/15 Суб 18:30:34 #140 №601807 
>>601797
>Так там и запилили.
Они запилили парсер жс? Ну, молодцы. Я им не завидую.
>О семантике твоих кастомных секспров внутри вызова макроса емакс ничего не знает.
Знает. Даже если внутри верхнего макроса используется macrolet, для внутренних принято делать макросы-пустышки с докстрингом или хотя бы просто аргументами.
>Выхлоп парсер-генератора в макроекспанде - это что-то типа чтения ассемблера, который ты не знаешь.
Ну вот не надо, а. Хорошо написанный макрос обычно читается без затруднений. В ином случае, достаточно его полностью не раскрывать.
>>601802
Да, да. Костыли-костылики. И ты ещё бочку гонишь на лисп, лол.
Аноним 12/12/15 Суб 18:38:01 #141 №601816 
>>601807
> Они запилили парсер жс? Ну, молодцы. Я им не завидую.
Зачем им писать парсер жс? Просто евалишь строку 'function (...) ...' и компилятор сам всё скажет, либо выдаст колобок.
> для внутренних принято делать макросы-пустышки с докстрингом или хотя бы просто аргументами.
> Да, да. Костыли-костылики.
То же самое.
Аноним 12/12/15 Суб 18:55:34 #142 №601827 
>>601816
>То же самое.
И что, дохуя редактор внутри строк-то подсказывает?

В общем, к чему мы пришли?
>лисп - гроб, гроб, кладбище, пидор
>жс ака лисп для бедных - заебок. Евалим строки, крутим лапшу, делаем весёлые смайлики ;})
Аноним 12/12/15 Суб 19:30:05 #143 №601849 
>>601827
> И что, дохуя редактор внутри строк-то подсказывает?
См. функцию token. Так же, как в лиспе объявляешь вспомогательные макросы для указания метаданных, в жс объявляешь функции.
>лисп - гроб, гроб, кладбище, пидор
>жс ака лисп для бедных - заебок. Евалим строки, крутим лапшу, делаем весёлые смайлики ;})
Так и есть. Даже такой максимальный кейз как генератор парсеров из грамматик, делается здесь нормально. Может в каких-то мелочах на лиспе чуть лучше, типа что скобочки редактор выравнивает между строками, но это не стоит того, чтобы иметь в языке макросы, а вместо синтаксиса - гомоиконичную парашу, под их использование оптимизированную. Синтаксис жаб и жс оптимизирован под 99.9% нужд, а лиспа - под 0.1% ради того чтоб скобки в макросе выравнивались, ну охуеть. При этом задача нифига не прикладная, потому что генераторы парсеров нужны редко и уже везде давно написаны. На более приземлённых задачах типа дсли для роутинга и тд - всё ещё лучше на стороне жабок и жс.
Аноним 12/12/15 Суб 19:43:57 #144 №601858 
14499386371300.png
>>601849
>Даже такой максимальный кейз как генератор парсеров из грамматик
>и тот сделать нормально не смогли.
Код в строках - это пиздец. И нет этому никакого оправдания.
А ведь это далеко не единственный его недостаток.
>а вместо синтаксиса
У лиспа-то как раз синтаксис нормальный. Уж точно ничуть не хуже ;});});)}
>Синтаксис жаб и жс оптимизирован
Летчик.жпг Синтаксис? Оптимизирован? Щито? Обычная си-подобщина.
>На более приземлённых задачах типа дсли для роутинга и тд - всё ещё лучше на стороне жабок и жс.
Чем лучше? Как по мне - то же самое, если не считать, что обработчик приходится писать не на нормальном языке, а на убогой яве.
Аноним 12/12/15 Суб 20:17:11 #145 №601887 
>>601858
> Код в строках - это пиздец.
Я уже спрашивал, чем секспры лучше. Ты так и не ответил.
> Уж точно ничуть не хуже ;});});)}
Хуже, писанины больше и линейность меньше. А твой пик - это, конечно, лол. Макрос defapp, в котором ничего нет, то есть можно было сделать функцию. Зачем макрос? Но дальше ещё круче: макросы для вью, на которых аннотации для роутов. Посчитай количество лишних сущностей там и здесь:

var app = new App({
  "/": (req, res) =>
    res.send("<h1>welcome to lucerne</h1>"),
  "/greet/:name": (req, res) =>
    res.send("hello {}!".format(req.params.name))
});
Аноним 12/12/15 Суб 21:08:48 #146 №601919 
>>601887
>Я уже спрашивал
Ты спрашивал какую-то хуиту про "" vs ().
>чем секспры лучше.
AST, выглядит естественно, является синтаксически корректным...
Что ты шлангом-то прикидываешься?
>Макрос defapp, в котором ничего нет
Потому что все параметры дефолтные. Трудно догадаться что ли?
>макросы для вью, на которых аннотации для роутов
И что тут такого? Аннотация регистрирует маршрут для любой функции. Вью защищает от прямого использования в неподготовленной среде и занимается проверкой и разбором аргументов при необходимости.
>Посчитай количество лишних сущностей там и здесь
Словарь - раз, какие-то req и res - ещё четыре.
А давай лучше в реальном коде посчитаем, а не в этом обезьянничестве на хелловорлд.
Хотя нет, считай сам. Меня эта бесполезная полемика порядком заебала. Не понимаю, зачем в неё ввязался, ведь сразу было понятно, что ничего толкового ты не скажешь.
Аноним 12/12/15 Суб 22:23:30 #147 №601955 
>>601660
>Это не бесполезно, а вредно блять
Если это так вредно, то почему практически все языки предают свои парадигмы и заимствуют сущности функциональных яп?
Аноним 12/12/15 Суб 22:39:40 #148 №601963 
>>601919
> является синтаксически корректным
Строка тоже является "синтаксически корректной" с точки зрения внешнего языка, если есть открывающая и закрывающая кавычка, но о синтаксической корректности содержимого в контексте дсл этого ничего не говорит. И с секспрами точно так же. Сбалансированность скобочек ничего не говорит о синтаксической корректности с точки зрения дсля, описываемого макросом (defapp '(1 (2) 3)).
> Словарь - раз, какие-то req и res - ещё четыре.
Словари - это обычный жс. Req и res - это обычные параметры обычных лямбд, это тоже обычный жс. К чему это стремление плодить новые концептуальные понятия, термины, макросы, когда можно всё представить в виде чисел и матриц и оно только удобнее станет?
>>601955
Речь конкретно про синтаксические макросы лиспов, а не про произвольные фичи из ФП-языков.
Аноним 13/12/15 Вск 00:40:24 #149 №602034 
Лиспаны, поясните почему есть let, а есть let*? Зачем иметь два варианта? Чем обоснован первый? Производительность выше?
Аноним 13/12/15 Вск 03:21:04 #150 №602101 
>>602034
>Лиспаны, поясните почему есть let, а есть let?
Немного по-разному функционируют: первый сначала вычисляет все выражения, а потом разом биндит, а второй - вычисляет, биндит, вычисляет, биндит...

Видимо, они нужны, когда порядок вычислений важен:
[code lang=common-lisp]
(defparameter a 1)
(defparameter
b 2)

(let ((
a (print (1+ a)))
(
b (print (+ a b))))
(list
a b))

(let
((a (print (1+ a)))
(b (print (+ a b))))
(list a b))
[/code]
Аноним 13/12/15 Вск 11:02:05 #151 №602190 
>>602101
Это понятно. Вопрос заключается в том, почему бы не выпилить обычный let и оставить вместо него только let*?
Аноним 13/12/15 Вск 11:29:21 #152 №602201 
>>601858
У тебя на пикче жаба со странным синтаксисом.
Аноним 13/12/15 Вск 12:54:04 #153 №602226 
>>602190
Выше пример кода, когда let может быть нужен. Да и если выпиливать, то let*, который легко выражается через let.
Почему не выпилили - хуй знает. Даже в минималистичной схеме он есть.
Вообще, в общелиспе много старья, которым давным-давно никто не пользуется. Странно, что ты зацепился именно за лет.
Аноним 13/12/15 Вск 12:54:26 #154 №602227 
>>602201
Нет, это не кложа.
Аноним 13/12/15 Вск 13:18:40 #155 №602237 
>>602226
Читаю Land of Lisp, и когда там начали рассказывать про let я подумал о том, что уже давно не понимаю за каким хуем нужно две формы. Так же как flet и labels.
Что мешает оставить только одну форму, переименовав их. let
-> let, labels -> flet.
Пытаюсь понять есть ли за этим какое-то обоснование (как я писал, может let значительно быстрее?) или это просто очердное говно мамонта.
Аноним 13/12/15 Вск 13:19:45 #156 №602239 
>>602237
Злоебучая шатаба проебала разметку.
let★ → let
labels → flet
Аноним 13/12/15 Вск 13:29:43 #157 №602242 
>>602239
Сам себе отвечу:
http://stackoverflow.com/questions/554949/let-versus-let-in-common-lisp
Единственный реальный плюс как я вижу, это подсказка читающему код о зависимости или независимости создаваемых переменных.
Я вам покушать принес Аноним 14/12/15 Пнд 17:34:50 #158 №603275 
https://www.reddit.com/r/lisp/comments/3vb4vv/lisp_gc_compared_to_java/
Аноним 14/12/15 Пнд 19:28:20 #159 №603373 
14501105009930.png
Теперь это емакс тред!
Аноним 14/12/15 Пнд 22:31:58 #160 №603599 
14501215184270.png
Помогите с чем-нибудь из этого, я совсем в строках еще не успел разобраться
Scheme
Аноним 14/12/15 Пнд 23:08:54 #161 №603642 
>>603599
Сука, нахуй ты просишь решить за тебя задачу, блять?
Попробуй решить сам, сука, а потом, когда обосрешься, принесешь сюда свой говно код, и у уже тогда анон тебе пояснит, почему конкретно ты дибил. Сука.
Аноним 14/12/15 Пнд 23:16:38 #162 №603657 
>>603373
Ах ты захватчик-оккупант!
Аноним 14/12/15 Пнд 23:26:04 #163 №603678 
>>603657
Реквестирую линки на годные .emacs
Аноним 14/12/15 Пнд 23:46:21 #164 №603719 
>>603642
Да идеи-то есть, пытаюсь реализовать, только вопросов много. Например, вот функция для подсчета чего угодно в строке (не длины самой строки):
(define (counter str)
(length (string-split str)))

То есть вот, например:
>(counter "I love you")
3

>(counter "1488 1337 1024 666")
4

Но мне нужно наложить условие, чтобы оно исключительно слова считало. В Scheme нет предиката word?, вот у меня и ступор немного.
Аноним 15/12/15 Втр 01:01:35 #165 №603848 
>>603719
А чем тебе 1488 не слово-то?
Аноним 15/12/15 Втр 01:05:34 #166 №603851 
>>603719
Какого хуя в злоебучем CL нет встроенного split'a
ЖОПА В ОГНЕ
Аноним 15/12/15 Втр 01:07:28 #167 №603857 
>>603848
При вызове предиката (symbol? '1488) он выдает false. Препод приебется.
Аноним 15/12/15 Втр 01:09:37 #168 №603861 
>>603857
А при чем тут это? В твоем задании же написано что считать словом.
Аноним 15/12/15 Втр 01:10:16 #169 №603862 
>>603861
Ну... окей. Оставлю так.
Аноним 15/12/15 Втр 01:14:42 #170 №603865 
>>603862
Упарываться, так по хардкору!
http://exercism.io/exercises/lisp/word-count/readme
http://ideone.com/lyjTod
Аноним 15/12/15 Втр 01:18:47 #171 №603872 
>>603373
Надо бы запилить официальный емакс-тред в /s/
Нет желающих?
Аноним 15/12/15 Втр 01:26:20 #172 №603883 
>>603872
Пили, буду почитывать.
Аноним 15/12/15 Втр 01:27:33 #173 №603887 
>>603883
Надо шапку накраудфандить.
Ссылки, текст, пик.
Аноним 15/12/15 Втр 07:29:41 #174 №603962 
>>603887
А что там писать-то? Сейчас есть спейсмакс, в котором большинство емаксовых проблем решено. Да и документация у него на удивление нормально написана.
Аноним 15/12/15 Втр 08:02:01 #175 №603968 
Странно, почему ещё обновления quicklisp'а не выкатили?
Аноним 15/12/15 Втр 12:02:06 #176 №604072 
>>603962
Это каких например?
Я вот люблю сам обмазываться конфигурацией.
Что в спейсмаксе такого, почему на него стоит обратить внимание?
Аноним 15/12/15 Втр 12:44:38 #177 №604106 
>>604072
>Что в спейсмаксе такого, почему на него стоит обратить внимание?
1) Всё уже настроено
2) Удобненько разбито на слои
3) Поддерживается многочисленным сообщество в актуальном состоянии
Аноним 15/12/15 Втр 12:49:38 #178 №604108 
>>604072
А и хоткеи ещё. Мнемоническое дерево хоткеев. Оче годно зделоли.
Аноним 16/12/15 Срд 17:22:26 #179 №605146 
14502757467270.jpg
Читал тут On Lisp. Пол пишет:
>It is therefore said that Common Lisp has distinct namespaces for variables and functions. We can have a variable called foo and a function called foo, and they need not be identical. This situation can be confusing, and leads to a certain amount of ugliness in code, but it is something that Common Lisp programmers have to live with.

Через это решил почитать что пишут на тему lisp1 vs lisp2 и через этот СО-пост: http://stackoverflow.com/questions/4578574/what-is-the-difference-between-lisp-1-and-lisp-2 нашел вот эту бумагу: http://www.nhplace.com/kent/Papers/Technical-Issues.html

В общем и целом выходит что lisp2 хуйня на постном масле. Что думаете по этому поводу?
Аноним 16/12/15 Срд 18:17:25 #180 №605182 
>>605146
Думаю ERROR expected a procedure that can be applied to arguments
Аноним 16/12/15 Срд 19:05:03 #181 №605212 
>>605182
Щито блеять? Говори чтобы ньюфаги тебя тоже понимали.
Аноним 17/12/15 Чтв 10:55:51 #182 №605729 
>>605146
Это бамп.
Аноним 17/12/15 Чтв 14:11:32 #183 №605853 
Поясните за лисп?
Для чего его юзают какие-то крупные предприятия и корпорации?
Т.е., если я его выучу и пойду на работу, что я на нём буду писать? И насколько он сложный в освоении?
Аноним 17/12/15 Чтв 14:23:12 #184 №605856 
>>605853
Ты заебал. Прочитай тред уже.
Аноним 17/12/15 Чтв 15:31:00 #185 №605886 
>>605853
>Т.е., если я его выучу и пойду на работу, что я на нём буду писать?
С такими-то вопросами - нихуя. Краску будешь в принтере менять.
Аноним 17/12/15 Чтв 17:17:27 #186 №605965 
>>605856
>>605886
нахуй идите
или нормально на вопросы ответьте, или вообще нихуя не пишите
Аноним 17/12/15 Чтв 17:22:36 #187 №605971 
>>605965
Просто я не хочу тратить время впустую, изучать этот лисп, а когда выучу, вдруг осознать, что он уже устарел, и лучше бы я учил какой-нибудь С, Жабу етс.
Просто, если я буду учить С# - я смогу писать десктопные приложения по виндой, обж-С для АйОси, РОР и ДЖС для веба, джава для бэк-энда и андроида
Ну а Лисп для чего тогда?
Аноним 17/12/15 Чтв 17:24:08 #188 №605973 
>>605971
У тебя есть два варианта.
1) Учится писать код через SICP (учишь scheme)
2) Не выебываться и учить любой язык за который платят деньги.

А когда будет знать 2-3 языка, может упороться лиспом, чтобы улучшить свои навыки в других языках и программировании в целом.
Аноним 17/12/15 Чтв 17:25:18 #189 №605975 
>>605973
т.е. практического применения у него нет?
если я хочу получать деньги, то мне лучше учить другой язык?
Аноним 17/12/15 Чтв 17:27:24 #190 №605976 
>>605975
Практическое применение есть. Но если ты вонючий ньюфаг то шансы найти работу на лиспе у тебя стремятся к нулю. Учи php и не еби мозг.
Аноним 17/12/15 Чтв 17:29:02 #191 №605978 
>>605976
>Практическое применение есть
так я и спросил, какое?
Аноним 17/12/15 Чтв 17:38:14 #192 №605986 
>>605978
autocad, emacs, что нальют.
Аноним 17/12/15 Чтв 17:55:45 #193 №606001 
>>605978
Разнообраное, блядь. Твой вопрос на уровне "А какое применение у языков с си-подобным синтаксисом, а какую мне за его знание работу дадут.". Вот и что такому долбоебу отвечать? Перечислять все сферы ИТ? Увольте, проще послать нахуй.
Аноним 17/12/15 Чтв 17:56:24 #194 №606002 
>>605986
Это только для автолиспа и елиспа.
Аноним 17/12/15 Чтв 17:56:46 #195 №606003 
>>606001
ну если ты даже на такое ответить не способен, то тебе лучше вообще программированием не заниматься
Аноним 17/12/15 Чтв 17:57:13 #196 №606004 
>>606003
Попробуй ты ответить, а я поучусь.
Аноним 17/12/15 Чтв 18:01:46 #197 №606007 
У сишки применения понятные: писать загрузчики для операционных систем, драйвера для чайников и прочий эмбед. У лиспа прикладных применений нет, но он нужен чтобы побыть неформалом/маргиналом, угореть по метапрограммированию в чистейшей инкарнации, повыдумывать и попрототипировать метапарадигмы.
Аноним 17/12/15 Чтв 18:06:24 #198 №606012 
>>606004
>>605971
Аноним 17/12/15 Чтв 18:06:50 #199 №606014 
>>606007
ну вот более-менее адекватный ответ, спасибо
Аноним 17/12/15 Чтв 18:12:41 #200 №606034 
>>606007
> писать загрузчики для операционных систем, драйвера для чайников и прочий эмбед.
Странно. Тогда почему больше 50% кода на сишке к драйверам и ОС не относятся? Алсо, почему ты не перечислил остальные языки?
>У лиспа прикладных применений нет
Интересное мнение. Только что это за язык такой - лисп? LISP-1.5, который несколько десятков лет назад сгинул или какой-то другой? Ты уточняй, а то я чужие мысли читать не умеют.
Аноним 17/12/15 Чтв 18:16:03 #201 №606044 
>>605971
>Ну а Лисп для чего тогда?
Общелисп и кложура подойдут для всего того, что ты перечислил. Исключение только - кложура на айоси.
Аноним 17/12/15 Чтв 18:19:07 #202 №606050 
>>606034
У любого. Сommon Lisp, Racket, Clojure. Последний выделяется чуть большим хайпом, и возможно большим количеством хоббистов, но это связано с его относительной новизной и пеаром Рича Хикки. Несмотря на это, всё что на нём пишут - иначе чем баловством или экспериментаторством не назовёшь. Не как что-то плохое, просто надо это понимать, чтобы правильно расставить приоритеты.
Аноним 17/12/15 Чтв 18:26:39 #203 №606073 
>>606050
И что для тебя не "баловство"?
>это связано с его относительной новизной
Связано с тем, что для ява- и жс-программистов clojure и clojurescript - глоток свежего воздуха. Новизны там никакой нет.
Аноним 17/12/15 Чтв 19:06:23 #204 №606158 
14503683832750.png
>>605978
Писать генераторы интернет магазинов :3
Аноним 17/12/15 Чтв 19:22:16 #205 №606181 
>>606073
Текущая экосистема JavaScript, Java, .NET, Python, Ruby, PHP - не баловство.
> Новизны там никакой нет.
Я имел в виду, что комонлиспу 30 лет, рэкету 20, а вот кложуре всего лишь 8.
Аноним 17/12/15 Чтв 19:28:40 #206 №606193 
>>606050
> всё что на нём пишут - иначе чем баловством или экспериментаторством не назовёшь
гугли на ютубе канал russian clojure - записи хэнгоут конференций, где люди рассказывают где его применяют. Есть чуваки из дс2, кто делает буржуям медицинский софт на кложуре, русскоязычный контрибьютор в кложуру из Канады, из США и Германии люди есть, которые используют в продакшене
Аноним 17/12/15 Чтв 19:33:56 #207 №606203 
>>606181
>PHP - не баловство
это в недалёкой перспективе некроязык, про него можно забывать
Аноним 17/12/15 Чтв 19:59:08 #208 №606225 
>>606007
>>606181
А, так это опять ты?
>Кококо на нульче я был крутым лишпером, но потом всё понял.
Чувак, если ты несколько лет кукарекал про лисп аки золотце, вместо того, чтобы писать код, а потом разочаровался - так это твои сугубо личные проблемы, не нужно из-за этого хаять язык, опять впадая в крайности и опять прожигая время впустую.
Аноним 17/12/15 Чтв 22:23:13 #209 №606340 
>>606203
Он такой же мертвый как кобол. Миллионы строк продакшн кода будут в поддержке десятилетиями.
Аноним 17/12/15 Чтв 22:26:39 #210 №606343 
>>606340
На нем нет такого же, как на коболе, кода, который нужно десятилетиями поддерживать.
Аноним 17/12/15 Чтв 22:38:30 #211 №606356 
>>606343
Если пхп и умрет, то оооочень не скоро.
Аноним 17/12/15 Чтв 22:44:26 #212 №606362 
>>606356
Да он уже умер.
Аноним 17/12/15 Чтв 22:54:41 #213 №606371 
>>606356
хахаха, пошутил
wp уже перешел на nodejs
пхп в эпоху сайтов на ror+js теряет свою актуальность.
Аноним 17/12/15 Чтв 22:56:25 #214 №606374 
>>606371
Лол. Эпоха рор уже прошла.
Аноним 17/12/15 Чтв 23:05:10 #215 №606380 
>>606374
продолжай меня веселить, мань)
Аноним 17/12/15 Чтв 23:09:10 #216 №606383 
>>606380
С разморозочкой. РОР изжил себя раньше, чем успел стать меинстримом. Вот такой быстрый этот веб.
Аноним 17/12/15 Чтв 23:18:06 #217 №606400 
>>606383
Кошмар :С
Жалко компанию моего братишки, в которой он каждый месяц на этом зарабатывает по 2к баксов :С
Аноним 17/12/15 Чтв 23:18:48 #218 №606402 
>>606371
Петросян блядь. Ты только 1-апрельские новости читаешь, да?
Аноним 17/12/15 Чтв 23:19:44 #219 №606404 
>>606402
иди тапок покури
Аноним 17/12/15 Чтв 23:27:35 #220 №606408 
>>606404 >>606402 >>606400
>>606383 >>606380 >>606374
>>606371 >>606362 >>606356
>>606343 >>606340 >>606203
>>606181
Что за хуйню вы тут устроили? Уёбывайте обратно в свой ПХП-тред. Или откуда вы повылазили.
Аноним 17/12/15 Чтв 23:29:06 #221 №606409 
>>606408
Каждая похапэ макака в душе хочешь быть лиспогосподином же.
Аноним 18/12/15 Птн 14:49:07 #222 №606752 
14504393475200.gif
lisp1 vs lisp2 срач го!
lisp2 господины ссут в рот lisp1 защеканам, которые не могут назвать аргумент функции list
Аноним 18/12/15 Птн 17:05:19 #223 №606826 
Посоны, расскажите, как вы работаете со слаймом?

Вот есть у меня файлик index.lisp. В нем есть функция одна поднимающая clack и другая выключающая его.

Я делаю M-x slime-eval-buffer или (load "index"), потом (my:reload) и смотрю уже в браузере что к чему.
Аноним 18/12/15 Птн 17:47:40 #224 №606863 
https://itch.io/jam/january-2016-lisp-game-jam
Кто участвует?
Аноним 18/12/15 Птн 18:30:53 #225 №606897 
>>606863
Можно попробовать. Даже проект есть.
Аноним 18/12/15 Птн 19:43:07 #226 №606927 
Анон, я вбиваю в гугл
проекты на common lisp

а он мне в ответ: преимущества common lisp.
Есть ли проекты? Я заебался уже искать, я уже знаю преимущества наизусть сука.
Аноним 18/12/15 Птн 19:51:48 #227 №606933 
>>606826
Делаю (asdf:load-system :my-yoba-project)
а потом уже запускаю что надо.
Если проект - небольшая одноразовая хуита, то делаю примерно так же, как ты описал.
Аноним 18/12/15 Птн 19:53:45 #228 №606935 
>>606927
А что ты ищешь?
>проекты на common lisp
По-русски что ли? Этак ты в лучшем случае упоминание какого-нибудь проекта только в лиспосраче на лоре найдешь.
Аноним 18/12/15 Птн 19:54:01 #229 №606936 
>>606933
Не, ну ты же поправил что-то, хочешь посмотреть результат (если это не просто эвал одной функции, конечно).
Если видел как работает CEPL, хочу так же белять.
Аноним 18/12/15 Птн 19:54:52 #230 №606937 
>>606863
>>606897
Нет желающих присоединится? Пилю поинт-энд-клик квест.
Аноним 18/12/15 Птн 19:55:17 #231 №606939 
>>606863
О, интересно. Как раз планировал мини-йобу начать писать.
Аноним 18/12/15 Птн 19:59:47 #232 №606941 
>>606937
Давайте сделаем квест про программистишку. По сюжету нужно устроится на работу за доширак и найти тян, жируху-продавщицу с личинкой от ашота.
Аноним 18/12/15 Птн 20:03:48 #233 №606946 
>>606936
А, ты про это. После того, как запустил, начинаю править код. Исправил функцию, C-c C-c, смотришь результат.
В некоторых случаях, как при работе с cl-sdl2, например, бывает удобно повесить свой перезапуск (http://www.lispworks.com/documentation/HyperSpec/Body/m_rst_ca.htm#restart-case ), чтобы из-за ошибки не перезапускать заново, а исправить функцию, скомпилить её и продолжить выполнение.
Аноним 18/12/15 Птн 20:21:12 #234 №606955 
14504592726150.png
>>606941
Ну почти. Сценарист и хуйдожник уже есть.
Аноним 18/12/15 Птн 20:24:50 #235 №606957 
>>606955
Ты рисовал? Охуенно.
А задумка какая?
Аноним 18/12/15 Птн 20:29:15 #236 №606961 
>>606955
Расскажи сюжет, действительно про программиста?
Аноним 18/12/15 Птн 20:30:54 #237 №606964 
14504598546340.png
>>606957
Нет, рисовал один из игроков в мою основную игру.
>>606961
Сюжет про мальчика (хуйдожник), который сидел на пеньке. "Ну почти" было про ашота.
Аноним 18/12/15 Птн 20:46:20 #238 №606973 
>>606863
Чому они blackthorn и blackthorn-3d не упомянули?
Аноним 19/12/15 Суб 02:51:49 #239 №607166 
>>606964
а почему на лиспе, а не на питоне каком-то?
Аноним 19/12/15 Суб 05:14:39 #240 №607184 
>>606225
Ну смотри, если сразу в своём баловстве пытаться использовать все фичи лиспа на полную катушку, чтобы всё прощупать и понять, что из этого можно извлечь, приходишь к выводу, что такой максимальный режим - это тупик. Если не использовать настолько сильно и настолько по-максимуму - то оказывается, что всё оставшееся нормально делается более структурированными и легковесными средствами метапрограммирования в мейнстримных языках, при этом не жертвуя синтаксисом/типизацией, инфраструктурой, вакансиями. И это нежертвование даёт огромный общий буст и профит. Кстати, Золотце-то вообще Симту написал, и на ней игру почти релизнул. Тоже кое-что говорит о скобочках, правда? Надо делиться опытом, чтобы люди не проёбывали своё время на тот же путь. Я абсолютно уверен, что никто не извлечёт из фанатичного максималистского лиспоугара СИМФОНИЮ или что-то такое особенное. Люди просто в лучшем случае проебут время, а в худшем - ещё и психику. Но вам же этого и надо, чекашня обоссаная. Вы уже везде, но везде сосёте хуй, причмокивая ;)
Аноним 19/12/15 Суб 10:17:33 #241 №607228 
>>607184
>пытаться использовать все фичи лиспа на полную катушку
То, что ты описал, называется "программистская жадность". Наверное, все молодые программисты через это проходят. Тебе, видимо, повезло, и перенес ты её в особо тяжелой форме, из-за чего проебал не только время, но ещё и психику. Обычно переболевшие просто начинают чувствовать меру, но тебя же, бесконечного максималиста, швырнуло в другую крайность.
>Золотце-то вообще Симту написал, и на ней игру почти релизнул
Недоязык поверх, ЕМНИП, sbcl и огрызок варкрафта. Даже не знаю, много ли это, мало ли для нескольких лет форумного программиста. По сложности и объему работы там на две курсовые среднего студента 2-3 курса.
Аноним 19/12/15 Суб 11:01:37 #242 №607236 
>>603968
http://blog.quicklisp.org/2015/12/december-2015-quicklisp-dist-update-now.html
Аноним 19/12/15 Суб 11:57:32 #243 №607242 
>>607166
Лично мне питон не нравится, но это не относится к вопросу.

Уж больно мне нравится лишп. Хочется сделать на нем что-то посерьезней пары функций для емакса.
Аноним 19/12/15 Суб 12:00:17 #244 №607243 
>>607242
По сути я решил сделать мини-игру ради практического изучения лиспа, а не выбрал лисп в качестве средства для реализации игры.
Аноним 19/12/15 Суб 12:30:10 #245 №607257 
>>607243
понял
ну, удачки тебе в реализации
Аноним 19/12/15 Суб 12:37:53 #246 №607267 
>>606927
github, поиск по языкам
Аноним 19/12/15 Суб 13:01:29 #247 №607283 
>>607257
Я только начал. Присоединяйся, если хочешь.
https://github.com/TatriX/rogalia-quest
Аноним 19/12/15 Суб 13:02:52 #248 №607284 
>>606927
https://github.com/trending?l=common-lisp
Аноним 19/12/15 Суб 13:08:22 #249 №607289 
>>607228
Ну вот я объяснял выше по треду, что примеров профита метапрограммирования лиспа по сравнению с метапрограммированием жабок и жс нету, даже максимальные случаи вроде PEG-дслей нормально делаются без лиспа. И вообще, вот это всё желание подсадить людей на маргинальные языки, не будучи даже в состоянии объективно аргументировать цель мероприятия, меня очень сильно настораживает. Пока что буду считать, что это нужно чтобы у людей не было выбора в работе, и чтобы их проще было заманивать резко появившимися локально вакансиями в какую-то античеловеческую подпольную гебешную парашу.
Аноним 19/12/15 Суб 13:22:36 #250 №607308 
>>607283
не шарю в лиспе вообще :)
Аноним 19/12/15 Суб 13:26:52 #251 №607321 
>>607289
Тебе заняться больше нечем, воин форумный?
>PEG-дслей нормально делаются без лиспа
Да ради бога. Если евалить строки для тебя лучше, то еваль на здоровье.
Тут-то ты кого и в чем убедить хочешь?
Раз уж ты такой самоотверженный фанатик, то переместись в более подходящее для твоих рвений место. Например, в JS/Java-треды. Там с тебя пользы больше будет.
Аноним 19/12/15 Суб 15:58:32 #252 №607452 
>>607283
Если в джеме участвовать, то нужно начинать 2го января
Аноним 19/12/15 Суб 16:16:25 #253 №607467 
>>607452
You may also develop your own general-purpose engines, tools, tests, and boilerplate before the Jam begins. That way you can "hit the ground running" and have your basic code ready. The point is to design and code the gameplay during the Jam; there is no harm in preparing and testing out your general framework in advance.
Аноним 19/12/15 Суб 17:06:40 #254 №607497 
>>607452
>>607467
Угу. Я пока потихоньку ковыряю cl-sdl2.
Аноним 19/12/15 Суб 17:11:17 #255 №607501 
>>607497
А я простенький физический движок начинал пилить, пока не понял, что совершенно не помню физику. Читаю учебник теперь.
Аноним 19/12/15 Суб 17:36:58 #256 №607515 
Почему лисп-тред самый интересный из всех?
Аноним 19/12/15 Суб 18:05:57 #257 №607540 
>>607515
Хрен его знает.

Лучше объясните, почему я не могу сделать apply на макрос:
(defmacro  markup-img  (src  &rest  args)
    `(markup  (:img  :src  ,(concatenate  'string  images-path  src)  ,@args)))

но могу сделать вот так:

(defun  markup-img  (src  &rest  args)
    (eval  `(markup  (:img  :src  ,(concatenate  'string  images-path  src)  ,@args))))
Аноним 19/12/15 Суб 18:18:18 #258 №607544 
>>607540
потому что макрос не функция?
Аноним 19/12/15 Суб 18:20:10 #259 №607548 
>>607544
У макроса есть &rest, как мне его заполнить на основе списка?
Аноним 19/12/15 Суб 18:21:01 #260 №607549 
>>607548
,@args
Но вангую, что ты просто неправильно используешь макрос.
Аноним 19/12/15 Суб 18:24:08 #261 №607552 
>>607540
Разница в твоих примерах в том, что функции передаются вычисленные аргументы, а макросу - формы.
Аноним 19/12/15 Суб 18:24:38 #262 №607553 
>>607549
https://github.com/arielnetworks/cl-markup
Есть макрос:
(markup (:img :src "fuck.png" :class "shit"))

Хочу чтобы в результате было так:
(markup-img "fuck" :class "shit")
Аноним 19/12/15 Суб 18:27:37 #263 №607555 
>>607553
Ты передаёшь константную строку? Или переменную?
Аноним 19/12/15 Суб 18:28:46 #264 №607558 
>>607555
Если передаешь константу, ясен пень, проблем нет.
Но я хочу передать туда слот объекта.
Аноним 19/12/15 Суб 18:30:29 #265 №607559 
>>607558
Тогда вот так:
(defmacro markup-img (src &rest args)
    `(markup (:img :src (concatenate 'string images-path ,src) ,@args)))
Аноним 19/12/15 Суб 18:37:22 #266 №607566 
>>607559
Понял, спасибо.
Аноним 19/12/15 Суб 19:26:08 #267 №607604 
14505423681980.png
>>607553
Палю годноту: https://github.com/madnificent/SEXML
Не знаю, насколько оно эффективно в сравнении с cl-markup, но выглядит более юзабельным.
Аноним 19/12/15 Суб 19:31:29 #268 №607610 
>>607604
Выглядит мерзковато. Лучше уж тогда взять https://mmontone.github.io/djula/
Но пока cl-markup меня вполне устраивает.
Аноним 19/12/15 Суб 19:33:36 #269 №607613 
Еще вопрос: знает кто-нить годную либу для многоязычного приложения?
Что из этого юзабельно:
http://www.cliki.net/internationalization
Аноним 19/12/15 Суб 19:35:13 #270 №607615 
>>607613
О, у Фукамачи есть либа: https://github.com/fukamachi/cl-locale, возьму её, пожалуй.
Аноним 19/12/15 Суб 19:52:27 #271 №607638 
>>607610
>Выглядит мерзковато.
Чому? Тот же cl-markup, но без постоянных оборачиваний в (markup ...).
Алсо, он пригоден не только для html, а для любого xml с dtd-спецификацией.
>djula
Или https://github.com/archimag/cl-closure-template
Аноним 19/12/15 Суб 19:58:58 #272 №607650 
>>607638
Потому что я хочу
(:a :href "fuck" (:img :src "yeah"))
А не
(<:a :href "fuck" (<:img :src "yeah"))
Которое не особо отличается от
<a href="fuck"><img src="yeah">
Аноним 19/12/15 Суб 20:04:09 #273 №607656 
>>607650
< — просто имя пакета.
Можно писать <:(:a :href "fuck" (:img :src "yeah"))
Аноним 19/12/15 Суб 20:10:00 #274 №607664 
Фуууу... в sbcl набор инструкций sse2 определен только для x86-64.
Что делоць, посоны?
Аноним 19/12/15 Суб 20:20:41 #275 №607670 
>>607656
Хер знает, поставил, потыкал палочкой. Не зря у него звезд на гитхабе нет.
Аноним 19/12/15 Суб 20:50:01 #276 №607689 
Как в Spacemacs'е сделать автостарт linum-mode? Или может есть какие-то другие способы чтоб нумерация строк отображалась?
Аноним 19/12/15 Суб 20:56:06 #277 №607696 
>>607689
[code lang=lisp]
;; If non nil line numbers are turned on in all `prog-mode' and `text-mode'
;; derivatives. If set to `relative', also turns on relative line numbers.
;; (default nil)
dotspacemacs-line-numbers nil
[/code]
Аноним 19/12/15 Суб 20:59:01 #278 №607697 
14505479418610.png
>>607696
Аноним 19/12/15 Суб 21:01:34 #279 №607699 
>>607697
M-x spacemacs/ediff-dotfile-and-template
Тебе шаблон обновить надо.
Аноним 19/12/15 Суб 21:03:11 #280 №607701 
>>607699
А оно мои настройки не затрет? Просит сохраниться в ~/.spacemacs
Аноним 19/12/15 Суб 21:10:18 #281 №607705 
>>607701
Ничего не затрет, это ж просто ediff.
Разницу тебе покажет, поможет перетащить различающиеся части из одного буфера в другой.
Аноним 19/12/15 Суб 21:12:15 #282 №607707 
>>607705
Добра.
Аноним 19/12/15 Суб 21:19:32 #283 №607708 

>>607705
Извини за тупняк, но в новом тоже нету этой функции. Этот новый - старый дефолтный.
Аноним 19/12/15 Суб 21:21:36 #284 №607709 
>>607708
Можно просто дернуть в user-init linum-mode?
Я дописываю в user-init (linum-mode), но оно не запускается при старте.
Аноним 19/12/15 Суб 21:28:23 #285 №607716 
>>607709
Оказывается, они из develop ещё не перетащили. Хотя добавили хуй знает когда.
https://github.com/syl20bnr/spacemacs/blob/develop/core/templates/.spacemacs.template#L207
>Можно просто дернуть в user-init linum-mode?
Да, можно и (global-linum-mode) добавить.
Аноним 19/12/15 Суб 21:31:04 #286 №607718 
>>607716
Робит :3 Благодарю.
Аноним 19/12/15 Суб 22:59:44 #287 №607766 
Вот хз почему, но даже когда общелисп доебывает своей непостоянностью и старперством, на нем все равно в 9000 раз приятней писать чем на пыхе.
Аноним 20/12/15 Вск 00:09:41 #288 №607789 
Пилю тут себе маленький магазинчик для игры.
https://github.com/TatriX/cl-shop/
Вот что вышло пока. Ткните мордой в (not (common-lisp-way))
Аноним 20/12/15 Вск 00:52:10 #289 №607814 
>>607789
> Simple web store written on Common Lisp
Аноним 20/12/15 Вск 00:54:25 #290 №607816 
>>607814
http://english.stackexchange.com/questions/23126/article-written-in-or-on-a-journal
С хуя бы?
Аноним 20/12/15 Вск 00:54:33 #291 №607817 
>>607789
За что глаз зацепился:
>(apply #'clack:clackup (cons app args))
Можно писать (apply #'clack:clackup app args)
>(slot-value product 'id)
А чего ты ридеры/аксесоры не используешь?
>(find-if (lambda (product) (eq (slot-value product 'id) id)) products)
(find id products :key #'product-id)
>(prompt-read "shop> ")
Но зачем? Просто поднимаешь swank, а при необходимости коннектишься и делаешь то, что нужно: останавливаешь, перезапускаешь, фиксишь код и т.д.
>build.sh
roswell же ( https://github.com/snmsts/roswell )
Или, если не нравится, то cl-launch или buildapp
Аноним 20/12/15 Вск 01:06:36 #292 №607827 
>>607817
>roswell
Author
 SANO Masatoshi ([email protected])
Contributors
 Eitaro Fukamachi ([email protected])
 Tomoya KAWANISHI ([email protected])
 Masataro Asai ([email protected])

И чего это вдруг пиздоглазые так плотно за лисп взялись?
Аноним 20/12/15 Вск 01:09:36 #293 №607829 
>>607817
>Можно писать (apply #'clack:clackup app args)
Мерси, поправил.
>А чего ты ридеры/аксесоры не используешь?
Не освоился еще. А можно как-то менее геморойно это все генерить?
>(find id products :key #'product-id)
Каждый раз забываю про :key. Поправил
>Но зачем? Просто поднимаешь swank, а при необходимости коннектишься и делаешь то, что нужно: останавливаешь, перезапускаешь, фиксишь код и т.д.
Пытался собрать статический бинарник для хостинга, но не взлетело. Так-то я через slime пилю.
>roswell же ( https://github.com/snmsts/roswell )
Посмотрю, когда до готовности доведу.
Аноним 20/12/15 Вск 01:10:38 #294 №607830 
>>607827
Eitaro Fukamachi ([email protected])
Этот хер вообще какой-то охуенный. quickdocs, woo, clank, cl-markup, cl-locale, и еще куча всего.
Аноним 20/12/15 Вск 01:12:45 #295 №607832 
>>607829
Алсо сейчас мне приходится евалить весь файл (C-c C-k) и потом делать C-c C-e (restart), чтобы перезапустить сервер. Можно все это свести до С-с С-С нужной функции?
Аноним 20/12/15 Вск 01:18:03 #296 №607834 
>>607829
>А можно как-то менее геморойно это все генерить?
Ну, писать :accessor product-id не так уж и геморно, если сравнивать с другими языками. Но можно и макрос сделать, который будет генерировать аксесоры вида <class-name>-<slot-name>. Или через MOP попердолиться. Только сомневаюсь, что это целесообразно.
>>607830
Они там какой-то стартуп пилят. Видел не так давно вакансию, где они лиспопрограммистов искали.
Аноним 20/12/15 Вск 01:20:13 #297 №607835 
>>607832
>мне приходится евалить весь файл
Зачем? Функцию просто перекомпиливаешь и всё.
Или нингл не умеет обработчики маршрутов обновлять без перезапуска?
Аноним 20/12/15 Вск 01:21:15 #298 №607837 
>>607834
https://github.com/fukamachi
Парниша прям Фабрис Беллар от лиспа.
Аноним 20/12/15 Вск 01:22:59 #299 №607838 
>>607835
Ну функцию/файл не столь важно. Кнопок жать одинаково, проще сразу файл компильнуть.
Но вот сервер приходится перезапускать. Хочу как CEPL, заевалил функцию и оно тут же применилось.
Аноним 20/12/15 Вск 01:27:12 #300 №607840 
>>607838
>Ну функцию/файл не столь важно.
Медленнее. Состояние можно проебать, если оно где-то в топлевеле меняется. Ну или просто бывает код недописанный.
>Но вот сервер приходится перезапускать.
Зачем? Сомневаюсь, что это необходимо.
Аноним 20/12/15 Вск 01:31:52 #301 №607845 
>>607840
>Зачем? Сомневаюсь, что это необходимо.
И вправду, перезапускать не надо.
>Медленнее. Состояние можно проебать, если оно где-то в топлевеле меняется. Ну или просто бывает код недописанный.
А вот это как раз надо. Если заевалить только функцию используемую в роуте, то нихуя не применится. Поэтому я и подумал что надо перезапускать серв. Если евалить не только функцию, но и роут её использующий, применяется на лету. Так что проще весь файл загрузить.
Аноним 20/12/15 Вск 01:34:00 #302 №607848 
Вот такие вещи:
(defun  println  (text)
    (princ  text  query-io)
    (terpri  query-io)
    (force-output  query-io))
заебывают. Почему бы не форсить вывод по переводу строки.
Аноним 20/12/15 Вск 01:41:22 #303 №607852 
>>607845
>Если заевалить только функцию используемую в роуте
Ты про эту лямбду что ли?
>(setf (ningle:route app (url "product/:id"))
> (lambda (params)
Если да, то просто жмакаешь C-c C-c и выполняется вся форма, начиная с setf.
Как же этот setf глаза чешет, пиздец просто.
>>607848
Он и так по переводу строки вроде бы форсится.
Вообще, зачем ты princ и terpri используешь? format же их полностью заменяет. Тем более, что при компиляции он в те же принки и терпри раскрывается.
Аноним 20/12/15 Вск 01:44:34 #304 №607855 
>>607852
Ну дык я заевалил функцию которая используется в лямбде. Нихуя не произошло. Приходится искать лямбду и эвалить её. Проще весь файл.
Сетфы из примеров. В caveman, например, есть жабо-аннотации.
А вот хуй, пока (force-output) не сделаешь, нихуя не происходит. Функцию вообще из PCL скопировал.
Аноним 20/12/15 Вск 01:55:39 #305 №607858 
>>607855
>Ну дык я заевалил функцию которая используется в лямбде. Нихуя не произошло.
Да ну, быть не может. Какую именно? Попробую воспроизвести.
>А вот хуй, пока (force-output) не сделаешь, нихуя не происходит.
[code lang=common-lisp]
(defun test1 ()
(loop :for i :from 0 :to 3 :do
(princ i)
(terpri)
(sleep 1)))

(defun test2 ()
(loop :for i :from 0 :to 3 :do
(format t "~d~%" i)
(sleep 1)))

(defun test3 ()
(loop :for i :from 0 :to 3 :do
(princ i)
(sleep 1)))

(progn (test1) (test2) (test3))
[/code]
В первых двух всё выводится без ручного форсирования.
Аноним 20/12/15 Вск 02:07:58 #306 №607859 
>>607858
Да ну, быть не может. Какую именно? Попробую воспроизвести.
Вот эту: (defun product-markup (product) на /shop/

Так ты пробуй в скомпилированном файлике, а не в слайме.
Аноним 20/12/15 Вск 02:09:10 #307 №607860 
>>607855
А. лол. У тебя ж там статическая страничка.
[code lang=lisp]
(setf (ningle:route app base-url)
(template
(loop for product in goods
collect (product-markup product))))
[/code]
Ты обработчику строку присваиваешь, которую он с чистой совестью браузеру и отдает.
Аноним 20/12/15 Вск 02:14:48 #308 №607861 
>>607860
Алсо
>(defun img-src (src)
>(defun product-href (product)
В нингле нет чего-то вроде genurl, как в restas'е?
Там для каждого маршрута генерируется метод genurl с такими же аргументами, как и самого маршрута. Например, для
(defroute product ("/product/:id") ...) генерируется (genurl 'product &key id).
Аноним 20/12/15 Вск 02:24:26 #309 №607862 
>>607860
Щито? Че делать то?
>>607861
хз, надо смотреть. В лишпомире доки не блещут.
Аноним 20/12/15 Вск 02:28:23 #310 №607865 
>>607862
>Щито? Че делать то?
[code lang=common-lisp]
(setf (ningle:route app base-url)
(lambda (params)
(template
(loop for product in goods
collect (product-markup product)))))
[/code]
>>607862
>В лишпомире доки не блещут.
Ну почему. У живых и нужных проектов с документацией обычно всё в порядке.
Нингл видимо к таковым не относится.
Аноним 20/12/15 Вск 02:31:16 #311 №607866 
14505678761510.png
>>607861
В caveman'е есть такое.
Аноним 20/12/15 Вск 02:36:51 #312 №607867 
>>607865
Хм, и правда, если отдавать лямбду, работает. Но почему? Как я должен был до этого догадаться?
Аноним 20/12/15 Вск 02:41:47 #313 №607869 
>>607867
Типа, если задать обработчиком функцию, она будет дергаться на каждый запрос, а если задать константу (строку), она будет отдаваться одной и той же?
Впрочем, звучит логично, вроде.
Аноним 20/12/15 Вск 02:45:35 #314 №607877 
>>607867
>Но почему?
Потому что это setf обычный, а он вычисляет присваиваемое значение. В данном случае это была форма (template ...), которая вычисляется в строку.
>>607869
>если задать обработчиком функцию, она будет дергаться на каждый запрос, а если задать константу (строку), она будет отдаваться одной и той же?
Ага.
Аноним 20/12/15 Вск 02:55:22 #315 №607881 
>>607877
Ну что тут сказать, лишп в очередной раз доказал превосходство над прочими недоязыками.
Аноним 20/12/15 Вск 16:36:45 #316 №608151 
Расскажите как пользоваться asdf или дайте линк на годный мануал. С меня нихуя.
Аноним 20/12/15 Вск 17:11:49 #317 №608187 
>>608151
А тебе что нужно? Свой модуль определить? Если да, то просто подсмотри в других проектах или в документации https://common-lisp.net/project/asdf/asdf.html#Defining-systems-with-defsystem
Если тебя интересуют подробности, то лучше не вскрывать эту тему http://linkfly.livejournal.com/9747.html
Аноним 20/12/15 Вск 17:15:23 #318 №608189 
Привет. Решил изучить Common Lisp, и попробовать для обучения создать на нем проект. Пошел по ссылке из шапки.
Поставил себе lisp in a box, а при запуске такая вот фигня появляется: http://pastebin.com/t7C4ug3r
Как ее отключить?
Аноним 20/12/15 Вск 17:52:34 #319 №608213 
>>608189
>lisp in a box
Его давно не поддерживают. Лучше поставь spacemacs ( https://github.com/syl20bnr/spacemacs#prerequisites ), с ним всё должно из коробки работать.
Аноним 20/12/15 Вск 18:28:17 #320 №608240 
>>608213
Забыл сказать: нужно будет ещё компилятор лиспа поставить ( http://sbcl.org/platform-table.html ), всё равно тот, что был в комплекте с lisp in box, давно протух.
И в конфиге спейсмакса активировать слой common-lisp, добавив его в dotspacemacs-configuration-layers. Если что, подробнее про конфиг здесь https://github.com/syl20bnr/spacemacs/blob/master/doc/DOCUMENTATION.org#dotfile-configuration
Тогда должно все работать. Хотя... это же винда.
Аноним 20/12/15 Вск 18:30:05 #321 №608243 
>>608240
Бедные шindoшs программисты. Как же они жрут то такое говно.
Аноним 20/12/15 Вск 20:52:54 #322 №608335 
С json'ом кто-нить работал? Что посоветуете? cl-json?
Аноним 20/12/15 Вск 21:01:01 #323 №608343 
>>608335
Есть сравнение https://sites.google.com/site/sabraonthehill/home/json-libraries
Я jsonw использовал и jonathan ковырял. Второй немного кривоват и требует переписывания.
Аноним 20/12/15 Вск 21:05:03 #324 №608345 
>>608343
>немного кривоват
На декодировании. Для генерации, может быть, и неплох.
Аноним 20/12/15 Вск 21:07:14 #325 №608348 
>>608343
>>608345
Ага, уже jsonw начал шатать.
Как, блять, к вложенным полям обращаться?
(jsown:val (jsown:val x "One") "Two") — это пиздец.
Аноним 20/12/15 Вск 21:08:00 #326 №608350 
>>608348
А там функция или макрос была для этого.
Аноним 20/12/15 Вск 21:13:26 #327 №608354 
>>608348
>>608350
jsown:filter
Аноним 20/12/15 Вск 21:17:29 #328 №608362 
>>608354
Добра.
Аноним 21/12/15 Пнд 07:39:48 #329 №608626 
Ананы, срочный вопрос от нюфага в эфир!
Если я переименую defun в defmacro, будет ли работать эта хуитка без дальнейших изменений? Ну очень надо.
Аноним 21/12/15 Пнд 11:09:43 #330 №608677 
>>608626
Наркоман, штолле, сука?
Аноним 21/12/15 Пнд 12:03:04 #331 №608709 
>>608187
Бля, нихуя не понимаю все равно.
Сделал я описания системы. И что дальше то? Как этим теперь пользоваться?
Аноним 21/12/15 Пнд 12:03:33 #332 №608710 
>>608626
В общем случае - нет, в редком частном, когда макрос вызывается с константными значениями в качестве аргументов, - да.
Если ты хочешь заоптимизировать частные случаи использования функции, то используй compiler-macro: http://www.lispworks.com/documentation/HyperSpec/Body/m_define.htm
Аноним 21/12/15 Пнд 12:05:26 #333 №608711 
>>608709
(asdf:load-system 'my-super-project) или (ql:quickload 'my-super-project)
Аноним 21/12/15 Пнд 12:14:01 #334 №608714 
>>608709
Ах да, не забудь поместить в ~/quicklisp/local-projects/ сам проект или символическую ссылку на него.
Либо добавь путь к местонахождению твоего .asd в переменную asdf:central-registry.
Аноним 21/12/15 Пнд 12:14:18 #335 №608715 
>>608711
Failed to find the TRUENAME of /tmp/slime-fasls/index.lisp:
Аноним 21/12/15 Пнд 12:15:04 #336 №608716 
>>608714
Вот, то что нужно. Спасибо.
Аноним 21/12/15 Пнд 13:44:20 #337 №608760 
14506946608590.png
>>592797 (OP)
пол семака изучали его в инсте, закончили на рекурсии.

единственно что я понял о предназначении этого языка - работа со списками.

и это всё?!
Аноним 21/12/15 Пнд 13:54:58 #338 №608766 
>>608760
Увидишь препода - смело ссы ему в ебло за то, что не сумел раскрыть сути лиспа.
Аноним 21/12/15 Пнд 17:35:14 #339 №608911 
>>608766
да нормальный препод. ссать в лицо надо составителям учебной программы CDIO для инженеров.
Аноним 22/12/15 Втр 15:44:04 #340 №609570 
14507882441840.jpg
Анон, порекомендуй онлайн интерпретатор для схемки. IDEONE дико глючит с вводом.
Спасибо.
Аноним 22/12/15 Втр 16:52:31 #341 №609637 
>>609570
Рэкет поставь. Зачем тебе онлайн?
Аноним 22/12/15 Втр 17:03:34 #342 №609658 
14507930144360.png
>>609637
Дома рэкет стоит. На работе хочу.
Аноним 22/12/15 Втр 17:13:59 #343 №609665 
>>609658
Поставь на работе. Что за проблема?
Или попробуй тут >>593218 поискать. Может быть, что-нибудь подходящее и найдешь.
Аноним 22/12/15 Втр 17:22:32 #344 №609674 
>>609665
Охуенно, спасибо!
Аноним 22/12/15 Втр 17:38:14 #345 №609684 
>>609570
http://pasterack.org/
Аноним 22/12/15 Втр 19:37:42 #346 №609799 
scheme или common lisp? Не могу определится.
Аноним 22/12/15 Втр 19:59:47 #347 №609828 
>>609799
Зависит от целей твоих.
Аноним 22/12/15 Втр 20:07:16 #348 №609838 
>>609799
CL, поскольку больше возможностей и в промышленной разработке имеет хоть какое-то место.
Аноним 22/12/15 Втр 20:10:57 #349 №609842 
>>609838
Пожалуй, поддвачну. Схема пригодна только для обучения и как встраиваемая скриптота.
Аноним 22/12/15 Втр 23:34:41 #350 №610000 
>>609828
>>609838
>>609842
А что за racket?
Аноним 22/12/15 Втр 23:40:31 #351 №610009 
>>610000
Схема на стероидах. Местами выглядит неплохо, но всё равно не слишком практична.
Ну и медленноват он для JIT'а.
Аноним 23/12/15 Срд 11:43:55 #352 №610216 
>>610009
Проще говоря, Общелисп по все поля.
А можно его как-то собрать в статический бинарник?
Окромя sb-ext:save-lisp-and-die
Аноним 23/12/15 Срд 12:47:20 #353 №610244 
>>610216
roswell, buildapp, cl-launch - выбирай
Аноним 23/12/15 Срд 12:53:18 #354 №610250 
>>610216
Если вдруг ты собираешься делать бинарник в отладочных целях, то ты делаешь это неправильно, и тебе срочно нужна slime-терапия.
Аноним 23/12/15 Срд 13:07:10 #355 №610262 
>>610250
Нет, конечно. Для деплоя.
Аноним 23/12/15 Срд 13:20:35 #356 №610272 
>>610262
Тогда ок.
Возможно, тебя заинтересует https://gist.github.com/fukamachi/52dce85caf477043ffeb
Аноним 23/12/15 Срд 23:59:35 #357 №610888 
Привет, лисперы. Читаю SICP, там есть упражнение - что будет, если в рекурсивной функции вместо встроенного IF или COND использовать собственную функцию. Меня этот вопрос насторожил- не должно же быть разницы. Попробовал сам. И, внезапно, от использования собственного аналога IF интерпретатор зависает (ещё как, еле вышел по Ctrl+C, даже гном мне подвесил немного, впрочем гном то ещё говно). Можете объяснить, почему так? Вот сам код (в упражнении не факториал, но я упростил):
http://pastebin.com/2Gbr2AKR
Аноним 24/12/15 Чтв 00:01:50 #358 №610891 
Алсо, посоветуйте годный REPL для Схемы, а то я ебал весь SICP и дальше проходить в стандартной оболочке, которая даже на клавиши Home/End и стрелки не реагирует
Аноним 24/12/15 Чтв 00:05:24 #359 №610897 
>>610888
Потому что у функции вычисляются все аргументы (и then-clause и else-clause).
>>610891
drracket или emacs + geiser
Аноним 24/12/15 Чтв 00:12:12 #360 №610900 
>>610897
Спасибо. Алгоритм вычисления выражения простой, но меня ввела в заблуждение синтаксическая идентичность вызова функции и особой формы.
Аноним 24/12/15 Чтв 00:26:24 #361 №610913 
>>610900
Ну, вызов макроса тоже синтаксически идентичен.
Такой он, лисп.
Аноним 24/12/15 Чтв 01:12:53 #362 №610926 
>>596803
>http://habrahabr.ru/post/122665/
Я не верю, что существуют люди без умственной отсталости и других заболеваний, которые неспособны понять указатели или рекурсию. Я могу их так объяснить, что даже пятилетний ребёнок поймёт. Серьёзно, о чём все подобные статьи? Откуда авторы берут такое?
Аноним 24/12/15 Чтв 02:04:29 #363 №610941 
>>610926
Я читал исследование каких-то американских преподавателей, которые заметили что студенты делятся на 2 категории. Первую бесполезно учить, потому что они необучаемы. Вторую бесполезно учить, потому что они и так всё знают и им надо давать более сложную программу. При этом в первую категорию входили в числе прочих талантливые математики. Мотивация также не была причиной необучаемости.

Также, они выделили несколько ступеней понимания программирования, каждая из которых сложнее предыдущей:

1. Последовательность операций. Оказывается есть люди, которые не могут понять что N-я строка выполняется только после всех предыдущих и может использовать результаты выполнения предыдущих строк. Необучаемые как раз те, кто мне могут понять концепцию последовательности операций. Они даже разработали примитивный тест на способность к программированию, который по существу проверяет может ли студент в последовательность операций. (тест примерно такой: "A=3; B=4; A=A+B; чему равно A?". Оказалось что этот тест быстро отсеивает необучаемых, безо всяких длинных анкет.)

2. Цикл. Оказалось что часть студентов не могут понять цикл, хотя и понимают последовательность операций. Профессиональными программистами понимается очень легко.

3. Рекурсия. Её не понимают даже многие профессиональные программисты.

4. Многопоточность. Это еще более сложная концепция, и непонимание многопоточности еще более распространено среди профессионалов, чем непонимание рекурсии.
Аноним 24/12/15 Чтв 04:08:20 #364 №610974 
>>610941
Опять же, информация из твоего ответа как раз подобна тому, над чем я недоумевал в предыдущем сообщении. Только ещё более невероятная.
>тест примерно такой: "A=3; B=4; A=A+B; чему равно A?"
Понятно, что если человек не знаком с программированием, он изначально может ответить неверно. Но если объяснить ему так:
>буквы - это ячейки в которых лежит числа
>знак равно кладёт значение справа от себя в ячейку с именем слева от себя
>значение ячейки равно значению лежащего в ней числа
Скажи, может ли человек в здравом уме не справиться с подобным тестом после такого объяснения?
>Рекурсия. Её не понимают даже многие профессиональные программисты.
Не понимают многие программисты - возможно. Профессиональные - абсурд, невозможно по определению. Это есть и в SICP, и у Виртов/Кнутов. Без рекурсивных структур данных разве вообще возможно программировать? (Тут я предполагаю, что профессиональный программист на динамическом языке знает, как реализовать связный список на Си)
Аноним 24/12/15 Чтв 04:27:59 #365 №610978 
>>610974
>Без рекурсивных структур данных разве вообще возможно программировать?
Конечно, нахуя в бухгалтерском софте рекурсия, например? Пока структуры данных линейны (включая и списки), рекурсия не нужна, достаточно циклов.
Аноним 24/12/15 Чтв 04:50:03 #366 №610984 
>>610978
Мы говорим о профессиональных программистах?

Глубокие знания не нужны, пока все решаемые задачи стандартны. Но если возникает сложная задача, от крудошлёпа толку никакого - он даже в голове не может представить её примерное решение.

Ну я уж молчу про качество кода крудошлёпов. Взять хотя бы JavaScript. Без понимания особенностей замыканий в этом языке (а значит и концепции замыканий в целом) очень легко сделать утечку памяти. Ты уверен, что большинство JS-кодеров хотя бы слово такое знают?

А сколько ошибок, связанных с тем, что забывают операцию обернуть в транзакцию? http://habrahabr.ru/post/258449/ А потому что крудошлёпы, как ты сам говоришь, не могут осознать,что их код будет выполняться параллельно.

Так что если человек не понимает элементарных вещей, то он и бухгалтерский софт соответствующего качества напишет
Аноним 24/12/15 Чтв 04:52:17 #367 №610986 
>>610984
>Взять хотя бы JavaScript. Без понимания особенностей замыканий в этом языке (а значит и концепции замыканий в целом) очень легко сделать утечку памяти.
Если кто захочет возразить, мол, крудошлёпы ограничены рамками фреймворка, то вспомните, что JS сейчас модно на сервер тащить. А там утечки куда опасней, чем на клиенте, и с фреймворками там всё хуже
Аноним 24/12/15 Чтв 11:18:25 #368 №611100 
>>610984
Дедушка ты уверен что ты не устарел на пару поколений?
Это где-это теперь замыкания создают утечки?
Аноним 24/12/15 Чтв 11:21:23 #369 №611104 
>>611100
http://www.ibm.com/developerworks/library/wa-jsmemory/
Аноним 24/12/15 Чтв 12:54:01 #370 №611136 
>>611104
>>>>>06 November 2012
О чем статья конкретно?
В современных движках большинство проблем решено.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
Аноним 24/12/15 Чтв 14:03:42 #371 №611184 
>>610926
Проблема в объяснении. Рекурсию объясняют через факториалы и фибоначчевые числа. В итоге человек, вроде бы, знает, что это такое, но остаётся вопрос, а нахуй такая акробатика нужна. Отсюда и отсутствие понимания.
С указателями ещё хуже. Я несколько лет писал на асме (правда, не очень активно), потом взял книжку по с и в главе про указатели не понял ровным счётом нихуя. Пришлось переводить в голове куски кода из сишки в асм, и только тогда стало ясно. Единственное нормальное объяснение указателей я видел в cs50.
Аноним 24/12/15 Чтв 14:53:10 #372 №611215 
>>611184
> В итоге человек, вроде бы, знает, что это такое, но остаётся вопрос, а нахуй такая акробатика нужна. Отсюда и отсутствие понимания.
У меня в учебнике объяснялась на примере рисования фрактала, какое-то дерево штоле. А на чем лучше ее объяснять? Обход деревьев и графов?
Аноним 24/12/15 Чтв 14:57:07 #373 №611219 
>>610974
>Понятно, что если человек не знаком с программированием, он изначально может ответить неверно. Но если объяснить ему ...
Нет. Смысл теста как раз в том чтобы не было никаких объяснений. Люди либо сразу понимают о чём речь, либо не понимают даже после объяснений. По крайней мере те исследователи пришли к таким выводам исходя из своей практики.

>Скажи, может ли человек в здравом уме не справиться с подобным тестом после такого объяснения?
Да. Они прямо об этом писали и сами не понимают почему так происходит, но это факт.

>Профессиональные - абсурд, невозможно по определению.
Профессиональный программист это тот кто кодит за деньги, для кого кодинг - профессия. Я видел профессионалов не понимающих рекурсию.

>>610978
>Пока структуры данных линейны (включая и списки), рекурсия не нужна, достаточно циклов.
А еще копипаст таким людям очень помогает. Все рекурсивные функции они просто копипастят со StackOverflow.
Аноним 24/12/15 Чтв 15:03:48 #374 №611229 
>>611219
Не так и часто нужная рекурсия, справедливости ради.
Особенно в вебе.
Один хуй, хвостовая рекурсия не намного лучше обычного цикла, а зачем рекурсия если она не хвостовая?
Аноним 24/12/15 Чтв 15:03:50 #375 №611230 
>>611219
> Профессиональный программист это тот кто кодит за деньги, для кого кодинг - профессия. Я видел профессионалов не понимающих рекурсию.
1C'ники, PHP'шники, Front End Senjor Developer'ы.
Аноним 24/12/15 Чтв 15:20:27 #376 №611248 
>>611219
>Профессиональный программист это тот кто кодит за деньги, для кого кодинг - профессия. Я видел профессионалов не понимающих рекурсию.
Человек может программировать на PHP, получать за это деньги и не знать правил приведения типов. Он профессионал?
Человек может писать на Java, получать за это деньги и не знать, что такое сборка мусора, полиморфизм. Он профессионал?
Аноним 24/12/15 Чтв 15:22:55 #377 №611253 
>>611248
На Java рекурсия иногда нужна для обхода иерархических структур. А вот на PHP нет.
Аноним 24/12/15 Чтв 15:25:43 #378 №611256 
>>611215
Да, деревья бы лучше были. Причём сначала написать через очередь, а потом показать, насколько проще это же делается рекурсивно. Тут сразу поймешь и как, и нахуя.
>>611219
>Смысл теста как раз в том чтобы не было никаких объяснений
ания.
Тогда я бы, скорее всего, не ответил. Да и ты бы тоже. Потому что в A = A + B А будет равно A. И только если B равно нулю. А после правильного ответа ты, скорее всего, назвал бы спрашивающего идиотом и ушёл.
>Люди либо сразу понимают о чём речь, либо не понимают даже после объяснений.
Абсолютная хуета.
Аноним 24/12/15 Чтв 15:26:20 #379 №611259 
>>611229
>Один хуй, хвостовая рекурсия не намного лучше обычного цикла, а зачем рекурсия если она не хвостовая?
Вот как раз нехвостовая рекурсия и нужна, потому что её в общем случае нельзя преобразовать в цикл (разве что написав собственный стек односвязным списком. Кстати, готов поспорить, что какой-нибудь крудошлёп может и такое навелосипедить, пытаясь решить рекурсивную задачу нерекурсивно).
Аноним 24/12/15 Чтв 15:27:19 #380 №611261 
>>611230
C# backend девелоперы это были, писали копроративные сайты.

>>611248
>Он профессионал?
Да. Профессионал это не какой-то единый стандарт. Бывают сильные, бывают слабые. Работает быдлокодером == профессионал.
Аноним 24/12/15 Чтв 15:27:54 #381 №611263 
>>611219
>Нет. Смысл теста как раз в том чтобы не было никаких объяснений. Люди либо сразу понимают о чём речь, либо не понимают даже после объяснений.
А ничего, что это полная бессмыслица с точки зрения математики?
Аноним 24/12/15 Чтв 15:29:07 #382 №611267 
>>611256
>Тогда я бы, скорее всего, не ответил. Да и ты бы тоже. Потому что в A = A + B А будет равно A. И только если B равно нулю. А после правильного ответа ты, скорее всего, назвал бы спрашивающего идиотом и ушёл.
Их эксперименты показывают другое. Особо подчеркну: эксперименты. Не предположения, как у тебя.

>Абсолютная хуета.
Это лишь твоё предположение.
Аноним 24/12/15 Чтв 15:29:51 #383 №611268 
>>611261
>Работает быдлокодером == профессионал.
У тебя подмена понятий. Вот есть продавец в киоске, а есть гений торговли, который может тебе запудрить мозги и продать акции никакущей фирмы за десятикратную цену. Оба продажники, оба получают деньги за работу, но профессионал только один.
Аноним 24/12/15 Чтв 15:29:55 #384 №611269 
>>611263
Да, это ничего. Об этом они тоже писали и писали что студенты как-то интуитивно понимают о чём речь.
Аноним 24/12/15 Чтв 15:32:01 #385 №611273 
>>611268
Ты описал разные профессии. Продавец в магазине выполняет чисто механическую функцию. Большая часть уже сделана за него (исследован рынок, определен список товаров, возможных клиентов, выбрана торговая точка, проведена реклама и т.д.).
Аноним 24/12/15 Чтв 15:33:08 #386 №611276 
>>611269
А ничего, что в языках с иммутабельностью нахуй не нужен этот тест, там наоборот способней будет тот, кто не принимает возможности изменения значения переменной. А исследователи говорят, что не справившимся дорога в программирование заказана. Чушь.
Аноним 24/12/15 Чтв 15:34:10 #387 №611278 
>>611273
Крудошлёп тоже выполняет механические действия, и даже не в рамках языка, а в рамках фреймворка. Язык как таковой он не знает.
Аноним 24/12/15 Чтв 15:35:24 #388 №611283 
>>611276
Хаскелеблядок, что ли?

> Чушь.
Я плохо помню, но там был какой-то процент ошибок (как в одну, так и в другую сторону). То есть это не какой-то незыблемый закон.
Аноним 24/12/15 Чтв 15:37:40 #389 №611287 
>>611283
>Хаскелеблядок, что ли?
Лол, нет, Рубист. Но как-то работал в фирме, где помимо Руби и на Хаскеле писали. А ещё с иммутабельностью есть Clojure, Erlang и Elixir, которые популярней Хаскеля в продакшене.
>То есть это не какой-то незыблемый закон.
А звучит слишком категорично.
Аноним 24/12/15 Чтв 15:39:20 #390 №611290 
>>611287
>А звучит слишком категорично.
Это я для упрощения так высказался. По-моему там были даже вероятности расписаны.
Аноним 24/12/15 Чтв 15:40:08 #391 №611291 
>>611283
Буквально вчера смотрел лекцию SICP где Абельсон говорил за каким хуем они после стольких лекций с функциональной еблей ввели присвоения в язык.
Аноним 24/12/15 Чтв 15:40:41 #392 №611293 
>>611290
Так и надо было сразу писать. Тогда вполне вероятно. Впрочем, я уверен, что оценка получалась очень размытой.
Аноним 24/12/15 Чтв 15:46:03 #393 №611297 
>>611293
Надо было тогда сразу ссылку на исследование дать: http://wiki.t-o-f.info/uploads/EDM4600/The%20camel%20has%20two%20humps.pdf
Аноним 24/12/15 Чтв 15:47:14 #394 №611298 
>тест примерно такой: "A=3; B=4; A=A+B; чему равно A?"
Кстати, разве для чистоты эксперимента не стоило заменить знаки равенства, смысл которых нам вдалбливают с пятого класса на алгебре, на что-то нейтральное, например:
>A <- 3
>B <- 4
>A <- A +B
>чему равно A?
Аноним 24/12/15 Чтв 15:47:27 #395 №611299 
14509612471020.png
А тест там оказался еще проще чем я его запомнил.
Аноним 24/12/15 Чтв 15:51:12 #396 №611306 
>>611299
Ответ True?
Аноним 24/12/15 Чтв 15:51:15 #397 №611307 
>>611263
>It seems absurd to administer a test to subjects who can have no idea what the questions mean.
Humans are clever animals, though, and most of our subjects seem to have guessed, perhaps from
the use of ‘new’ in the heading of the multiple choice column, that the questions were about change
rather than mathematical equality, and so they answered using a variety of models. There were
almost no write-in answers.
Аноним 24/12/15 Чтв 15:51:40 #398 №611308 
>>611306
Cannot into English?
Аноним 24/12/15 Чтв 15:53:11 #399 №611313 
>>611308
Лень читать. Код сам себя не напишет же.
Аноним 24/12/15 Чтв 15:53:57 #400 №611314 
>>611313
>Код сам себя не напишет же.
Как?! Мы же в лиспотреде!
Аноним 24/12/15 Чтв 16:30:43 #401 №611357 
>>611297
Да, и всё-таки надо дать и такую ссылку:
http://retractionwatch.com/2014/07/18/the-camel-doesnt-have-two-humps-programming-aptitude-test-canned-for-overzealous-conclusion/
(я её раньше не видел).
Аноним 24/12/15 Чтв 16:49:19 #402 №611370 
14509649591940.jpg
Снова прошу подсказать хорошую REPL оболочку для Схемы (или любого другого лиспа, на котором SICP пройти можно), потому что Dr. Racket пользоваться невозможно после PRY.
Аноним 24/12/15 Чтв 16:52:08 #403 №611375 
>>611370
Неосилятор.
Аноним 24/12/15 Чтв 17:24:18 #404 №611400 
>>611370
emacs + geiser твой следующий кандидат
Аноним 24/12/15 Чтв 17:42:18 #405 №611425 
14509681389100.png
>>611400
Запускаю командой geiser-racket, это оно? Или надо через емакс запускать? Я с емаксом не дружу совсем.

А почему он отступы сам не делает?
Аноним 24/12/15 Чтв 17:47:59 #406 №611431 
>>611425
Что это за пиздец у тебя на скрине?
>Или надо через емакс запускать?
Да.
>Я с емаксом не дружу совсем.
Тогда ставь spacemacs. Включаешь там слой (layer который) scheme и в путь.
Аноним 24/12/15 Чтв 18:05:01 #407 №611434 
>>611431
>>611425
Ссылка на спейсмакс в шапке, если что.
Аноним 24/12/15 Чтв 18:24:27 #408 №611444 
14509706675120.png
>>611370
А, так pry - попытка запилить аналог slime для рубей.
Тогда geiser тебе точно подойдет.
Аноним 24/12/15 Чтв 18:32:33 #409 №611451 
14509711532890.png
Ставлю Spacemacs. Подскажите, как в нём запустить geiser? На случай, если это нетривиально.

Кстати, вижу, он ставит EVIL, по такому случаю спрошу - это достойная замена Vim'у? Если да, то, конечно, стоит изучить емакс
Аноним 24/12/15 Чтв 18:39:05 #410 №611458 
>>611451
Со spacemacs ты emacs не изучишь, это купить телефон на андроиде и начать считать себя линуксоидом.
Аноним 24/12/15 Чтв 18:40:00 #411 №611461 
>>611458
Заебись, для начала сойдёт.
Аноним 24/12/15 Чтв 18:40:09 #412 №611462 
>>611451
>>611451
>Подскажите, как в нём запустить geiser?
https://github.com/syl20bnr/spacemacs/blob/master/layers/%2Blang/scheme/README.org
Так чикен советуют ставить, но это не обязательно. С рекетом он тоже работает.
Ну и хоткеи для работы с реплом не очень удобные. Как по мне, лучше дефолтные: C-c C-c, C-c C-r, C-M-x и т.д.
И вместо SPC, по-моему, удобнее M-m, т.к. не нужно между режимами переключаться.
В общем, сам разберешься. Благо, у спейсмакса документация хорошая.
>это достойная замена Vim'у?
Vim ему в подметки не годится.
Аноним 24/12/15 Чтв 18:40:25 #413 №611463 
>>611462
>Так
->
>Там
Аноним 24/12/15 Чтв 18:41:24 #414 №611466 
>>611299
Это ещё хуже, потому что
а) что такое int?
б) в разных языках будут разные ответы.
Аноним 24/12/15 Чтв 19:58:34 #415 №611530 
>>611466
Очевидно, используется default language. Тобишь C/C++
Аноним 24/12/15 Чтв 20:04:23 #416 №611537 
>>611530
Тест для тех, кто не знаком с программированием
Аноним 24/12/15 Чтв 20:09:34 #417 №611541 
>>611530
Почему не Java или Python, например? Глупый тест.
Аноним 24/12/15 Чтв 20:10:55 #418 №611543 
К тому же в C++ результат выражения будет вообще неопределен, т.к. там ранее может быть перегружен оператор =.
Аноним 24/12/15 Чтв 20:12:18 #419 №611544 
>>611543
Для инта, наркоман?
Аноним 24/12/15 Чтв 20:12:41 #420 №611545 
>>611541
А почему default city - Москва, а не Усть-Пиздюйск или Нижние Срачнюки?
Вот по той-же причине.
Аноним 24/12/15 Чтв 20:22:54 #421 №611551 
>>611544
int может быть переопределен

>>611545
Не вижу аналогии. Москва - город, в котором живет наибольшее число пидорах. Но C и C++ не являются языками, на которых пишут большинство программистов.
Аноним 24/12/15 Чтв 20:40:47 #422 №611569 
>>611551
>int может быть переопределен
Но не присваивание же
Аноним 24/12/15 Чтв 20:46:57 #423 №611571 
>>611569
#define int YobaNumberType
Можно переопределить на любой тип.

> Но не присваивание же
Для классов оператор присваивания должен быть ОБЯЗАТЕЛЬНО переопределен. И еще класс должен иметь конструктор копирования и деструктор. Иначе в большом проекте память протечет на хуй.
Аноним 24/12/15 Чтв 20:55:27 #424 №611577 
>>592797 (OP)
посоны, а мне вот мне пришлось изучать Clojure, можно у вас тут посидеть?
Аноним 24/12/15 Чтв 21:41:18 #425 №611619 
>>611577
Да. Кложура хоть и просто модный синтаксис для явы, но всё-таки тоже лисп.
Аноним 24/12/15 Чтв 21:43:39 #426 №611625 
>>611619
>Кложура хоть и просто модный синтаксис для явы, но всё-таки тоже лисп.
А почему она тогда более правильное ФП, чем все остальные лиспы?
Аноним 24/12/15 Чтв 21:46:12 #427 №611629 
>>611625
>более правильное
Это маркетологи постарались. ФП там не более "правильное", чем в схеме.
Аноним 24/12/15 Чтв 21:47:21 #428 №611632 
>>611629
Хорошо постарались. За 8 лет существования больше используется в продакшене, чем схема за 30 лет
Аноним 24/12/15 Чтв 21:50:02 #429 №611639 
>>611632
Clojure не больше, а ClojureScript - да, есть такое.
Ну и у схемы один фатальный недостаток: она слишком минималистична, из-за этого в каждой реализации свой набор ни с чем не совместимых батареек.
Аноним 24/12/15 Чтв 21:51:55 #430 №611642 
>>611639
А есть актуальные реализации, кроме Ракета?

А в Clojure активная разработка ClojureScript ведётся, чтобы фронт и бек имели одну кодобазу?
Аноним 24/12/15 Чтв 21:55:57 #431 №611649 
>>611642
Clojure и ClojureScript - разные языки, если что.
>А есть актуальные реализации, кроме Ракета?
Канеш: guile, chicken, kawa.
Аноним 24/12/15 Чтв 23:38:17 #432 №611730 
Реквестирую туториал по розвелу ИТТ. Для тупых.
Аноним 24/12/15 Чтв 23:41:10 #433 №611732 
>>611730
А что тебя интересует? В использовании вроде до неприличия прост. Собирается и устанавливается вроде тоже нетрудно.
Аноним 24/12/15 Чтв 23:58:12 #434 №611746 
>>611732
Ну вот собрал я и поставил.
У меня есть локальный проект, я даже для него написал asd и сделал симнил в quicklisp/local-projects

Теперь мне надо задеплоить это дело на сервер. На сервере стоит только roswel пока.
Аноним 25/12/15 Птн 00:24:32 #435 №611771 
>>611746
Можно ros -s my-yoba-project -e (my-yoba:start) или написать скрипт-пускалку по как здесь https://github.com/snmsts/roswell#scripting-with-roswell
Потом можно натравить на него ros build и получить исполняемый образ.
Аноним 25/12/15 Птн 00:33:54 #436 №611785 
>>611746
Или можешь сделать так: https://github.com/fukamachi/clack/blob/master/roswell/clackup.ros
потом ros install my-yoba, а росвел поместит скрипт в ~/.ros/bin/
Аноним 25/12/15 Птн 01:14:24 #437 №611820 
>>611771
>>611785
Ок, спасибо. Завтра буду деплоить.
Аноним 25/12/15 Птн 01:20:20 #438 №611824 
Парни, на скиме что-нибудь весомое из разряда рокитсцаенс делают, или для таких вещей используют КЛ?
Аноним 25/12/15 Птн 01:34:36 #439 №611827 
>>611824
Ну, если в церне даже tcl используют, то, я думаю, и для схемы и, тем более, cl место нашлось.
Точно сказать не могу, т.к. вопросом не интересовался.
Знаю только, что некоторые ученые используют cl для расчетов, какой-то вьетнамский поисковик его использует и йоба от grammarly
Аноним 25/12/15 Птн 01:40:32 #440 №611830 
>>611827
А вообще, что является наиболее "прикладным"? Из оп-поста понял, что на каждую специальную задачу найдется свой лисп, потому стоит знать диалекты (да и не так уж сложно это все вместить в голову), но все-таки в наболее значимых проектах какие диалекты используются?
Аноним 25/12/15 Птн 01:43:16 #441 №611831 
>>611830
общелисп, тикиль, кложуроскрипт/кложура
Аноним 25/12/15 Птн 12:13:09 #442 №611978 
Как мне обрабатывать эксепшоны в обработчиках роутов?
Похуй что случилось, выдать 503, сложить ошибку в лог и норм.
clack + ningle
Аноним 25/12/15 Птн 12:37:09 #443 №611987 
>>611978
handler-case/handler-bind
Аноним 25/12/15 Птн 12:46:27 #444 №611995 
>>611987
Ну я прочитал еще раз http://www.gigamonkeys.com/book/beyond-exception-handling-conditions-and-restarts.html
Что мне в каждый обработчик пихать handler-case? Алсо как отловить ваааще любую ошибку?
(handler-case (progn...) (condition () nil))
?
Аноним 25/12/15 Птн 12:55:07 #445 №611999 
>>611995
>Что мне в каждый обработчик пихать handler-case?
Ну да. А ты что думал? В сказку попал? Хотя... поищи, быть может, в этом вашем нингле мидлварэ есть или просто :around метод можно запилить.
>Алсо как отловить ваааще любую ошибку?
Они все от error наследуются, поэтому (error () ...)
Аноним 25/12/15 Птн 13:07:00 #446 №612003 
>>611999
Точно, жопой читал:
> When using the condition system for error handling, you should define your conditions as subclasses of ERROR, a subclass of CONDITION.

Еще вопрос. Когда я через слайм делаю (ql:quickload ...) пакеты ставятся в ~/quicklisp
Когда я делаю это череs roswell он кладет копию в .roswell/impls/ALL/ALL/quicklisp

Как это говно настроить чтобы оно не плодило копии?
Аноним 25/12/15 Птн 13:10:33 #447 №612004 
>>612003
И вообще, может я не правильно делаю.

Мне нужен одноразовый скрипт. Я делаю
> ros init one-time-shit
В сгенеренный скрипт дописываю
(ql:quickload :fuck)
(defpackage ... (:use :fuck ...)

Если это все запускать, оно ставит нужные пакеты в ~/.roswell и вроде даже работает.
Аноним 25/12/15 Птн 13:13:29 #448 №612009 
>>612003
ros repl и там сделай (ql:add-to-init-file), но предварительно вычисти или закомментируй в ~/.sbclrc предыдущий квиклисп.
Аноним 25/12/15 Птн 13:26:26 #449 №612012 
>>612009
Направление понятно. sbcl правда не запустился после этих манипуляций, потом покопаюсь.
Аноним 25/12/15 Птн 15:15:00 #450 №612062 
Памяти этот sbcl жрет я ебал. И грузится очень медленно. Грусть печаль.
Аноним 26/12/15 Суб 20:46:10 #451 №613103 
Как в коммон лиспе объявить локальную динамическую переменную? Именно объявить, а не связать существующую глобальную тем LET'ом, например.
Аноним 26/12/15 Суб 21:05:24 #452 №613115 
>>613103
А смысл?
Аноним 26/12/15 Суб 21:23:42 #453 №613129 
>>613103
http://www.lispworks.com/documentation/HyperSpec/Body/d_specia.htm
Аноним 26/12/15 Суб 23:01:21 #454 №613196 
Первый раз в вашем треде, решил поинтересоваться: вы Лисп для работы изучаете, или для себя, как хобби?
Аноним 26/12/15 Суб 23:32:24 #455 №613216 
>>612062
> Памяти этот sbcl жрет я ебал.
Мож у тебя программа просто течет?
>И грузится очень медленно.
$ time ./test
real 0m0.035s
user 0m0.008s
sys 0m0.016s
Я бы так не сказал. Вот ява действительно медленно стартует. lein у меня выводит хелп за ~30-40 секунд.
Аноним 26/12/15 Суб 23:34:22 #456 №613217 
>>613196
Я для домашних проектов использую.
Аноним 26/12/15 Суб 23:35:58 #457 №613218 
>>613216
134 метра на вебсервер с минимальной логикой. Это какой-то пиздец.
хз, через ros init очень медленно.
Аноним 27/12/15 Вск 00:00:05 #458 №613234 
>>613217
А что за домашние проекты? Продаёшь их, или для удобной автоматизации всего и вся?
Аноним 27/12/15 Вск 00:04:49 #459 №613236 
>>613129
Спасибо, так быстро ответили. Вот в хаскелл-треде питушки на технические вопросы не отвечают, например. Приятно, в общем.
>>613115
Не засирать глобальный неймспейс, если понадобится локальная динамическая привязка. Вообще, сложно придумать, конечно. Например, какая-то функция может вызывать подфункции, которые пишут в разные лог-файлы. Можно, конечно, передавать им всем параметр с именем лог-файла, но что если имя файла необходимо менять редко, а таких вызовов, идущих подряд с одинаковым файлом, много, и вообще, структура этих вызовов сложная? Можно создать локальную динамическую переменную с именем файла.
Вместо этого:
...
(foo x log-1) (bar y log-1) (baz z log-1)
(foo y log-2) (bar z log-2) (baz x log-2)
...
Можно будет писать это:
...
(let ((log-file log-1)) (foo x) (bar y) (baz z))
(let ((log-file log-2)) (foo y) (bar z) (baz x))
...
Сорри, написал без всяких progn для наглядности, да и пример, наверное, не самый удачный. Плюс если функции должны будут сами решать, когда изменить лог-файл для последующих действий, эта переменная будет практически незаменима.
Аноним 27/12/15 Вск 00:05:38 #460 №613237 
>>613236
Звездочки пропали в имени переменных.
Аноним 27/12/15 Вск 00:07:25 #461 №613240 
>>613218
>134 метра на вебсервер с минимальной логикой.
Прям со старта столько жрет? Дохуя что-то.
Попробуй попрофилировать или --dynamic-space-size подкрути.
>хз, через ros init очень медленно.
Я росвелом не пользовался, но вангую, что медленно запускается оно у тебя из-за инициализации квиклиспа.
Аноним 27/12/15 Вск 00:15:31 #462 №613244 
>>613240
Прямо со старта.
Да, из-за квиклиспа. Щито делать десу?
Аноним 27/12/15 Вск 00:19:27 #463 №613245 
>>613244
Бинарник собери.
>Прямо со старта.
А если (gc :full t) сделать?
Аноним 27/12/15 Вск 00:21:03 #464 №613248 
>>613236
>Не засирать глобальный неймспейс
Если динамическая переменная является частью интерфейса, то лучше всё-таки её объявить глобально.
Аноним 27/12/15 Вск 00:25:36 #465 №613254 
>>613234
>А что за домашние проекты?
Сейчас игрушку пилю.
>Продаёшь их, или для удобной автоматизации всего и вся?
Просто для удовольствия.
Аноним 27/12/15 Вск 00:27:20 #466 №613256 
>>613248
Я привел пример, где она будет не глобальной. Допустим, моя функция будет вызываться несколькими потоками, а ей будет передаваться путь, куда лог-файлы сохранять.
Аноним 27/12/15 Вск 00:32:53 #467 №613265 
>>613245
Как собрать-то? (die-and-exit)?
Аноним 27/12/15 Вск 00:34:06 #468 №613269 
>>613265
ros build же
Аноним 27/12/15 Вск 07:16:02 #469 №613369 
>>613254
> просто для удовольствия
Уважаю, присоединяюсь к вам. Какая лучшая ide для лиспа? Не нашёл в шапке.
Аноним 27/12/15 Вск 11:33:29 #470 №613408 
>>613369
emacs + slime
spacemacs
http://habrahabr.ru/post/259737/
Аноним 27/12/15 Вск 11:34:13 #471 №613410 
>>613369
Я вот в для своих проектов его начал использовать. Зависимость есть, брат жив.
Аноним 27/12/15 Вск 13:15:35 #472 №613444 
>>613369
Невнимательно ты шапку проглядывал.
>>613408
>http://habrahabr.ru/post/259737/
Лучше просто spacemacs взять: в нем всё, что может понадобиться, уже настроено.
Аноним 27/12/15 Вск 13:29:43 #473 №613453 
В лиспворксе, оказывается, поддержку ведроида запилили
http://www.lispworks.com/products/lw4mr.html
Аноним 27/12/15 Вск 17:36:23 #474 №613605 
Слоны кроме кложуры для джвм варианты есть?
Скалу не предлашать.
Груви тоже не то
Аноним 27/12/15 Вск 18:00:53 #475 №613616 
>>613605
Питон, руби, haxe.
Аноним 27/12/15 Вск 18:09:56 #476 №613624 
>>613605
abcl (реализация общелиспа), kawa (реализация схемы r7rs), linj (транслятор подмножества общелиспа в java-код)
Существуют ещё всякие мосты между лиспом и jvm. Во всяких lispworks'ах и allegrocl даже из коробки.
Аноним 27/12/15 Вск 18:54:34 #477 №613659 
>>613605
Нормальные люди бегут от джвм, а ему подавай. Не понимат.
Аноним 27/12/15 Вск 22:00:43 #478 №613788 
14512428437760.png
Угадай язык.
Аноним 27/12/15 Вск 22:05:18 #479 №613791 
14512431189040.png
>>613788
Этот мультфильм оскорбляет мои функциональные чувства.
https://www.youtube.com/watch?v=0hm3QODDMv4
Аноним 27/12/15 Вск 22:56:42 #480 №613815 
>>611577
> пришлось
Да ты охуел. Неужели работу нашёл на Кложе?
Аноним 27/12/15 Вск 22:58:15 #481 №613817 
>>613659
Куда бегут?
Аноним 27/12/15 Вск 23:00:08 #482 №613819 
>>613815
This.
На самом деле работы на проекте по профилю нет, вот перекинули на другой проект, а там на Clojure все пишут.
Аноним 28/12/15 Пнд 00:18:57 #483 №613866 
>>613817
На common lisp конечно же. Куда ж ещё?
Аноним 28/12/15 Пнд 00:25:27 #484 №613872 
>>613819
Что за проект?
Аноним 28/12/15 Пнд 14:34:13 #485 №614154 
Есть тут тикилеры? Какой набор виджетов до сих пор поддерживается, построен поверх ttk и наиболее удобен?
И ещё, есть что-нибудь типа общелисповских gray-streams?
А то в этой чатоподобной тикилевики хуй разберешься: куча однотипных статей разной степени тухлости, чатик, куски кода, ад и содомия.
Аноним 28/12/15 Пнд 16:22:45 #486 №614219 
>>613872
Да хуета, типа ботофермы для социалочек.
Аноним 29/12/15 Втр 00:08:34 #487 №614637 
Какой же все таки CL охуенный. Прям не нарадуюсь.
Аноним 29/12/15 Втр 11:26:34 #488 №614853 
Аноны, помогите с задачей в SICP (сама задача http://puu.sh/mchMf/a1dd607cef.png, дошел до 39 страницы)
Вот мое решение http://puu.sh/mchR9/1397ec95bd.png , оно верное, но его явно можно упростить и улучшить, как это сделать?
Аноним 29/12/15 Втр 14:17:15 #489 №614931 
>>614853
В свое время решал похоже, только все условия в конде были. Сейчас пришло в голову посчитать сумму трех и вычесть минимальный.
Аноним 29/12/15 Втр 14:20:49 #490 №614932 
>>614931
Минимальный еще найти надо.
Аноним 29/12/15 Втр 14:23:28 #491 №614934 
>>614853
Кто наркоман? Я наркоман.
http://ideone.com/gYh1W7
Аноним 29/12/15 Втр 14:29:31 #492 №614936 
>>614934
А в CL есть макрос по типу ->> в Clojure?
http://ideone.com/m6mjMR
Аноним 29/12/15 Втр 14:31:49 #493 №614938 
>>614936
В стандартном нет вроде.
Слишком хачкелеобразно.
Аноним 29/12/15 Втр 16:42:29 #494 №614976 
>>614936
В какой-то из библиотек был, но сомневаюсь, что нужен.
[code lang=common-lisp](defun yoba (&rest xs)
(loop :for x :in (sort xs #'>)
:repeat 2
:sum (* x x)))
[/code]
Аноним 29/12/15 Втр 17:18:19 #495 №614993 
>>614976
Да, так определенно лучше, но как-то не функционально, что-ли.
Аноним 29/12/15 Втр 17:29:19 #496 №614998 
>>614853
Вот тебе индийское решение.
http://pastebin.com/yaFvP6dE
Аноним 29/12/15 Втр 18:03:01 #497 №615040 
>>614993
>как-то не функционально, что-ли.
Так это и не хаскель/мл, а общелисп, а в нем ФП - парадигма второстепенная.
Аноним 29/12/15 Втр 18:26:50 #498 №615058 
>>615040
Справедливо. Перекат пилите.
Аноним 29/12/15 Втр 18:29:07 #499 №615060 
>>615058
И в этот раз, блять, не забудьте про exercism!
Аноним 29/12/15 Втр 18:39:03 #500 №615069 
>>615060
Там один только общелисп? Или другие диалекты тоже есть?
Аноним 29/12/15 Втр 18:55:34 #501 №615075 
Блджад, надо будет к следующему перекату шапку починить.
Аноним 29/12/15 Втр 19:22:28 #502 №615105 
Перекатил
>>615102 (OP)
>>615102 (OP)
>>615102 (OP)
>>615102 (OP)
>>615102 (OP)
>>615102 (OP)
Аноним 03/01/16 Вск 20:54:17 #503 №617984 
>>592797 (OP)
AutoLisp забыл, он в Автокаде есть
Аноним 09/01/16 Суб 15:09:58 #504 №622204 
>>610888
Перечитай заново часть про 'Applicative order vs normal order evaluation'. Дело в том, что когда ты реализовываешь свой оператор условия 'new-if', ты создаешь собственную процедуру, которая выполняется в аппликативном порядке, тогда как, встроенные в интерпретатор Scheme операторы условия выполняются в нормальном порядке. Это значит, что пользуясь new-if ты создаешь бесконечную рекурсию.
comments powered by Disqus