Двач.hk не отвечает.
Вы видите копию треда, сохраненную 20 июля 2017 года.

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

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

Основные диалекты
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 - это минималистичный лисп, пригодный в основном для обучения, исследований. Наиболее практичными реализациями являются GNU Guile ( https://www.gnu.org/software/guile/ ) и Chicken Scheme ( http://call-cc.org/ ).
Racket - Развитие PLT Scheme. Racket включает в себя много подъязыков (typed racket, lazy racket, frtime racket, Scheme стандартов r5rs и r6rs).
Clojure - Стильный, модный, молодежный лисп с бóльшим уклоном в функциональщину, иммутабельными структурами данных, поддержкой параллельщины с транзакционной памятью, агентами. Ориентированность на JVM сильно отразилась на дизайне языка, что многим не нравится.
Emacs Lisp - его область применения ограничивается емаксом. Является наследником ТОГО САМОГО MacLisp'а.
Lisp Flavored Erlang (LFE) - Реализация Lisp поверх виртуальной машины Erlang (BEAM), в итоге мы имеем всё лучшее из обоих миров: привычный синтаксис s-выражений, макросы, функциональщина, иммутабельность, многопоточность из коробки + набор либ для построения отказоустойчивых распределённых приложений OTP. http://lfe.io/
Tcl - скриптовый язык с немного наркоманскимстранным синтаксисом. Из коробки множество батареек на любой случай жизни, среди которых неповторимый Tk. Язык очень удобен для написания скриптиков, особенно когда к ним требуется приделать графический интерфейс.
Rebol
PicoLisp - Наркоманская хуита
newLISP - Скриптовый лисп с компактным и быстрым интерпретатором и батарейками на любой случай жизни. В первую очередь предназначен для скриптоты, которую обычно пишут на perl, python, tcl, sh: обработка текстов, работа с сетью, базами данных, взаимодействие с ОС, построение графиков и т.п.
Список возможностей: http://www.newlisp.org/index.cgi?Features
Отличия от других диалектов: http://www.newlisp.org/index.cgi?page=Differences_to_Other_LISPs

Как изучить?

Emacs Lisp
+ An Introduction to Programming in Emacs Lisp https://www.gnu.org/software/emacs/manual/html_node/eintr/index.html — скучный туториал, предполагающий что читатель вообще не умеет программировать
+ Emacs Lisp Reference Manual https://www.gnu.org/software/emacs/manual/html_node/elisp/index.html

Common Lisp
+ Practical Common Lisp http://www.gigamonkeys.com/book/ или русский перевод — http://lisper.ru/pcl/
+ On Lisp http://www.paulgraham.com/onlisp.html
+ Land of Lisp
+ Common Lisp HyperSpec http://www.lispworks.com/documentation/HyperSpec/Front/ — стандарт языка
+ Art of Metaobject Protocol — подробное описание MOP и CLOS
+ Попрактиковаться можно на Exercism'е http://exercism.io/languages/lisp
Алсо, годная статья про проектирование eDSL'ей на CL http://swizard.info/articles/solitaire/article.html

Scheme
+ The Little Schemer, The Seasoned Schemer, The Reasoned Schemer
+ SICP (это скорее вводные лекции по программированию, а не учебник по схеме, но тоже пойдет)
+ http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html
+ Попрактиковаться можно на Exercism'е http://exercism.io/languages/scheme

Racket
+ The Realm of Racket
+ How to Design Programs http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html
+ https://docs.racket-lang.org/

Clojure
+ Programming Clojure, 2nd edition (для новичков)
+ Clojure for Brave and True http://www.braveclojure.com/foreword/ — В отличие от предыдущего сухого изложения, более приятный для восприятия материал, да и бесплатный, если читать онлайн.
+ The Joy Of Clojure, 2nd edition (есть есть бэкграунд в Лиспе или ФП)
+ Попрактиковаться можно на Exercism'е http://exercism.io/languages/clojure

Tcl/Tk
+ Официальный учебник http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
+ Документация по tcl http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm и tk http://www.tcl.tk/man/tcl8.6/TkCmd/contents.htm
+ Статьи про Tcl и Tk на wikibooks с примерчиками https://en.wikibooks.org/wiki/Category:Tcl_Programming
+ TkDocs с примерами на tcl, perl, ruby http://www.tkdocs.com/tutorial/index.html

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

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

Common Lisp
+ Emacs + SLIME - самый лучший вариант.
+ vim + SLIMV
+ LispWorks
+ AllegroCL IDE упаси боже
+ Eclipse + cusp
+ <Что-нибудь для сублайма/атома уже запилили, наверное?>

Scheme/Racket
+ Emacs + Geiser (поддерживает GNU Guile и Chicken Scheme)
+ DrRacket

Clojure
+ Emacs + CIDER
+ LightTable
+ Vim-fireplace
+ Cursive Clojure (IntelliJ plugin)
+ Counterclockwise (Eclipse plugin)

Tcl
+ Emacs + tcl-mode (только подсветка синтаксиса и простенькое взаимодействие с реплом, но жить можно)

Библиотеки
Common Lisp
+ Quicklisp ( https://www.quicklisp.org/beta/ ) - CPAN из мира CL
+ Quickdocs ( http://quickdocs.org/ ) - документация по всем пакетам из quicklisp
+ Cliki ( http://cliki.net/ )
+ Обзор экосистемы общелиспа на швабре ( http://habrahabr.ru/post/265589/ )

Scheme
+ Racket: http://pkgs.racket-lang.org/ и http://planet.racket-lang.org/
+ Chicken: http://wiki.call-cc.org/chicken-projects/egg-index-4.html
+ http://snow.iro.umontreal.ca/?tab=Packages
+ http://www.schemespheres.org/spheres

Предыдущие треды: http://arhivach.org/?tags=3055,113
Шапка: https://titanpad.com/x87hR0KJ2w
935195954600985734
#2 #875323
#3 #875327
Анон, где можно почитать про внутренности Общелиспа? Стек-куча-аллокация и т.д.
875348
#4 #875348
>>875327
Оно не стандартизировано, так что у каждой реализации свои особенности.
Можешь почитать это http://ccl.clozure.com/docs/ccl.html#implementation-details-of-clozure-cl
или это http://www.sbcl.org/sbcl-internals/index.html , попутно ковыряя исходники SBCL, в которых, как говорят, достаточно несложно разобраться
или это https://github.com/froggey/Mezzano https://github.com/froggey/Mezzano/blob/master/doc/internals/abi
875435
#5 #875435
>>875348
Спасибо, анон!
#6 #875839
Что лучше: коммон лисп или схема?
875868
#7 #875868
>>875839
Смотря для чего. С моей точки зрения, общелисп практичнее хотя бы потому, что нет разрозненности между реализациями, отчего и библиотек больше, и качества они лучше.
#8 #876032
Если под "перекатом лиспотреда" имелось что-то помимо обновления информации в каталоге языкотредов, опиши, пожалуйста, в жалобе более конкретно, чего ты хочешь, буду рад помочь.
876829
#9 #876043
Кто-нибудь делал проекты на скобках сложнее laba1 и какие? Просто интересно.
876366876452
#10 #876366
>>876043
На кложуре просто пиздец сколько всего.
876528
#11 #876452
>>876043
в продакшене у меня есть пару проектов на кложе
876528
#12 #876528
>>876366
>>876452
И какие?
876529876619
#13 #876529
>>876528
Сама кложура частично и еще порты всякие
#14 #876619
>>876528
Все проекты - фронтендные, то есть clojurescript. На бэкенде используются golang (первый проект) или ruby (второй).
1 - сервис для проведения опросов (буду переписывать, re-frame с тех пор нехило обновился). Просто множество (до 300) динамически подгружающихся masonry-карточек, несколько кнопок, поиск, ничего сложного.
2 - интернет магазин. Сервер на ruby, клиент снова на clojure+re-frame.
В самом начале клиент просто выкачивает списки продуктов (только ту информацию, которая нужна для списка продкуторв, их там до сотни) и категорий, кэширует в localstrorage (пережимает через lz-string), из-за чего вторая загрузка почти мгновенная (при втором входе данные все равно выкачиваются с сервера, но пользователь уже видит продукты из localstorage).
Корзина хранится только на клиенте в localstorage (между двумя вкладками все синхронизируется).
Запросы на сервер идут только при
а) открытии страниц конкретных продуктов (выкачивается дополнительная информация типа отзывов и характеристик, не кэшируется)
б) преобразование корзины в заказ, оформление и оплата заказов
Из-за того, что все данные на клиенте, переход между страницами, поиск, добавление в корзину происходят очень быстро.
В принципе, тут тоже все довольно просто, пара тысяч строк от силы, все это можно было писать и на js + redux, что я раньше и делал, но js мне в принципе не очень нравится, а в последнее время там вообще какой-то пиздец происходит (писать селекторы на reselect намного сложнее, чем сабскриберы на re-frame, но при этом сабскриберы намного мощнее из-за того, что они реализовывают полноценное frp, это к примеру), поэтому я свалил с него
#15 #876829
>>876032
Не, ничего более не имелось в виду, просто проследовал просьбе из шапки прикрепленного треда.
Хотя, конечно, можно было бы запилить оформление шапки как в крестотреде, но позже, т.к. пока времени на переоформление не имею.
#16 #876928
>>876619
Мы тут проект в прод начали делать на кложурскрипте. Взяли реагент, гарден, секретаря и еще какой-то залупы. Стоит ли брать ре-фрейм или проще накостылять? Надо чтобы обязательно был сервер-сайд рендер. Сейчас это сделано через эксресс+кложурскрипт на "сервере", чтобы компоненты были общими.
877061877097877202
#17 #876958
Нейронные сети на лиспе нормально делать?
#18 #876963
>>876958
Какая разница на чем их делать?
#19 #876991
>>876958
абсолютно ненормально
лисп - язык для настоящего искусственного разума, а не для дэбильных нейроноперделок
#20 #877061
>>876928
Могу посоветовать отказаться от garden, довольно тяжелая штука (тормозит), тяжело править стили, т.д.

Ре-фрейм однозначно стоило бы брать, если бы ты не сказал про сервер-сайд. Нет, ре-фрейм можно срендерить на сервере, но довольно костыльно.

А так вроде как Ом легко рендерится на сервере, а функционала много.
877184
#22 #877097
>>876619
>>876928
Так бэк никто на Кложуре не делает в итоге? Только фронто-перделки на нём, никакого серьёзного щита?
877187877329
#23 #877179
Как обмазаться коммон лиспом? Киньте материалов на русском, пожалуйста.
877186951666
#24 #877184
>>877061
Ом мне не нравится. Когда гарден должен начать тормозить? Сейчас я сделал так:
1) lein garden once конпелит стили и кладет их в статик файл (для прода)
2) В реагенте я делаю (garden/css style-map)
В результате фигвил это дело вместе с разметкой накатывает и результат приходит через 0.1 секунду в браузер. Зависимость есть, брат жив. Правда стилей пока не много: ~150 строк структура.

Второй вопрос: hoplon щупал?
877325
#25 #877186
>>877179
http://lisper.ru/pcl/
Можешь изучить CL чтобы было с чем сравнивать, но увы реальный софт на нем писать боль. Уж я то знаю.
877190877193
#26 #877187
>>877097
http://www.parens-of-the-dead.com/
Вот тут магнарс на кложуре делает сервер сайд.
ПРосто сейчас такое время, когда нужно чтобы код на сервере и клиенте был общим. Поэтому кложурскрипт и тянут на сервер (с нодой)
#27 #877189
Совсем нубский вопрос, в документации чет не найду. Как поставить в lispworks нормальные в таб 4 пробела? Версия 6.1.1
877508
#28 #877190
>>877186
Спасибо. Через кеш гугла смотреть?
877199
#29 #877193
>>877186
Кстати, таки интересно было бы узнать твой опыт и твою историю. Почему боль?
877202
#30 #877199
>>877190
хм, уже работает
#31 #877202
>>877193
Началось все с книжки "Coders at work". Прочитав её, я решил посмотреть что еще написал этот автор. И оказалось, что он же написал "Practical Common Lisp". А т.к. я имаксер, я подумал, а почему бы и нет и решил упоротся. Прочитал книжку, поковырял упражнения http://exercism.io/languages/lisp/about
И тут как раз подкрался конкурс TWG в /gd/. Для него я сделал игрушку на cl-sdl2: https://github.com/TatriX/lispstone, https://www.youtube.com/watch?v=xaR_Hqo68TU
И это была адская боль. С одной стороны лайв-релоад-фап-фап. С другой стороны оно постоянно глючило и хуево работало. Ну ок, я криворукий, библиоте кривая. Затем по условию конкурса мне нужно было собрать билд под винду. SDL же! Три дня проебавшись, конпеляя руками библиотеки, конпеляторы и паралельно отсылая патчи в саму cl-sdl2 я так нихуя и не сделал. Добрый анон из лиспотреда помог и каким-то чудом оно таки завелось. Итого: в двухнедельном конкурсе примерно 5 дней было проебано на то, чтобы просто сконпелить код под винду. Ну ладно, может быть просто не повезло с библиотекой.

Зачем я сделал тестовое задание (никто не просил его делать на лиспе, правда): https://github.com/TatriX/blue-water
Это парсер рейтингов и кинопоиска и небольшой фронтэнд для него. В целом все было норм, не считая того, что дохуя либ например для жсона. Половина кривая, другая половина пиздец неудобная. В общем с одной стороны репл-хуепл, с другой стороны постоянно какие-то проблемы из-за того что очень маленькое и подыхающее комьюнити, а поэтому качество либ так себе. Например достучаться до известного в узких кругах Фукамачи, чтобы тот принял пулл-реквест довольно сложно.

Сделал один небольшой одноразовый проект (опять про парсеры) по работе.
Для своей игры (http://rogalia.ru) я сделал пару инструментов: тулзы для обновления бд, парочку микросервисов для раздачи всякой статистики и прочего.

По итогу, язык увы для меня остался в 90ых. Да он неплох, он шустрый, на нем в целом приятно писать, но сейчас совершенно другие требования, а CL к ним так и не приспособился.

Ну и вишенка на торте: плюнув на свою ядерную нелюбовь к тормозной жвм, мы начинаем пилить серьезный фронтэнд проект (по работе) на кложурскрипте (>>876928). Да оно просто пиздец как медленно поднимается, но когда поднимется, равных по удобству инструментов я пока не видел.
#31 #877202
>>877193
Началось все с книжки "Coders at work". Прочитав её, я решил посмотреть что еще написал этот автор. И оказалось, что он же написал "Practical Common Lisp". А т.к. я имаксер, я подумал, а почему бы и нет и решил упоротся. Прочитал книжку, поковырял упражнения http://exercism.io/languages/lisp/about
И тут как раз подкрался конкурс TWG в /gd/. Для него я сделал игрушку на cl-sdl2: https://github.com/TatriX/lispstone, https://www.youtube.com/watch?v=xaR_Hqo68TU
И это была адская боль. С одной стороны лайв-релоад-фап-фап. С другой стороны оно постоянно глючило и хуево работало. Ну ок, я криворукий, библиоте кривая. Затем по условию конкурса мне нужно было собрать билд под винду. SDL же! Три дня проебавшись, конпеляя руками библиотеки, конпеляторы и паралельно отсылая патчи в саму cl-sdl2 я так нихуя и не сделал. Добрый анон из лиспотреда помог и каким-то чудом оно таки завелось. Итого: в двухнедельном конкурсе примерно 5 дней было проебано на то, чтобы просто сконпелить код под винду. Ну ладно, может быть просто не повезло с библиотекой.

Зачем я сделал тестовое задание (никто не просил его делать на лиспе, правда): https://github.com/TatriX/blue-water
Это парсер рейтингов и кинопоиска и небольшой фронтэнд для него. В целом все было норм, не считая того, что дохуя либ например для жсона. Половина кривая, другая половина пиздец неудобная. В общем с одной стороны репл-хуепл, с другой стороны постоянно какие-то проблемы из-за того что очень маленькое и подыхающее комьюнити, а поэтому качество либ так себе. Например достучаться до известного в узких кругах Фукамачи, чтобы тот принял пулл-реквест довольно сложно.

Сделал один небольшой одноразовый проект (опять про парсеры) по работе.
Для своей игры (http://rogalia.ru) я сделал пару инструментов: тулзы для обновления бд, парочку микросервисов для раздачи всякой статистики и прочего.

По итогу, язык увы для меня остался в 90ых. Да он неплох, он шустрый, на нем в целом приятно писать, но сейчас совершенно другие требования, а CL к ним так и не приспособился.

Ну и вишенка на торте: плюнув на свою ядерную нелюбовь к тормозной жвм, мы начинаем пилить серьезный фронтэнд проект (по работе) на кложурскрипте (>>876928). Да оно просто пиздец как медленно поднимается, но когда поднимется, равных по удобству инструментов я пока не видел.
877973887103
#32 #877206
>>876619

>На бэкенде используются golang (первый проект)


Сочувствую. Как земля на вкус после Кложуры?
877327
#33 #877207
(def turd 42)

(defn fuck [shit]
(* shit turd))

(fuck 2)

Является ли fuck чистой функцией?
877229
#34 #877229
>>877207
Недостаточно информации.
877231
#35 #877231
>>877229
Ну раз turd имутабельно, то получается что fuck зависит только от аргумента, а значит оно чистое. Правильно или нет?
877233
#36 #877233
>>877231
Если set! забанен, то да. Если нет, то зависит.
#37 #877237
Что брать в дополнение к реагенту для работы с сетью? Сейчас смотрю на https://github.com/JulianBirch/cljs-ajax
#38 #877239
Здесь есть лисперы, которым нечем заняться? Может попишете ИИ под мои гениальные метафизические маняидеи?
877244
#39 #877244
>>877239
Сначала ты кладешь на стол маняидеи, потом мы думаем.
877245
#40 #877245
>>877244
Прямо здесь?
877250
#41 #877250
>>877245
А ты чего-то стесняешься?
877252
#42 #877252
>>877250
Чуток стесняюсь. Суть в когнитивных искажениях, синестезии и особому строению и самоорганизации при импульсных нейронных сетях.
877255
#43 #877255
>>877252
Тебя что пиздят если ты скажешь больше 10 слов? Пиши нормально.
877256
#44 #877256
>>877255
Я просто некоторое число..
https://core.ac.uk/download/pdf/6117416.pdf я думаю, что связи между нейронами образуются подобно грибнице.
877257
#45 #877257
>>877256
Ой все. Иди в хаскель тред.
877259
#46 #877259
>>877257
Почему?
877262
#47 #877262
>>877259
Потому что мы не настолько ебанутые.
877264
#48 #877264
>>877262
Но там меня не примут, я довольно плохо знаю математику.
#49 #877325
>>877184

> garden


ну, у меня garden висел на auto, оперативы мало, из-за этого и тормозил похоже. У меня рядом с boot (вместо lein) висит вебпак, так как нужно компилить зависимости для React, вот он у меня сейчас и занимается стилями, писать на stylus намного удобнее, чем на garden.

> hoplon


нет, но сейчас посмотрел, выглядит круто, нужно попробовать поиспользовать. Там полноценное FRP, можно делать global state, от него зависимости, от него еще зависимости.... и получается re-frame, только без удобного регистра субскриберов и без хэндлеров/интерцептеров, цикла событий. Но если есть сервер-сайд рендер, то можно поверх него сделать свой re-frame.
#50 #877327
>>877206
golang я знаю давно. Пометка про первый проект - это не то, что он первый мой проект, а первый проект из списка кложуровских проектов. Писать на golang мне нравится, лол. Кложа и го - два из четверых моих любимейших языков (на других двух (хачкель и erlang/elixir) я просто ничего реального не писал)
877337
#51 #877329
>>877097
Ну на кложе много серьёзных проектов, другое дело, что мне серьёзный бэк писать особо не приходилось, простая rest api прослойка между db и клиентом + немножечко логики, это мне проще написать на golang/ruby+sinatra/express. А если нужно что-то крупнее, то я возьму рельсы. Смысла писать бэк на кложе я для себя не вижу. Разве что есть профит передавать между клиентом и сервером edn вместо json (а то на клиенте функции для преобразования "is_active" <-> :active? для каждого запроса туда и обратно).
#52 #877337
>>877327
Просто не укладывается, как может одновременно нравится кложура/хачкиль/эрланг и такой дибиловатый ребёнок с вечной ухмылкой-го
877361
#53 #877361
>>877337
На го я пишу, когда мне нужно написать что-то очень быстро, за короткий промежуток времени, и что бы это работало. Причем это получается не говнокод, как на пыхе, а что-то нормальное (статическая типизация и простота в разбитии кода на кучу модулей) Я почти не использую горутины сам (хттп-либа сама запускает все хэндлеры в своих горутинах), я просто пишу код, как на питоне. Ничего крупного и серьёзного я писать на го не стану.

Когда же я пишу на хачкеле, я пишу это уже медленнее, постоянно пытаюсь что-то отрефакторить, сделать код еще чище и проще и в итоге много времени сам охуеваю, как же круто все это на фп. (Собственно, мне сложно охуеть от какого-то императивного кода, а вот от функциональных решений я до сих пор охуеваю, как от qsort на хаскеле много лет назад).
877571
#54 #877508
>>877189
Сомневаюсь, что кто-то здесь пользуется чем-то иным, кроме емакса. Чего и тебе советую.
#55 #877571
>>877361
Горутины кстати охуенная вещь. Вроде как core.async собственно навеян горутинами и каналами? понятно что в начале был CSP
877626
#56 #877626
>>877571
горутины вещь крутая, я не сомневаюсь, только они не нужны в коде, где идет запрос базу, преобразование в json и отправка ответа
core.async действительно сильно напоминает горутины (хотя бы "go")
877628
#57 #877628
>>877626
Горутины нужны если у тебя не один запрос в базу, а запрос в базу и три запроса к сторонним сервисам. Тут они с каналами становятся просто незаменимыми.
#58 #877634
Пагни, кто-нибудь щупал овертон?
877644877980
#59 #877644
>>877634
Вот кстати кто-то сверху спрашивал про CL. Просто сравните овертон с той поделкой что для CL сделана. И сразу все вопросы про дохлое комьюнити отпадут. как же блядская жвм бесит своей тормознутостью на подъеме
#60 #877821
Блядский кложурскрипт заебал крашить емакс.
#61 #877969
>>876619
Реакт нейтив с кложурой использовал?
878032
#62 #877973
>>877202
Ну вот, а стонов-то с говнокиданием сколько было.
878021
#63 #877980
>>877634
Я с ним поигрался, пощупал их экземплы, погенерил дабстеп, но не придумал, что лично мне с ним дальше делать и забил.
#64 #878021
>>877973
Я в тебя готов кидаться говном целый день. Этот блядский кусок говна жрет память по 100мб/минута, из-за чего постоянно крашится. Заебало.
878115
#65 #878032
>>877969
нет, не было причин пока. Но много видел, что люди используют, значит это как минимум не сильно проблемно
#66 #878115
>>878021
Попроси менеджера еще одну планку тебе воткнуть, чего ты.
878124
#67 #878124
>>878115
Вася, неужели ты не понимаешь, что проблема не в количества памяти, а в том, что это херота течет как второй фурифокс? Почему я могу открыть 300 буферов с жс и го, и емакс даже 2х гигов не отожрет, а немножко жабы убивает машину?
878161
#68 #878161
>>878124
Не знаю, у меня не убивает. И имакс с 300 буферами у меня отжирает мегабайт сто памяти максимум, кстати. Может у тебя какие-то волшебные мегабайты?
#69 #879094
Кто-нибудь юзал http://arachne-framework.org/ ?
А пьедестал?
879121
#70 #879099
То есть не юзал, а тыкал. Короче, кто-нибудь их сравнить может?
#71 #879121
>>879094
Куда не тыкни, Coming soon!Coming soon!Coming soon!Coming soon!
#72 #879527
Реквестирую пример проекта реагенте на гитхабе. Не ебучий темплейт, а настоящий живой проект.
879633
#73 #879633
>>879527
Мне на клжс приходят на ум только два больших опенсурсных проекта: прекурсор и сиркл си ай. Они оба на оме вроде как, так что хз.
#74 #879729
Зачем нужен boot или чем плох lein?
879772
#75 #879772
>>879729
Двачаю вопрос, кстати.

Как я понял, бут используют те, у кого какие-то сложные деплойные скрипты, и они их хотят писать на кложе, а не на баше, и им нужен доступ к энвайроненту жвм во время сборки, так что нельзя взять кложурно-одный шелл. Но сам я хз, что там за деплой у них такой, что это нужно.
879876
#76 #879876
>>879772
мне бут нужен только потому, что я заебался писать огромные ебучие конфиги для лейна
879881
#77 #879881
>>879876
А что для бута при той же функциональности не будет такого же по размерам конфига?
879935
#78 #879882
Всего с пару дней отсутствовал, а кложуристы уже захватили тред?!
879888
#79 #879888
>>879882
Незнаю как остальные, а я вынужденный кложурист. Потому что цл умер, а других живых и готовых для прода альтернатив нет. Хоть свою пиши. пополни ряды прочих мертвых лиспов
879953
80 Кб, 1440x702
#80 #879929
Наше время пришло! Готовьтесь остаться на помойке истории.
879934894044936075
#81 #879934
>>879929
Лол, "опыт в коммерческих проектах от 5 лет".
#82 #879935
>>879881
нет. Мой бут-файл вообще без конфигов почти (кроме :source)
879937879954
#83 #879937
>>879935
Объясни тогда, каким образом жырный конфиг лейна прверащается в пустой бут фейл?
879970
#84 #879953
>>879888

>Потому что цл умер


Ну, мне так не кажется, сообщество таки живо и даже развивается, хоть и медленновато
880073
#85 #879954
>>879935
Да, и мне объясни. Темплейты и плагины для лейна работают с бутом, кстати? Бут нью фигвил пашет?
879970
110 Кб, 914x753
#86 #879970
>>879954
>>879937
да че там объяснять, огромные сложночитаемые (и сложноредактируемые без паринфера) конфиги профилей заменяются на простой читабельный код
https://gist.github.com/anonymous/c26bfe1dc7e37d20c246d6f975f993f5
Конфиги таки есть, но это не такая ебанина, как на моем прошлом проекте на лейне (пикрелейтед), многое норм по дефолту

Про шаблоны не знаю, бутом пользуюсь только первый проект, писал все с нуля.
879974
#87 #879974
>>879970
Эм... Так ты же просто выкинул гарден и фигвил, не? Если из лейна их выкинуть, то там тоже будет малобуков, лол. Или я чего-то не понял?
879978
#88 #879978
>>879974
там используется reload, который вроде как заменяет фигвел (такие же панели с ошибками, такой же хотрелоад, только репла нет).

Кроме того, если бы я вставил в бут garden, он бы все равно вышел короче из-за возможности использовать
а) дефы, функции
б) определять параметры по умолчанию. В лейне, как видишь, некоторые параметры дублировались для разных "профилей". Может, это можно было как-то сделать в лейне, но мне лень разбираться с форматом этих конфигов.
в) как я уже писал выше, многие параметры в boot указаны по дефолту в удобных значениях.

Я тот человек, который между кодом и конфигом выберет код, не переношу огромные json/xml/yaml конфиги, где можно настроить все на свете.
880399
#89 #880006
Япошки емакс на общелиспе запилили, уже вполне юзабельно, хоть и рисует пока только через ncurses
https://github.com/cxxxr/lem
880074
#90 #880073
>>879953
Не просто медленновато, оно просто в конвульсиях.
Да и сам язык, увы, пригоден конкурировать только с сишкой до 89 года. А если начать к нему прикручивать батарейки уровня CL21, то начнется адовая фрагментация. В общем увы и ах.
#91 #880074
>>880006
Не нужно.
880087
#92 #880087
>>880074
Если они ставят себе целью совместимость с емаксом, то очень даже нужно.
880099880106
#93 #880099
>>880087
Лол, в чем смысл? Писать ядро редактора на тормозном цл вместо ультрабыстрой сишки?
А емакс без тонны код на елиспе никому не нужен.
880106
#94 #880106
>>880099
Смысл в компилируемости расширений в машинный код, очевидно.

>А емакс без тонны код на елиспе никому не нужен.


Поэтому я и говорю >>880087

>Если они ставят себе целью совместимость с емаксом


Благо, елисп не так сильно отличается от общелиспа, и запилить слой совместимости вполне реально (я даже видел где-то в сети). Тем более, что елисп в последнее время мимикрирует под цл.
880109880402
#95 #880109
>>880106
Лучше бы многопоточность помогли запилить, чем делать очередное ненужно.

А на счет "не так сильно отличается", ты походу елисп последний раз видел лет 10 назад.
880113
#96 #880113
>>880109
Думаю, им лучше знать, что им лучше делать.

>А на счет "не так сильно отличается", ты походу елисп последний раз видел лет 10 назад.


Последние 10 лет он только и делал, что потихоньку превращался в цл.
#97 #880399
>>879978
Ну в лейне тоже можно объявлять биндинги и расшаривать куски конфига в разные места. Но вообще я тебя понял, это скорее вопрос личного предпочтения. Мне вот наоборот приятнее работать пусть с многословным, но представленным в виде данных билд-конфигом.
#98 #880402
>>880106
Хотели же (уже лет ндцать как) чхему впилить в имакс. Вощ и ныне там. А эти ребята взяли и запилил то же, но с кл?
880688
#99 #880688
>>880402

>Хотели же (уже лет ндцать как) чхему впилить в имакс.


Впиливали же guile вроде.

>А эти ребята взяли и запилил то же, но с кл?


Нет, они переписали с нуля.
880831
#100 #880831
>>880688
Впиливали, да чет не впилили как-то, не? По-крайней мере я ни одного пакета на нем не видел.
#101 #881424
Что джава животворящая с людьми делает...
По совету сектанта итт попросил у менеджера еще одну плашку. Место под плашки в ноуте кончилось.
881685
#102 #881685
>>881424
И как? Теперь хватает? Или ещё ону просить будешь?
881712
#103 #881712
>>881685
Говорю же, ноут. Нет там больше места под плашки. Теперь памяти хватает, но емакс все равно рандомно крашится от злоеубучего кложурсрипта. Плюс когда нрепл активен smex начинает тормозить. Какие-то буферы кложи при сохранении на 2 секунды виснут. Короче не так хуево как ванильный жс, но все равно плохо.
883166
#104 #883166
>>881712
Бро, почини имакс. Ты мамой клянешься, что он у тебя крашится? Я буквально пару раз в жизни видел, как крашится имакс, причем один раз это был какой-то баг, который пофиксили в следующей же версии. У тебя точно весь имакс крашится? Это пиздец же.

Алсо, у тебя стабильные версии всего тулинга стоят, да?
883213
#105 #883213
>>883166
Почему как только кложура поселилась в емаксе, он начал крашится? Крашится от слова закрываться нахуй мгновенно, проебывая все на свете. Крашится и тормозить.
883218883791
#106 #883218
>>883213
Я не знаю, не видел кроме тебя никого, у кого крашится имакс. Версии-то у тебя стабильные и одни и те же у всех пакетов имакса и плугинов лейна?
883590
#107 #883416
Делаю простенькую задачку на лиспе с использованием вижуал лиспа. Сам интерфейс получился легко, а вот запрограммировать кнопки начинаются проблемы. Сейчас не могу вывести значения набор чисел из тхт файла в эдитбокс, пишет неверный тип аргумента file nil. Вот сейчас упёрся рогом и дальше не могу, помогите разобраться как это сделать.
В программировании мало чего понимаю, разбираюсь почти с нуля, но инфы по лиспу очень мало в интернетах
883453883457
#108 #883453
>>883416

> вижуал лисп


Што ета?
883459
#109 #883457
>>883416
Немного разобрался, read-line теперь выводит мои числа из файла в консоли верно. Теперь как их перекинуть в edit_box, чтобы они там отображались?
883503
262 Кб, 820x608
#110 #883459
>>883453
Диалоговые окна в нём делаю, а уже саму начинку в лиспе пишу.
#111 #883503
>>883457
Ты код-то хотя бы покажи.
883547
#112 #883547
>>883503
(defun vl_fs ( / fname file re ex)
(setq fname (getfiled "Выбрать файл" "D:\\" "txt" 16))
(setq file (open fname "re"))
(setq re (substr(read-line file)1))

(setq ex (close file))

)

Перед закрытием файла, надо его содержимое вывести в edit_box. В консоли у меня отображает нужный мне ряд чисел, я просто не знаю как его вывести в нужном мне боксе.
883903
#113 #883590
>>883218
Стабильные. Одно и тоже на двух разных машинах. Конечно проблема в емаксе, во мне и даже в аллахе, а не в кложуре.
883721
#114 #883721
>>883590
Ну в кложуре проблема быть никак не может, лол, - кложура крашит имакс? Что-то из разряда марсианских жидомасонов, срущих в подъездах. А вот в сидере - вполне, хотя все равно странновато, что весь имакс крашится. А что разрабы сказали?
883780
#115 #883780
>>883721
Крашится оно только когда подцеплен фигвил. Чтобы говорить с разрабами надо им что-то показать. А показывать нечего, потому что даже стек трейс не поймать без танцев с бубном.
883827884095
#116 #883791
>>883213
В емакс ффи завезли что ли?
Ну все теперь.
#117 #883827
>>883780
Ссссуууууука

Fatal error 11: Segmentation fault[1] 15524 abort (core dumped) emacs
emacs 72.48s user 2.74s system 4% cpu 28:20.22 total
883880884095
#118 #883880
>>883827

> ulimit -c unlimited


> Fatal error 7: Bus error[1] 29185 segmentation fault (core dumped) emacs


Охуенно просто. Охуитетельно.
#119 #883902
Не хочет работать цикл

while (/= elem nil)

Если nil заменить на какое-нибудь существующее, то цикл правильно работает и останавливается на указанном элементе. Походу цикл повторяется второй раз и в конце всегда выдаёт ошибку "неверный тип аргумента: stringp nil". Пробовал заменять на null и на length 0, один хер та же самая ошибка.
883906
#120 #883903
>>883547
Ну, за этим в документацию, мне, как и, наверное, всем остальным ИТТ, на автолиспе писать не приходилось, поэтому таких мелочей не знаю. Должен быть какой-то метод у edit_box вроде setvalue.
883907
#121 #883906
>>883902
Попробуй просто while elem
883911
#122 #883907
>>883903
Спасибо, уже разобрался. Я пишу наверное чуточку быстрее полторы строки в день чем тут читают. Вот сейчас с циклом затык, даже нашёл пример аналогичный, но у меня всё равно не хочет работать.
#123 #883911
>>883906
Структура нарушается. Вот смотри, если я напишу
(while (/= elem 1))
То у меня будет считывать строку за строкой из файла, пока не наткнётся на 1, тогда цикл завершится. В моём случае мне нужно считывать строки до конца файла, т.е. пока элемент не будет равен пустом месту. В теории всё хорошо, я даже нашёл пример http://aco.ifmo.ru/~nadinet/html/lectures/lsp_2.html#_size где делают абсолютно также. Но тем не менее где то ошибка в цикле, и он запускается второй раз после прогона всего файла и выбивает ошибку.
883912
#124 #883912
>>883911
Ты таки попробуй, потому что в общелиспе /= предназначен только для сравнения чисел.

>/= elem 1


Строка сравнивается с числом? Хм, автолисп слаботипизированный что ли?
883931
#125 #883931
>>883912
Уже и в этом разобрался, подстрокой считывал дальше после окончания и цикл накрывался. Короче проблема внутри самого цикла была, а не в самом while.
883933
42 Кб, 578x559
#126 #883933
>>883931
И (/= elem nil) работает? Странно, потому что в документации пишут, что он только для численных сравнений.
883948884088
#127 #883948
>>883933
В моём учебнике допускается

>Проверяет неравенство аргументов (рекомендуется использовать для чисел или строк).


>(/= <аргумент1> [<аргумент2> ... [<apryMeHTN>]...])


>Типы аргументов: любые.

#128 #884088
>>883933

> numstr


Что, и вправду слаботипизированный? Жесть.
#129 #884095
>>883780
>>883827
Ну что, нашел, в чем проблема? Если у тебя действительно последние стабильные версии имакса и всего сидер-релейтеда, то пиши им и без стектрейса. На чем крашится-то, на каком-то конкретном вводе в репл? Или вообще рандомно? На пустом проекте или только на рабочем? На обоих машинах енвайронмент один и тот же? Любопытно же :3
884103
#130 #884103
>>884095
Вообще рандомно, перед этим начиная заметно визуально подтормаживать на сохранении/эвале кложурскриптовых файлов. Только на рабочем коннекте через фигвил. Энвайронмент ясен хуй не может быть 100% одинаковым, но дистр одинаковый, значит версии софта плюс минус одни и те же.

А хуле толку писать о сегфолте вообще без данных для выяснения причин. Без стека нет смысла.
884210884516
#131 #884210
>>884103
Под gdb емакс запусти
884212
#132 #884212
>>884210
Нет ты.
884214
#133 #884214
>>884212
Нет ты. У меня-то не падает.
#134 #884516
>>884103
А что за дистр, арч небось, лол?

Да не, напиши все равно, чтобы был репорт. А то я вот сейчас посмотрел их иссуи, вроде ничего похожего нет, и если у кого-то еще что-то похожее, то он тоже ничего не найдет и подумает, что ну его нахуй, и в итоге никто так и не пофиксит проблему, если она все-таки есть.

Алсо, я бы попробовал на другой версии имакса воспроизвести, если не лень. Ну и без загрузки конфига. И на пустом проекте.
884890
#135 #884890
>>884516
Арч. Поймаю трейс, сделаю репорт.
#136 #885087
Пытаюсь тут подсадить человека на кложурскрипт. Но бля, поставить его на винде это какое-то мучение. Есть годные мануалы, которые можно дать человеку, который не умеет конпелить исходники линукса?
885151
#137 #885151
>>885087
Винда - это вообще сплошное мучение как бы. Вроде же расписано все на сайте у них. Загугли "lein windows", профит. Из редакторов попробуй курсив или лайттейбл, например. Хотя раз только кложурскрипт, то пусть хоть в нотепад.ехе пишет, фигвил же.
#138 #885290
Поясните кто за emacs на windows. Установил geiser с помощью melpa, как я понял достаточно вызвать install-package и все установится, лишних действий типо качать что-то еще делать не надо. Вызываю run-guile, пишет apply: Searching for program: No such file or directory, guile.exe. Guile Load Path пустой в настройках. Что я делаю не так?
885293
#139 #885293
>>885290
Имакс не интепретатор схемы. Тебе нужно установить guile на саму винду.
885295
#140 #885295
>>885293
Почему тогда написано в мануале что достаточно пакет установить?

>The easy and quick way


http://www.nongnu.org/geiser/geiser_2.html#Installation
885296885378
#141 #885296
>>885295
Простой способ установить пакет в сам емакс. Без git clone и ручной установки.
#142 #885378
>>885295
Потому что для того, чтобы был гейзер, достаточно установить гейзер. Гейзер - это не гуайл. Гейзер - плугин для редактора, а гуайл - конпелятор\интерпретатор схемы.
#143 #886408
886502
#144 #886502
>>886408
И правда охуеть! В кложуру завезли то, что в общелиспе из коробки уж лет с двадцать
886503886529886697
#145 #886503
>>886502
20 лет как ненужно.
#146 #886529
>>886502
В лиспе такой хуйни быть не может.
886541
#147 #886541
>>886529
Запрещаешь?
886544
#148 #886544
>>886541
Здравый смысл запрещает, а я констатирую.
886553
#149 #886553
>>886544
В любом случае, уже поздно выпиливать.
А смысл свой доктору покажи, уж что-то я сомневаюсь в его здравости.
886563
#150 #886563
>>886553
Чего поздно выпиливать? Ну-ка ну-ка поржем.
886567
#151 #886567
>>886563
Наверное то, о чем мы говорили, нет? Ты лучше вернись в свою палату, поржи, а потом, как будешь в более вменяемом состоянии, возвращайся.
886572
#152 #886572
>>886567
У меня сложилось впечатление будто ты утверждаешь, что такая бессмысленная хуйня как "отлов чего-то там в компайл-тайме" не только не является бессмысленной хуйней, но ещё и существует в самом лиспе. Я ведь не ошибаюсь?
886585
#153 #886585
>>886572

>Я ведь не ошибаюсь?


Частично. 1) не бессмысленная 2) отчетливый "компайлтайм" есть не во всех лиспах.
Ну а вообще удивительно, что кто-то в лиспотреде об этом не знает. Может, ты ещё и про вывод типов в общелиспе не слышал?
886588
#154 #886588
>>886585
Рассказывай где ты в лиспе видел аналог этой кложурской бессмысленной хуйни.
Про вывод типов потом уж как-нибудь.
886599
33 Кб, 509x397
#155 #886599
>>886588
Ну на
886602886606
#156 #886602
>>886599
И что это у нас? Ты не стесняйся, рассказывай.
886604
#157 #886604
>>886602
Похоже на проверку корректности кода во время компиляции, разве нет?
886607
#158 #886606
886612
#159 #886607
>>886604
Вообще не похоже. Похоже, что ты ни шиша не понимаешь.
И вообще, судя по таким словам как "проверка корректности", ты гнойный статикодебил.
886609
#160 #886609
>>886607
Твоё отношение к тем кто не разделяет твои вгзляды показательно. Даже незнаю кто хуже, ты или гитлер.
886610
#161 #886610
>>886609
Какие еще мои взгляды, ты о чем?
Или ты думаешь, что тут кто-то кроме тебя не знает, что "Compilation failed" пишется, когда при компиляции были варнинги, кроме стайл-варнингов? Что код этот прекрасно скомпилировался и прекрасно работает точно так как написан? Что он "корректен" в любом смысле этого бессмысленного слова?
Давай показывай нормальный аналог той хуйни. (Подсказка: его нет и не может быть)
886620
#162 #886612
>>886606
Типы в общелиспе так тоже умеют. Но только они полноценная часть языка, а не сбоку прикрученный костыль.
886615
#163 #886615
>>886612
Это все прекрасно. Сам общелисп только мертв и неюзабелен уже. Увы.
#164 #886620
>>886610

>и прекрасно работает точно так как написан


Вообще-то нет. Дизассемблируй функцию и увидишь, что ничего, кроме кода выброса ошибки, там нет.

>Давай показывай нормальный аналог той хуйни.


Ну покопай гитхаб, там полно неработающего говна.
Проверка типов - вполне себе "нормальный аналог", единственное, что в компилятор вшито и апи не предоставляет
886622
#165 #886622
>>886620

> Вообще-то нет.


Вообще-то да. Но если хочеть еще позора, можешь обосновать свое замечательное мнение, не такое как у других.

> Дизассемблируй функцию и увидишь, что ничего, кроме кода выброса ошибки, там нет.


Что ты несешь? Там check-type должен быть еще.

> Проверка типов


Где, какая "проверка типов"? Рассказывай, показывай.

> единственное, что в компилятор вшито и апи не предоставляет


Ну еще бы, какое может быть апи у того чего нет и быть не может.
886633
#166 #886633
>>886622

>Там check-type должен быть еще.


Я имел в виду, что форма, не прошедшая проверку типов, заменена кодом выброса ошибки.

> какая "проверка типов"?


Которая не дает складывать попугаев с питонами, очевидно.
886637
#167 #886637
>>886633

> Я имел в виду, что форма, не прошедшая проверку типов, заменена кодом выброса ошибки.


Во-первых, никакой "проверки типов" там нет. А во-вторых, это самое банальное удаление мертвого кода. Функция "умножить", если какие-нибудь из аргументов не являются числами, сигналит ошибку. В данном случае заведомо известно, что второй аргумент не число, поэтому этот вызов и заменили на сигнал ошибки. Это общая оптимизация, никакого отношения к типам она не имеет.

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


Чего блядь?
886647
39 Кб, 478x440
#168 #886647
>>886637
Здесь по-твоему тоже типы не проверяются?
886649
#169 #886649
>>886647
По-моему нет.
Но я пока еще не знаю что ты подразумеваешь под "типов проверянием".
886652
#170 #886652
>>886649
Ну как знаешь.
886653
#171 #886653
>>886652
Ну вот и хорошо.
#172 #886697
>>886502
По-моему ты что-то путаешь. Что именно из кл ты имел в виду?
#173 #886699
Алсо, ерлангертипохейтер, ето ти тут насрал в итт треде?
886768
#174 #886768
>>886699
Нет, это я насрал.
#175 #887103
>>877202
Не хочешь пообсуждать 3,4,5,...,11D-рендеринг и его практическую реализацию на CL? У меня есть интересная, как мне кажется, идея, но одному мотивации нехватает.
887123887140
#176 #887123
>>887103
https://github.com/TatriX/cl-gl-tutorials
Нет, спасибо. Я лучше на растекрестах буду этим заниматься, чем на CL.
887134
#177 #887134
>>887123
А чего не CEPL? Мне уже начинает казаться, что ты специально выбираешь неотлаженные и вообще недописанные библиотеки, лишь бы оклеветать общелисп и перетянуть потенциальных лисперов на кложу
887142
#178 #887140
>>887103
Поведай, в чем суть идеи
887406
#179 #887142
>>887134
CEPL не завелся. Да и мне нужен был ванильный биндинг.
887150
#180 #887150
>>887142
Ну допустим. Но зачем ты пердолил указатели напрямую через cffi, ковыряя внутренности cl-opengl?
https://github.com/TatriX/cl-gl-tutorials/blob/master/06/translation.lisp#L188
887155
#181 #887155
>>887150
Если ты читал ридми, то там написано, что это адаптация кода из книжки. Нужно было, вот и пердолил.
Вообще конечно, боль и страдание. Не рекомендую.
887173
#182 #887173
>>887155

>Вообще конечно, боль и страдание. Не рекомендую.


Но ты сам же себе эти страдания и обеспечил. Есть же в том же cl-opengl нормальные обертки, нет, буду голые биндинги дёргать.
887174
#183 #887174
>>887173
Это говорит лишь о том, что обертка хуевая, но благодоря тому, что CL позволяет положить хуй на инкапсуляцию, я смог дернуть приватные методы и сделать что мне нужно было.
887182
#184 #887182
>>887174
Пакет %gl предоставляет низкоуровневые биндиги, на что какбэ имя пакета и намекает, зачем ты в него полез - для меня вопрос.

>Это говорит лишь о том, что обертка хуевая


Это говорит лишь о том, что ты ССЗБ, который не читает документацию и лезет без повода в низкоуровневые интерфейсы. И инкапсуляция тут совершенно не при чем. Даже удивительно, что ты не догадался до прямого cffi:foreign-funcall.
887184
#185 #887184
>>887182
Лол. Документация. Не смеши мои тапочки. Почти у всего чем я пытался пользоватся на CL либо вообще нет документации, либо она настолько хуевая, что лучше бы не было. Начиная с гиперспека.
887197887207
#186 #887197
>>887184
Гиперспек, конечно, выглядит стремновато, но он не так уж и плох, особенно если сравнивать с каким-нибудь доксигеном.
887211
#187 #887207
>>887184
А так да, с документацией библиотек не так всё радужно.
#188 #887211
>>887197
Документация на format это адский ебаный пиздец. Проще в PCL сходить, чем найти нужную директиву в гиперспеке.
887222
#189 #887222
>>887211
Не такой уж и пиздец. Но вообще да, было удобнее, если бы все директивы описывались на одной странице.
#190 #887285
Как осилить модульное программирование в лисп и как он там вообще? Дайте ссылок.

Что на счет gui? Хочется кроссплатформенно, конечно
887392
#191 #887392
>>887285
В каком именно лиспе? Берешь и осиливаешь, точно так же, как в любом другом языке. В чем конкретно вопрос?

Насчет гуи - есть гтк\свт\свингпростихоспати\хтмл+цсс\реакт\реакт нейтив для андройда и айфона\биндинги к андройд сдк\хуйзнаетчтоеще, короче - все есть, конкретизируй вопрос.
887456
#192 #887406
>>887140
Лучше завершу некоторые дела, потом запилю демку и вброшу сюда, а то объяснять текстом долго и лень.
#193 #887456
>>887392
Я о коммон лиспе, конечно же.

Нет какой-то либы для всех платформ, дабы абстрагироваться?
887500888068888094
#194 #887500
>>887456
Конечно есть. Называется кложур.
888068888094
#195 #887501
Почему в емаксе так неудобно редактировать код? Я поставил lispbox
887532888068
#196 #887532
>>887501
Если ты поставил ванильный емакс, а до этого пользовался только блокнотом, то конечно неудобно.
Емакс как музыкальный инструмент, сначала ты его осваиваешь, а только потом можешь издавать прекрасные звуки.
#197 #888068
>>887456
-> >>887500 вот этот базарит

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

>>887501

> lispbox


Боже мой, где ты это говно мамонта откопал? Юзай https://github.com/syl20bnr/spacemacs - ну или имакс прелюд, например.

Вообще, судя по твоим постам ты, мм, новичок в программировании. В таком случае начинать с коммон лиспа - это очень странный и неудачный выбор. Есть plt racket, он специально сделандля изучающих кодинг, там сразу и редактор с ide, и гуй-библиотека, короче - абсолютно все в одном месте и из коробки, скачиваешь один исполняемый файл и все.
888094
#198 #888094
>>887456
Из того, что кроссплатформенно, опенсорсно да, есть и проприетарные и пригодно для использования:
qt: https://shinmera.github.io/qtools/ https://shinmera.github.io/qtools-ui/
electron: http://ceramic.github.io/
gtk: http://www.crategus.com/books/cl-cffi-gtk/ http://www.crategus.com/books/cl-gtk/gtk-tutorial.html
>>888068

>-> >>887500 вот этот базарит


Десктопное приложение на жаве?! Да вы, мусьё, изв^Wкложурист.
888101
#199 #888101
>>888094
Ну можно на ноде, а не на жаве.
888104
#200 #888104
>>888101
Ну можно-то оно что угодно, хоть на mcclim'е педалить да x-сервер с собой таскать. Но только нужно ли?
888108
#201 #888108
>>888104
Это вопрос философский. А вот то, что люди так делают - ето факт.
#202 #888528
>>888485
Ваше мнение очень важно для нас. Держите нас в курсе.
#203 #888709
>>888485
У меня дежавю или эта ссылка уже ранее фигурировала здесь?
888710
#204 #888710
>>888709
Была в прошлом треде кажется. Хватит тут рекламировать свою залупу.
#205 #889205
Анон, подскажи пожалуйста: нужно написать функцию которая на вход принимает список пар [(Int, Int)], а возвращает список пар сгруппированных по первому значению [(Int, [Int])].

Tо есть если на входе [(0,1), (0,2), (1,3), (1,4)] вернуть она должна [(0,[1,2]), (1,[3,4])]

haskell треда не нашел, но мне главное принцип, а код сам напишу
889251889256
36 Кб, 536x290
14 Кб, 305x171
#206 #889251
>>889205
https://gist.github.com/anonymous/55538d787adf8d9c2f1bf25dcff6442b
возможно есть более красивое решение.
Второй пример на эликсире, там group_by принимает опциональный параметр mapper, который и делает все красиво
889556
15 Кб, 360x155
#207 #889256
>>889205
ну и на кложе

А если использовать plumbing, то чисто теоретически можно и так
(grouped-map first second ['(0, 1), '(0, 2), '(1, 3), '(1, 4)])
889415889556890652
#208 #889415
>>889256
Не могу избавиться от чувства, что у тебя сломана подсветка.
889478889483
#209 #889478
>>889415
ты про abs? Все таки не ide, подсветка не такая умная, чтобы различать builtin функции и переменные. Я обычно просто не использую такие идентификаторы, но сейчас было лень придумывать
#210 #889483
>>889415
а если ты про то, что закрывающие скобки серые, то это из-за parinfer. Сервые скобки почти не видны и чисто психологически проще использовать паринфер
https://shaunlebron.github.io/parinfer/
889536889660
#211 #889536
>>889483
Не очень понял, оно чем-то отличается от smartparens? Ну кроме ебанутой подсветки.
889545
#212 #889539
https://github.com/burtonsamograd/emacs-jit
Кто-нибудь пробовал?
889554
#213 #889545
>>889536
а я где-нибудь сравнивал с smartparens? Есть еще несколько аналогов, че ты их не перечислил?
Разница в том, что smartparens для emacs, а parinfer для практически всех современных редакторов.
Фичв с затемненными скобками сугубо опциональна - кому не нравится, может отключить. Но она все таки помогает психологически не лезть удалять лишние скобки, а просто уменьшить отступ.
889569889598
#214 #889554
>>889539

>пробовал?


зачем? героин больше вставляет
#215 #889556
>>889251
>>889256
Спасибо большое!
#216 #889569
>>889545
Сравни со смартпаренс. Че лучше?
889661
#217 #889598
>>889545
ну по гитхабу смартпаренс мне больше нравится. Паринфер исключительно для лиспов, смартпаренс судя по всему работает с любыми вложенностями. Сравнить иначе не могу, имаксом не пользовался ни разу.
889599
#218 #889599
>>889598
Смартпаренс нужно как следует допиливать, потому что из коробки оно нормально работает только с лиспом. Но все крутилки там есть. А в чем ты там лисп то пишешь?
889601
#219 #889601
>>889599
атом это чистый + паринфер. Хочется перейти на имакс из-за сидра, но боюсь мой комп с 4-мя гигами оперативы, постоянно работающими рельсами, хромом и бутом/лейном, не потянет интерактивную разработку
889615889641889654
#220 #889615
>>889601
Лол, это точно. 10 гигов сжирает в лет это ваша жвм.
#221 #889641
>>889601
Emacs-nox не так уж много ест.
889765
#222 #889654
>>889601
Eight
Megabytes
And
Constant
Swapping
#223 #889660
>>889483
Про скобки, да. Ненавижу незакрытые скобки. От кода на картинке у меня учащается сердцебиение и появляется мерзкое чувство тревоги.
#224 #889661
>>889569
Паредит.

КО
889765
#225 #889765
>>889641
Память жрет не емакс, а жвм.
>>889661
Чего может паредит, чего не может смартпаренс?
889768
#226 #889768
>>889765
Если честно - я не юзал смартпаренс, это какая-то новая штука, а паредит был всегда. Он умеет делать структурные переносы на уровень вверх и вниз? Я даже хз, как это словами объяснить, погугли демку на ютубе если что.
889803
#227 #889803
>>889768
Я как раз наоборот, юзал только смартпаренс. Потому что когда нужно было выбирать, я сравнил их, и получилось так, что смартпаренс умеет все что умеет паредит и еще сверху всякого. У него даже есть готовый сетап, типа включи-ка мне биндинги ка у паредита.
890290
#228 #890290
>>889803
Еще и сверху всякого?! Ок, мне даже представить сложно, пойду сам тогда погуглю.
#229 #890652
>>889256
а что за плагин, который стрелочки заменяет?
890793890808
#231 #890808
>>890652
в моем случае (автор скрина) это просто шрифт с лигатурами - https://github.com/tonsky/FiraCode
890815
#232 #890815
>>890808
Как по мне выглядит это отвратительно.
890851
#233 #890851
>>890815
ну так не используй, никто же не заставляет) Мнение анонов тут интересно меньше всего
890854
#234 #890854
>>890851
А что тут еще кроме мнений есть-то? Ради знаний есть книжки, ютубы и всякие стек оверфлоу. А тут просто говном покидаться, да личное мнение посмотреть.
#235 #891206
https://cemerick.com/2016/12/07/rip-anthony-grimes/

Пацаны, raynes умер. Пиздец какой-то, ничего не понимаю. Он же на год младше меня был. Не сказать, что мы с ним прям особо общались, но блин. Помню, как он меня в ирц троллил, лол. И как он после того, как кложурное комьюнити собрало ему бабла на билет до конференции, писал в блоге о том, что мол йееееей, меня настоящая живая женщина обняла, лол. Он тогда еще пиздец каким жирдяем был. И еще как я чуть не проебал на его пастебине все свои пасты, когда юристы из-за спамеров заставили его вырубить, хех. Странное ощущение - вроде я его и не знал даже, но как-то мне хуево.
891346
#236 #891346
>>891206
Да не переживай ты так, в конце-концов он всего лишь кложурист
514 Кб, 800x1132
#237 #891657
http://pastebin.com/zyHjPVeS

что я не так делаю? for - проход по списку с выполнение кода и проброс аргументов - вроде работает, но если проход в проходе делаю - шлёт нахуй. и да, наверно это как дерьмо выглядит, но мне хочется так, чисто из академического интереса. вкатываться начал позавчера и да, это emacs lisp.
#238 #891726
путём раскрытия вроде понял, нельзя через eval вызывать функции из, чтоль, cl-labels.
#239 #891734
да всё. на глобальную переписал - заработало. cl-labels перекрываются может, или чё - впадлу читать, я тут говна навернул из 70 пол книги - хватило, до сих пор кал из зубов выковыриваю.
#240 #891757
Почему mocl стоит так дорого? Нет ли каких-то начальных поделок студентов, которые можно доработать вместо этого дорогого?
891817892168
#241 #891781
http://rgho.st/8LfsYx5LT залил Анси Коммон Лисп от Пола Грэма
891990
#242 #891817
>>891757
Где ж дорого, совсем и не дорого.
891829
#243 #891829
>>891817
Тыща баксов же, не?
891834
#244 #891834
>>891829
Двести
#245 #891977
https://www.quicklisp.org/ это типа пакетный менеджер для лиспа? И им пользуются нормальные пацаны или нет?
892092
#246 #891990
>>891781
Зачем вы это делаете? Нельзя просто ссылку на gen.lib.rus.ec дать?
#247 #892092
>>891977
Пользуются. Просто нормальных посонов пользующихся общелиспом пренебрежимо мало.
#248 #892168
>>891757
Есть опенсорсный ecl, который компилится через сишку, но он не умеет в кросскомпиляцию. Автор говорит, что его код для этого нужно прилично перелопатить.
Также существует clasp, но он пока только пилится и совсем сырой.
#249 #892464
Аноны, что скажете за htdp курс на edx, хорош ли? При том, что cs50 я уже прошел
893248893346
#250 #893236
Ну что, хипстеры, все ретроградствуете?
Поясните, пожалуйста, почему нельзя считать руби развитием идей общелиспа, и вообще, назовите хоть одно фундаментальное различие между ними, не считая синтаксиса и махрового легаси вроде cons-ячеек, очевидно.
893238893244
#251 #893238
>>893236
Где еще ты можешь редактировать не странный текст, а синтаксическое дерево?
893256
#252 #893244
>>893236
Разве в раби метапрограммирование не уровня жс (тупая интерпретация строк)?
893256
#253 #893248
>>892464
Забей на SICP/TAPL/HtDP парашу. Сразу читай Lambda The Ultimate, затем OnLisp, наконец плавно переходи к Introduction to MIPS Architecture - идеальная архитектура для реализации своего первого Lisp-компилятора на основе CPS. Если интересуют структуры данных, то только MIT-овский 6.851 Advanced Data Structures. Виртом и Ахо-Копрофтом можешь сраку подтереть. Кнута не читай, ему есть адекватная замена - книга Hacker"s Delight.
893289893354893439
#254 #893256
>>893238
В пистоне, например. https://docs.python.org/3/library/ast.html
>>893244
Разве макросы в CL (ты же об этом, да?) не существуют, в основном, для компенсации небогатого синтаксиса?
893258893260
#255 #893258
>>893256
Ты про reader-макросы что ли? Ну да, они для этого и нужны.
893932
#256 #893260
>>893256
Вопрос был о том, что лиспокод это AST. И ты редактируешь не строчки, а сразу AST.

Посмотри вот это: http://www.parens-of-the-dead.com/
893932
#257 #893289
>>893248
Добавил в свою копилку advanced-чтива.
893354
#258 #893346
>>892464
Забей на Lambda The Ultimate/OnLisp/Introduction to MIPS Architecture парашу. Сразу читай SICP, затем TaPL и наконец плавно переходи к HtDP - идеальное руководство для реализации своего первого первого полноценного проекта. Если интересуют структуры данных, то только Аховский Data Structures and Algorithms. Маккарти и Тернером можешь сраку подтереть. Уоррена не читай, ему есть классическая замена - книга The Art of Computer Programming.
893354
sage #260 #893439
>>893248
Охуенно ты конечнo tapl & htdp рядом поставил.
#261 #893932
>>893260
До тех пор, пока парсер не сделает свою работу, никакого AST в принципе нет, ты редактируешь все те же строчки, не говоря уже о макросах, которые могут экспандиться хуй знает во что, reader-macros, на которых можно сделать хоть транслятор PHP в s-expressions.
>>893258
Я о том, что метапрограммирование уровня CL -- это костыль, возникающий от недостатков в дизайне языка. У пишущего на раби или любом другом современном языке потребности в определении новых синтаксических конструкций, как правило, не появляется. Это такой же атавизм, как и cons-ячейки.
893941894027
#262 #893941
>>893932
То же, что утверждать, что функции

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


Толстовато.
893976
#263 #893976
>>893941

>Толстовато.


Если ты это о своём посте, то да. Синтаксис -- средство, а не цель, поэтому, во имя консистентности, целесообразнее выделить из множества синтаксических конструкций подмножество тех, которые позволяли бы описать любую из возможных функций, чем заставлять программиста заниматься этим самому. Как пример -- стандартная в лиспе практика использования макросов вроде with-something. На рубях подобное пишут, не прибегая к "метапрограммированию".
894008
#264 #894008
>>893976
Макросы суть те же функции с тем лишь исключением, что они могут принимать код в качестве аргумента. Собственно и "консистентность" они нарушают не более, чем самописные функции.

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


Вот как-то так это звучит. Ты же понимаешь, что не просто так люди на XML программируют.
#265 #894027
>>893932
Вот только в лиспах почему-то поддержку cps, контрактов, типов, erlang-style обработки исключений и паттерн-матчинга запиливают с помощью библиотек, а в других языках приходится ждать новой версии языка. Ну и да, толстовато. Ни в руби, ни в лиспах не шаришь, сразу ведь понятно.
#266 #894044
>>879929
Стажёром пойти без диплома, возьмут?
#267 #894994
Что может стоять на месте x в следующих выражениях?
(a) > (car (x (cdr ’(a (b c) d))))
B
(b) > (x 13 (/ 1 0))
13
(c) > (x #’list 1 nil)
(1)
895089
#268 #895089
>>894994
Ну чего же ты, анон, это ж проще простого.
car
or
apply
#269 #895603
Почему лисп хорош для всяких ИИ?
895650896025922243
#270 #895639
895647
#271 #895647
>>895639
Её уже дописали?
41 Кб, 256x223
#272 #895650
>>895603
Никто точно не знает. Боюсь, человечеству потребуется ещё ни одна сотня лет, чтобы всецело понять магию скобок.
922243
#273 #896025
>>895603
Нипочему. Это миф.

Т.е. он мог быть в чём-то хорош для символьных вычислений, что есть форма ИИ, но это всё в далёком прошлом.
#274 #897351
IDE для общелиспа.
https://shinmera.github.io/portacle/
898986
#275 #898986
>>897351
Как под этим под виндой сделать vim-mode?
899007
#276 #899007
>>898986
evil прикрути. Но только зачем?
899085
#277 #899085
>>899007
Я не умею, мне неудобно, я плохой. Но как это сделать?
899192899199
#278 #899192
>>899085
Вим поставить - не вариант? Тем более, если ты виммер, то прикрутить slimv должен осилить.
#279 #899199
>>899085
Ну или spacemacs
#280 #899353
https://www.gnu.org/software/guix/ - новый нескучный дистрибутив, основанный на NixOS.
NixOS/Nix Package Manager используют для сценариев сборки пакетов и конфигов системы DSL похожий на Haskell, здесь же для этих задач используется Guile Scheme.
906480
30 Кб, 480x360
#281 #899448
(let ((seed 1234))
(defun rand ()
(setf seed (mod ( seed 16807) 2147483647))))

Почему после каждого вызова (rand)
[2]> (rand)
20739838 ; здесь я понял, 1234
16807
[3]> (rand)
682106452 ; а тут с хуя такое
[4]> (rand)
895431078 ; ??????????????

Выходят такие ответы?
899449
#282 #899449
>>899448
(let ((seed 1234))
(defun rand ()
(setf seed (mod (звездочка seed 16807) 2147483647))))
899484
33 Кб, 492x390
#283 #899484
>>899449
Разобрался, спасибо.
#284 #900243
Экспертную систему реально осилить на общелиспе?
900349
#285 #900349
>>900243
Ее и на паскале можно. Почему не пролог?
900391
#286 #900391
>>900349
Потому что на лиспе есть свой пролог. Это то, что обязан запилить каждый начинающий лиспер.
http://franz.com/support/documentation/current/doc/prolog.html
#287 #903508
Можно ли найти работу на лиспе? А может даже удаленную? В гугле лишь сомнительные ссылки
903524903538903688
#288 #903524
>>903508
На кложе разве что, остальные лиспы никому нахер не вперлись кроме комонлисперов отсюда
#289 #903538
>>903508
Очевидный лиспджобс.
Алсо, лисповакансии нужно не искать, а создавать самому.
#290 #903688
>>903508
у crossover была пара вакансий на удаленку поддерживать легаси на крестах и общелиспе
еще есть AutoCAD где AutoLISP встроенный язык, на hh иногда встречаются вакансии
903774
#291 #903774
>>903688
Кстати, да, самый верный способ покодировать на Лиспе на работе-AutoCAD, но туда не вкатиться, как в айти после пары книжек.
#292 #904207
Как вычислить сколько осталось до конца Кали-Юги?

Она началась 23 января 3102 года до нашей эры, а должна окончиться через 432 тыс. лет после начала.
904362
#293 #904362
>>904207
[code lang=lisp]
(defun сколько-там-осталось-то? (&optional (от (сегодня)))
'дохуя)
[/code]
#294 #904713
Можете пояснить за сборщик мусора в лиспе и можно ли сделать лисп без него? И вроде есть еще компиляторы лиспа в Си, что скажете?

И насколько будет плохо, если я буду работать с лиспом в vim?
905029
#295 #905029
>>904713
Не пойму, ты о Common Lisp спрашиваешь или о лиспах в целом?

>и можно ли сделать лисп без него?


https://www.reddit.com/r/lisp/comments/4mtktn/bone_01_lisp_without_garbage_collection/

>И вроде есть еще компиляторы лиспа в Си, что скажете?


ECL, например, мало кто использует, потому что медленнее остальных реализаций и не полностью соответствует стандарту.
905167
#296 #905167
>>905029
Спасибо. Еще такой вопрос. Как лисп и шитый код вместе?
905180905286
#297 #905180
>>905167
Так форт - ето тот же лисп, только без скобочек и для пещерных людей
#298 #905286
>>905167
Що? Куда шитый код?
#299 #905683
Ну что вы, общелюбы? Каково это, жить без call/cc в 2017 году?
905703
#300 #905703
>>905683
Ну кложуристы вон вообще без TCO, и ничего, как-то обходятся.
905712905817961017
#301 #905712
>>905703
На кложу обычно с явы/жс переходят, а там народ, как мы знаем, беспринципный, непривередливый, им что бэйсик, что хаскель, что вилкой, что лопатой - всё одно. Про такие мелочи как tco или call/cc и говорить не приходится, тем более, что они в CPS и руками писать не гнушаются.
905787
#302 #905787
>>905712
Тсо не нужно. Хвостовые вызовы должны быть явными. Когда у тебя итеративный процесс и рекурсивный процесс выглядят одинаково, это плохонько и мислидинг.
905799
#303 #905798
Ананасы, как сделать так чтобы эмакс показывал только одно окно на фрейм. Т.е. если я открываю второе окно, то он просто создает фрейм с ним
905801
#304 #905799
>>905787
О, а вот и оправдания "это не баг, а фича" подъехали. Такие как ты и бэйсик оправдывали, что де код должен быть явным и без черных ящиков, и полиморфизм у вас был вредным.

>Когда у тебя итеративный процесс и рекурсивный процесс выглядят одинаково


Щито?
906439
#305 #905801
>>905798

>если я открываю второе окно


Что-что ты делаешь? Можно разделить текущий фрейм на два окна, а открывают, например, файл
905829
#306 #905817
>>905703
Прямо как общелисперы, только у тех даже явного тсо нет.
906252
#307 #905829
>>905801
Я не хочу несколько окон в фрейме, я хочу много фреймов и в каждом по окну чтобы управлять ими через WM
906259
#308 #906252
>>905817
Есть. И даже во взаиморекурсивные умеет. И даже без костылей, как у кложуристов.
#309 #906259
>>905829
https://www.gnu.org/software/emacs/manual/html_node/elisp/Standard-Hooks.html#Standard-Hooks

>buffer-list-update-hook


Вот, кажется, подходящий хук.
#310 #906439
>>905799

> Щито


Вот когда поймешь - возвращайся и поговорим про бейсик.
906443
#311 #906443
>>906439
Будто с тобой есть о чем говорить. Спорол хуйню и доволен.
906976
#312 #906480
>>899353

>https://www.gnu.org/software/guix/ - новый нескучный дистрибутив, основанный на NixOS.


>NixOS/Nix Package Manager используют для сценариев сборки пакетов и конфигов системы DSL похожий на Haskell, здесь же для этих задач используется Guile Scheme.


Анон, если смог установить GuixSD на жёсткий диск, отпишись, как ты это сделал,

Я записал на флэху через dd и запустил на 2 своих компах, ни на одном не взлетела графика, тупо логинится в root. Иксы (startx) не стартуют, mc в наборе нет, доустановить не могу из-за проблем сети.

Пеняю на швабодное ядро, linux-libre не воспринимает мои графические карты, на ЛОРе camel отписался что у него есть нормальное ядро с блобами, но как его впилить в образ "gnu-disk-image" - фиг знает.

Нужна помощь, небольшое количество Яндекс.Денег в качестве благодарности гарантирую.
906534961019
#313 #906510
Хочеться написать свой лисп. Это нормально?
906521
#314 #906521
>>906510
Да, даже книгу для таких написали - Lisp in Small Pieces
#315 #906534
>>906480

>ни на одном не взлетела графика


А ты уверен, что там есть чему взлетать? Образ-то хоть и сжатый, но всего на 140мб, если иксы туда и впихнули, то без какой-либо оболочки.
906555
39 Кб, 1083x304
#316 #906555
>>906534

>А ты уверен, что там есть чему взлетать? Образ-то хоть и сжатый, но всего на 140мб, если иксы туда и впихнули, то без какой-либо оболочки.


После
xz -d guixsd-usb-install-0.12.0.x86_64-linux
получилось 900 Мб.

Не думаю, что guixоделатели ожидают, что их пользователи будут настолько кульхацкерами, что начнут сами ставить иксы. Хотя кто их знает... Попробую в мане https://www.gnu.org/software/guix/manual/ про иксы почитать.

Но даже если допустить, что они не положили в исходную поставку иксы (хрен их знает, на самом деле), надо понимать, как их установить и прикрутить сверху кеды с КДМ-ом (или что там сейчас за него).
906560907186
#317 #906560
>>906555
Я отбежал.
#318 #906976
>>906443
Значение какого слова тебе непонятно?
#319 #907186
>>906555
Я посмотрел, иксов в установочном образе и правда нет, но в desktop.scm, который в руководстве предлагают использовать в качестве основы, прописаны и гном, и крыса.
https://www.gnu.org/software/guix/manual/html_node/Proceeding-with-the-Installation.html
931379935181
#320 #907298
А правда, что лисп без проблем можно использовать на квантовом компьютере?
907348
#321 #907348
#322 #909970
Серия статей про реализацию эмулятора CHIP-8 на общелиспе
http://stevelosh.com/blog/2016/12/chip8-cpu/
910309
#323 #910309
>>909970
Завидую ему, хотелось бы тоже иметь время на подобные эксперименты.
910565
#324 #910565
>>910309
Да просто признай, что у тебя давно уже не осталось сил и мотивации на подобные эксперименты, а не времени.
#325 #911249
бамп

какой фреймворк использовать для юнит-тестов?
912378912474
#326 #911304
кроссовер упорно который месяц ищет лиспера..
hh.ru/vacancy/19379442
при чем они нормальная контора, сейчас и вообще топчик чтобы работать удаленно..
911445
#327 #911445
>>911304

>Required Skills:


>C/C++ programming using MS Visual Studio IDE


Лиспера они ищут, хохо.
Жуткое легаси под Win'95, вот у них что.
#328 #912378
>>911249
Любой. Prove, например
#329 #912474
>>911249
Юнит-тесты не нужны.
915341915618
#330 #915341
>>912474
ты сейчас сам себя обоссал
915379
#331 #915379
>>915341
Как там в 00-ых?
#332 #915617
Поясните за Racket.
915627915698
#333 #915618
>>912474

>динамикопараша


>тесты нинужны


Уряяя
915625
#334 #915625
>>915618

> Юнит-тесты


> тесты


Почему ты такой тугой?
#335 #915627
>>915617
Поясняю.

Ну серьезно, хоть немного конкретизируй запрос. Ракетка - хорошо и замечательно, если в общих чертах.
915634
#336 #915634
>>915627
Ну, например, какие отличия от просто Scheme и всяких Common LISP. Еще интересует о среде Dr.Racket и ее удобстве.
915636915703
#337 #915636
>>915634
Common lisp - это друглй язык. Ракетка - одна из реализаций\диалектов схемки. Но на самом деле это больше, чем схемка - это еще и исследовательский проект, и многоязыковая среда для обучения програмированию. По поводу удобства - ну так возьми да скачай, попробуй. Ты чего аутируешь-то?
#338 #915698
>>915617
Схемка с кучей йоба-батареек, средой разработки из коробки, что снижает порог входа. Батарейки крутые, интересные, но кроме них больше ничего нет, и работает это счастье слишком медленно.
#339 #915703
>>915634

>какие отличия от просто Scheme


Про схему тебя пояснили

>и всяких Common LISP


а про всякие другие в шапке более-менее расписано.

>Еще интересует о среде Dr.Racket и ее удобстве.


Удобство - это не про неё, вот что мне кажется.
Емакс с гейзером лучше, хоть и чуть сложнее в освоении. Но до slime всё равно ни то, ни другое не дотягивает.
#340 #918515
Paradigms of Artificial Intelligence Programming - Peter Norvig есть у кого во читаемом формате? EPUB/FB2 было бы идеально.
921182
#341 #920272
О! Тут есть кто живой, или лисперы вымерли, так же, как и паскальщики? Короч, надо накактать нешарящему ну вот ни разу человеку рабочцю программу для коммонлиспа, которая делает ничего, кроме переименовывания внутри выражения sin на cos, sqrt же -- на abs. Буду очень благодарен за быстрый ответ.
920366920370
#342 #920366
>>920272
Но зачем?
#343 #920370
>>920272
Тебе же не тупой реплейс нужен? Верно?
#345 #921093
Пиздец, задали работу по этому, а никто не кодит, купить не у кого.
921165
#346 #921165
>>921093
Ну так запили, раз задали. В чем проблема-то?
921170
#347 #921170
>>921165
Я из тех, кто покупает и так сдает. В понедельник сдавать, будь это Паскаль или С++, то уже бы нашел, а это... Нашел одного человека, жду когда ответит. Если не ответит, то жопа.
#348 #921174
А что крутые хацкеры думают насчёт cl21? http://cl21.org/ Стоит-ли эта библиотека внимания, или это всё от лукавого?

Вброшу ещё один приятный лиспик на этот раз поверх питона: hylang: http://docs.hylang.org/en/latest/
921245
#350 #921245
>>921174

> More object oriented.


> Syntax for regular expression.


Ох...

Сколько уж этих редизайнов было.
922026
#351 #921249

> even Clojure doesn't have reader macro


Неправда, кстати.

Вообще, клу нужен нормальный новый стандарт, а не наколенные поделки, иначе никак не взлетит, имхо.
#352 #921871
>>921182
Спасибо, бро!
#353 #922026
>>921245

>Сколько уж этих редизайнов было.


И сколько? Что-то я ни одного не припоминаю.
#354 #922243
>>895603
>>895650
Для ИИ зделали пролог, а лисп язык общего назначения.
922640
#355 #922640
>>922243
Экспертные системы - не ИИ
#356 #931091
#357 #931379
>>907186
Бамп GuixSD, пользователи отзовитесь
931618
#358 #931618
>>931379
Почто призываешь нас?
935181
91 Кб, 1200x848
#359 #931729
Поясните за этот ваш лисп на андроиде. Вот это https://play.google.com/store/apps/details?id=com.sattvik.clojure_repl&hl=ru полноценный лисп? Или это https://play.google.com/store/apps/details?id=ar.com.playnu.clrepl
931754
#360 #931754
>>931729
Смотря для чего тебе. Если просто поиграться с реплом, то да, полноценные.
931758
#361 #931758
>>931754
Есть некий код для общелиспа http://www.fuzzylisp.com/downloads.html его можно запустить на этих приложениях?
931853
#362 #931853
>>931758
Первое только для кложуры, совсем другой язык.
А во втором - да, должно.
#364 #935181
>>931618

>Почто призываешь нас?


Поясните, как установить систему, вернее, как поменять на ней очищенное от блобов линукс-ядро на обычное "блобосодержащее" https://github.com/8p8c/my-guix/blob/master/packages/linux-nonfree.scm (у меня свободное ядро ругается на отсутствие драйвера под модем, соответственно не поднимается сеть)

Также, как в системе могут одновременно содержатся

>и гном, и крыса >>907186


и отсутствовать иксы?

Как поставить последние кеды, буду разбираться после того как осилю установку.
#365 #935195
>>875320 (OP)

>+ AllegroCL IDE упаси боже


Чем он плох?
935691
#367 #935278
Хули все опенсорсные реализации CL так дерьмово работают под виндой? Существуют ли годные библиотеки для современного OpenGL?
935280935399935691
#368 #935280
>>935278
Слишком маргинальное и малочисленное сообщество, на нормальные порты не хватает.
Ставь виртуалку и пердолься, много времени и нервов сбережёшь.
#369 #935399
>>935278
Потому что программисты не пользуются виндой.

капитан
#370 #935691
>>935195
А ты его не видел?
>>935278
А в чем проблема? Насколько я знаю, ccl и sbcl уже давным-давно нормально работают под виндой.

>Существуют ли годные библиотеки для современного OpenGL?


cepl, varjo, cl-opengl
#371 #935735
Как раз давеча наткнулся на это, с виндой, кстати:
https://www.youtube.com/watch?v=W3kfDKDSvM8
#372 #936075
>>879929

>Опыт программирования на Haskell в коммерческих проектах не менее 5 лет.


Какое изящное унижение борщехлебов.
936078
#373 #936078
>>936075
Блин, там на жабе 5 лет, а я повелся:
https://spb.hh.ru/search/vacancy?text=haskell&area=2
Интересно, что количество вакансий по Clojure и Haskell в России почти совпадает (22 и 20).
937202
#374 #937202
>>936078
...при этом кложурь раза в три моложе х-ля.
#375 #937206
Не пропустите, лиспаны: https://hh.ru/vacancy/19680371
937923
#376 #937851
Почему Guile не выводит результат только когда я ему интерактивно всё ввожу?
Когда скармливаю файл с тем, что я ввожу он просто его компилирует, запускает и не выводит результат.
Gambit делает тоже самое, разве что не компилирует.
ЧЯДНТ?
938780
#377 #937923
>>937206

>зп: 25 тысяч рублей. На испытательный срок (3 месяца) - 15 тысяч рублей.

938268
#378 #938268
>>937923

>Уровень зарплаты


>з/п не указана


wat
#379 #938780
>>937851
Потому что ты не выводишь результат?
#380 #940211
В Allegro CL до сих пор есть код Symbolics, забавно.
940265
#381 #940265
>>940211
В maxima тоже можно найти много старого кода.
#382 #941061
Кто-нибудь проходил эти курсы? http://franz.com/services/classes/
941229
#383 #941229
>>941061
Сомневаюсь. Вообще, не очень понимаю, зачем подобные курсы нужны.
#384 #944939
У кого-нибудь McCLIM устанавливается через Quicklisp? У меня происходит какая-то странная хуйня:

(ql:quickload 'mcclim)
To load "mcclim":
Load 1 ASDF system:
mcclim
; Loading "mcclim"
To load "trivial-gray-streams":
Install 1 Quicklisp release:
trivial-gray-streams

debugger invoked on a SB-INT:SIMPLE-STREAM-ERROR in thread
#<THREAD "main thread" RUNNING {10039CE5B3}>:
couldn't read from #<SB-SYS:FD-STREAM
for "socket 10.0.2.15:34237, peer: 52.222.157.198:80"
{10062CEA63}>:
Connection reset by peer

Есть ли вообще смысл использовать CLIM вместо биндингов ко всяким Qt?
944978
#385 #944978
>>944939
Поставил trivial-gray-streams вручную, теперь установка McCLIM стопорится из-за зависимости swank:

[package swank/sbcl];
; caught ERROR:
; READ error during COMPILE-FILE:
;
; The symbol "HOST-ENT-ADDRESS-TYPE" is not external in the SB-BSD-SOCKETS package.
;
; Line: 117, Column: 76, File-Position: 3633
;
; Stream: #<SB-SYS:FD-STREAM
; for "file /home/yaroslav/quicklisp/dists/quicklisp/software/slime-v2.19/swank/sbcl.lisp"
; {1007CEA9E3}>
;;
;; Error compiling /home/yaroslav/quicklisp/dists/quicklisp/software/slime-v2.19/swank/sbcl.lisp:
;; COMPILE-FILE returned NIL.
;;

То ли я ебанутый, то ли лыжи не едут.
944983
216 Кб, 1920x1015
#386 #944983
>>944978
Наконец-то получилось.
945042
#387 #945042
>>944983
В чем проблема была?
945852946153
#388 #945852
>>945042

Лыжи не ехали.
#389 #946153
>>945042
Я не копался в причинах, просто поставил вручную trivial-gray-streams и проигнорировал ошибку при установке swank. Наверное это какой-то баг в Quicklisp.
946164946168
#390 #946164
>>946153

>grep host-ent-address-type -iR .


>./sbcl-1.1.6/contrib/sb-bsd-sockets/name-service.lisp: (address-type :initarg :type :reader host-ent-address-type)


>./sbcl-1.3.14/contrib/sb-bsd-sockets/name-service.lisp: (address-type :initarg :type :reader host-ent-address-type)


>./sbcl-1.3.14/contrib/sb-bsd-sockets/defpackage.lisp: host-ent-address-type host-ent-addresses host-ent-addres


Похоже, у тебя просто старый sbcl.
#391 #946168
>>946153
И кстати, у меня с trivial-gray-streams из quicklisp'а mcclim работает.
#392 #951248
Стоит качать VS2017? Или там могут быть проблемы непофикшенные?
951250
#393 #951250
>>951248
Ой, тредами промахнулся. Я еще сижу и думаю чего все на лиспе так помешались.
951545
#394 #951545
>>951250

>сижу и думаю чего все на лиспе так помешались


Какой-то странноватый у тебя досуг: надумал себе чего-то и сидишь да размышляешь.
31 Кб, 604x459
#395 #951666
>>877179

>материалов на русском



в биореактор, быдло
952182
#396 #952182
>>951666
На родном языке-то всяко комфортнее воспринимать.
957985
Emacs #397 #952490
Хочу отключить один pizda-minor-mode, когда включен определенный major-mode и вместе с ним определенный xyu-minor-mode, как-то так можно?
952496
#398 #952496
>>952490
Добавь в xyu-minor-mode хук, который будет проверять условия и отключать pizda-minor-mode
952499
15 Кб, 350x350
Emacs #399 #952499
>>952496
О заебись получилось, я мажорному сначала хотел хук прописать, не срабатывало, а когда минорному все ок.
#400 #953471
есть ли стандартная функция генерации случайных числе(Bignum) в scheme? random работает с обычным интом
30 Кб, 200x237
#401 #954394
Читаю sicp. Смутило упражнение 1.7:
The good-enough? test used in computing square roots will not be very effective for
finding the square roots of very small numbers. Also, in real computers, arithmetic operations are almost always performed with limited precision. This makes our test inadequate for very large numbers. Explain these statements, with examples showing how the test fails for small and large numbers. An alternative strategy for implementing good-enough? is to watch how guess changes from one iteration to the next and to stop when the change is a very small fraction of the guess. Design a square-root procedure that uses this kind of end test. Does this work better for small and large numbers?
Вот процедура:
(define (sqrt x) (sqrt-iter 1.0 x))
(define (sqrt-iter guess x)
(if (goodenough? guess x)
guess
(sqrt-iter (improve guess x)
x)))
(define (average x y)
(/ (+ x y) 2))
(define (goodenough? guess x)
(< (abs (- (square guess) x)) 0.001))
(define (improve guess x)
(average guess (/ x guess)))
(Define (abs x)
(Cond ((< x 0) (- x)) (else x)))
(Define (square x) (* x x))


Почему тест фейлит на маленьких числах мне понятно, но почему "inadequate for very large numbers" я не понимаю. В распоряжении лишь онлайн интерпретатор, так как двачую с яблока. https://scheme.cs61a.org/editor.html и этот интерпретатор выдает "FormatException: Invalid integer" при попытке выполнить процедуру sqrt с оче большим числом, типа:
9999999999999999999999999999999999
Вроде с сильно большим числом должно зацикливаться?
Я переписал goodenought? как:
(define (goodenough? guess x)
(And
(< (Abs (- guess (improve guess x))) (/ guess 100000))
(< (abs (- (square guess) x)) 0.001)))
Тут иначе http://sicp.sergeykhenkin.com/2007/08/15/sicp-exercise-solution-1-7/ , приемлем ли мой вариант?
30 Кб, 200x237
#401 #954394
Читаю sicp. Смутило упражнение 1.7:
The good-enough? test used in computing square roots will not be very effective for
finding the square roots of very small numbers. Also, in real computers, arithmetic operations are almost always performed with limited precision. This makes our test inadequate for very large numbers. Explain these statements, with examples showing how the test fails for small and large numbers. An alternative strategy for implementing good-enough? is to watch how guess changes from one iteration to the next and to stop when the change is a very small fraction of the guess. Design a square-root procedure that uses this kind of end test. Does this work better for small and large numbers?
Вот процедура:
(define (sqrt x) (sqrt-iter 1.0 x))
(define (sqrt-iter guess x)
(if (goodenough? guess x)
guess
(sqrt-iter (improve guess x)
x)))
(define (average x y)
(/ (+ x y) 2))
(define (goodenough? guess x)
(< (abs (- (square guess) x)) 0.001))
(define (improve guess x)
(average guess (/ x guess)))
(Define (abs x)
(Cond ((< x 0) (- x)) (else x)))
(Define (square x) (* x x))


Почему тест фейлит на маленьких числах мне понятно, но почему "inadequate for very large numbers" я не понимаю. В распоряжении лишь онлайн интерпретатор, так как двачую с яблока. https://scheme.cs61a.org/editor.html и этот интерпретатор выдает "FormatException: Invalid integer" при попытке выполнить процедуру sqrt с оче большим числом, типа:
9999999999999999999999999999999999
Вроде с сильно большим числом должно зацикливаться?
Я переписал goodenought? как:
(define (goodenough? guess x)
(And
(< (Abs (- guess (improve guess x))) (/ guess 100000))
(< (abs (- (square guess) x)) 0.001)))
Тут иначе http://sicp.sergeykhenkin.com/2007/08/15/sicp-exercise-solution-1-7/ , приемлем ли мой вариант?
#402 #954600
>>875320 (OP)
Анончики, напомните, пожалуйста, как в Емаксе исполнить простейший код типа (* 2 2)?
954725
#403 #954725
>>954600
С-x e?
#404 #957282
Анон, есть один вопрос: Если бы тебе ресетнули все проффесиональные знания, и оставили лишь знания об источниках знаний, учебниках, курсах и подобном, какие учебники годнота, какие мусор. Какой список учебников по математике ты составил бы для средней школы? Просто я подозреваю, что я мыслю о математических процессах очень неэффективно и неправильно. Хочу поправить фундамент, так сказать. Особенно интересует есть ли годные англоязычные учебники по математике переведенные на русский?
957849957879957913
#405 #957849
>>957282
Почему именно англоязычные учебники переведенные на русский? Смысл чтения подобных учебников?
#406 #957879
>>957282
СССРовские учебники (ну или программы по обучению, или... не знаю как правильно выразиться) по математике всем миром признаны самыми лучшими. Сравниться может с совком в этом только Корея. Так что подумай, не лучше ли на русском изучать?
957918
84 Кб, 700x628
#407 #957913
>>957282

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

#408 #957918
>>957879

>всем миром признаны самыми лучшими


Не имеющий аналогов, суетливый, сверхманевренный, блохастный учебник по математике под редакцией Садовничего.
#409 #957985
>>952182
Только если ты английский не знаешь.
958154
#410 #958154
>>957985
Конечно, на уровне родного языка не знаю. Слишком уж это трудозатратно и неоправданно.
958191
#411 #958191
>>958154
Ну тут нужно говорить не что ты не знаешь английский на уровне родного. А что у тебя боли при чтении информации на английском.
Исправляется это только одним способом.
Иван #412 #960196
Common Lisp очень нравится, если я не ошибаюсь, хотя не ручаюсь, эти ребята его используют: www.konsom.ru/solutions, так что вещь стоящая. Scheme пользовался, действительно хорош разве что только для изучения, дальше пока не заходил. Подборка годная.
960220
#413 #960220
>>960196
Зачем ты это постоянно постишь?
#414 #960453
Наконец-то вкурил как работает CFFI, теперь могу пользоваться cl-sdl2 без баттхёрта.
960523
#415 #960523
>>960453
cl-sdl2 до сих пор настолько сырой, что без знания CFFI им невозможно пользоваться?
960621
#416 #960573
Что-то без продвинутой системы типизации (в том числе и с зависимыми типами) и без монад да чистоты функций как-то смотрится на лисп, как на Си-- какой-то мира функциональных языков.
960732
#417 #960621
>>960523
Ну, я не нашел другого способа изменять отдельные пиксели в поверхности. Документации нормальной, кстати, я тоже не нашел, при этом у более старого lispbuilder-sdl она есть.
960635
#418 #960635
>>960621
В sdl2 же выпилили поверхности, теперь вместо них текстуры. Разве нет? В любом случае, не лучше ли будет работать с пикселями через opticl?
960656
#419 #960656
>>960635
Поверхности никуда не делись. Меня интересует именно SDL сейчас.
#420 #960732
>>960573

>Си--


Форт уж тогда
#421 #961017
>>905703
Есть (recur). Если этого мало, то завезли уже давно континюэйшены https://github.com/cjfrisz/clojure-tco
963354
#422 #961019
>>906480
Устанавливал гикс на свой Доебан. Иногда он выключал мне компьютер после установки пакета. Надеюсь, уже починили
#423 #963354
>>961017
Костыли-костыльчики уровня cl-cont.
963355
#424 #963355
>>963354
А нет, до cl-cont даже не дотягивает.
#425 #963558
Кложа норм вариант для нюфани для вката в лисп? До этого писал на жаве и питоне, сейчас на жсе фронт пишу. Хочу функциональщины попробовать.
963694
#426 #963694
>>963558

>Кложа норм вариант для нюфани для вката в лисп?


Да, вполне, хоть и кложа немного особняком стоит в лисп-мире.
Но если же ты хочешь попробовать именно функциональщины, то лучше взять что-нибудь из ML-семейства, потому что лиспы больше про метапрограммирование, чем ФП
#427 #966232
Как и анон выше, вкатываюсь в кложур, и сука я горю от lein. Как эту хуйню поставить под винду? Это пиздец, то он его вообще не видит, то видит только из папки с jar-ом, то блять сново не видит. Примерный ход действий: скачал батник, который ставит 2.7 версию, прописываю в системыне переменныу путь C:\clojure-1.8.0\lein, так же пробовал тот путь, в который он ставится с помощью self-install, резуьтат один, видит его только если сижу в папке с jar архивом. Ну что за пиздец, как его юзать то ?
966340966556
#428 #966340
>>966232
После 16 попытки походу заработало. Хуй его знает что ему не нравится.
ЗЫ в конце переменной path нужны точка с запятой?
#429 #966556
>>966232

>Ну что за пиздец, как его юзать то ?


Ну сам виноват, нормальные люди под шиндошсом не сидят
966746
#430 #966746
>>966556
Как только на линуксе появится нормальный стек CAD/CAM систем, так сразу на него и перейду. А сейчас никому кроме кодеров ан фулл ставку и серферам интернетов он нахуй не нужен.
966963966966
#431 #966963
>>966746
Тогда не жалуйся.
#432 #966966
>>966746
Есть же виртуальные машины. Убунту сервер, объединённая папка с хост-системой, сеть в режим bridge и вперёд.
967002967005
#433 #967002
>>966966
Есть даже виртуальные контейнеры с ide и консолью, но нет хотим шиндоус
967007
#434 #967005
>>966966
Да пусть кактусами давится, жалко что ли?
#435 #967007
>>967002
Это я про Cloud9, отличная штука
#436 #969540
(define (accumulate op initial sequence)
(if (null? sequence)
initial
(op (car sequence)
(accumulate op initial (cdr sequence)))))
(accumulate + 0 (list 1 2 3 4 5))
В четвертой строчке op подчеркивается в Racket и пишет function call: expected a function after the open parenthesis, but found a variable.op является в данном процедуре +.Пример взят с SICP страница 122,процедура накопления.Почему не воспринимает op как + помогите,плиз.
#437 #969743
Все решилось.Нужно было выбрать Determine language from sourse и #lang racket .Опять забыл поменять.
#438 #975315
Бля, кто пояснит за repl в cgtqcvfrct (clojure). Это пиздец какой то, spc m e e(f), выдает ошибки, нихуя не вычисляется, вроде минуту назад все работало, написал еще пару функций - перестало. САм код:
(defn print-and-say-hello [name]
(print "Saying hello to " name)
(str "Hello " name))
(print-and-say-hello "Jeff")

(def person {:my-name "Dmitriy"
:las-name "Son-of-dog"
:age "23"})

(:my-name person)

(defn average [numbers]
(\ (apply + numbers) (count numbers)))

(average [10 20 30 40 50 60 70])

Халп, ткните носом, как последовательно получить результат работы всех этих функций
975317975549
#439 #975317
>>975315
cgtqcvfrct = spacemacs
#440 #975549
>>975315
У тебя слеш не тот в функции average
#441 #983882
Есть живые?
https://pastebin.com/qdXuq5kq
Есть такой пример из годной книжки clojure for brave. Но не могу понять, почему после recur remaining в if (empty? remaining-asym-parts) меняется содержимое хэша? ПОлучается что remaining заменяет remaining-asym-parts ? Почему?
983970
#442 #983885
Заодно, объясните, как работает recur в данном случае, у нас получается есть функция recur и два (чего?) параметра (ну вы поняли) remaining и final-body-parts. Каую роль играет каждый из параметров? По сути recur вроде как должен возвращать значение, но тут их два. Нипонятно.
#443 #983891
Вообще, куна нас кидает recur, в самое начало loop, к списку с аргументами, или сразу к телу функции (if в данном случае)?
#444 #983893
Так, я вроде смекнул что recur возвращает два значения, которые соотв. присваиваются двум аргументам loop
983900
#445 #983900
>>983893
recur - просто рекурсивный вызов текущей функции. Костыль такой, потому что jvm и потому что не осилили.
#446 #983970
>>983882

> clojure for brave


Поясни за эту книжку плз, годная?
984236984269
#447 #984236
>>983970
Годная, куда годнее немногочисленных изданий на русском. Если читать онлайн, то еще и бесплатная. http://www.braveclojure.com
984258
#448 #984258
>>984236
Ахуенно, ушел качать емакс и учить кложу. Спасибо за наводку, анон.
984313
#449 #984269
>>983970
ахуенная, поверхностная немного но прикольный стиль изложения. Мне покатила как первая книга по кложе (у меня уже был бекграунд в фп)
#450 #984313
>>984258
spacemacs
#451 #984410
Аноны, что я делаю не так? https://pastebin.com/DNJbZD5y
#452 #985277
Я, каталог-кун, заявляю
что я повелся на бессмысленую пропаганду лиспоблядей
и изучил етит их лисп
знание лиспа никак не помогло мне расширить кругозор или улутшить свой стиль программирования
лучше уж хорший учебник Prolog-а почитать с разбором задач
чем тратить свое время на бесполезное функциональное програаирование
краткий словарь:
лямбда-функция как параметр
функция высшего порядка- функция в которую передается функция или которая возврвщаяет функцию
замыкание-то же что и лямбда
мондада-массив
985334989103
#453 #985334
>>985277
Доблбоеб спалился. Если ты прочел на вики что такое функция высшего порядка то ты еще не выучил фп, да ты и прочесть то не смог -> >замыкание-то же что и лямбда
Я бы попросил тебя написать простейшую программку, что бы доказать, что ты не строчки на лиспе не написал, но я и так это знаю. Уебывай.
985350
#454 #985350
>>985334
Нюфаня, please.
#455 #985734
>>875320 (OP)
Ебанный язык свел двачера с ума.
https://lenta.ru/news/2017/04/21/sadkov/
985742985841
#456 #985742
>>985734
Потыкал палочкой шизика.
#457 #985841
>>985734
Не язык, а политач
#458 #989103
>>985277

> лучше уж хорший учебник Prolog-а почитать с разбором задач


> чем тратить свое время на бесполезное функциональное програаирование



Поэтому во все мейнстримные языки со всей силы тащат ФП-концепции, начиная с лямбд и ФВП и заканчивая трансдьюсерами, монадами и прочими сложными словами.

> лямбда-функция как параметр



Обосрался

> замыкание-то же что и лямбда



Обосрался[2]

> мондада-массив



Обосрался[3]
989208
#459 #989208
>>989103
Ловите нюфака пока не убежал.
#460 #990425
Кложуране и не только, есть два вектора, если к ним применить (map list vec1 vec2), то он вернет сгруппированные по индексам значения из двух векторов, но что если вместо второго вектора дан вектор векторов, а нужно сгруппировать первый вектор с каждым из вложенных векторов
(map list vec1 vec2.1)
(map list vec1 vec2.2)
(map list vec1 vec2.3)
Как реализовать без циклов?
Если хуево объяснил, то вот код https://pastebin.com/HLARTkNQ
Нужно реализовать data-table, в Hint перечислены функции, которые нужно использовать.
991129
#461 #991129
>>990425
[code]
(let ((keys (table-keys tbl)))
(map (fn (%) (data-record keys %)) (rest tbl)))
[/code]
Кложи не знаю, но видимо как-то так.
А вообще, кложурастов тут практически не обитает, потому что кложа - не лисп.
991456991496
#462 #991456
>>991129
Работает, спасибо.

>потому что кложа - не лисп


Зато у нас есть [] и {}, признайся, ты тоже хочешь.
А что считается топовым лиспом? Где то тут видел, но сейчас не нашел, кто то писал, мол, как там вы без фича-нейм в cl и кложур, но вроде кроме рокета больше ничего и нет.
991470
#463 #991470
>>991456

>Работает, спасибо.


>>потому что кложа - не лисп


>Зато у нас есть [] и {}, признайся, ты тоже хочешь.


В общелиспе они реализуются в несколько строк, но это не нужно, ибо солянка из разномастных скобок плохочитаема. Кстати, в кложе так сделать уже не получится.

>А что считается топовым лиспом?


Общелисп, конечно.

>Где то тут видел, но сейчас не нашел, кто то писал, мол, как там вы без фича-нейм в cl и кложур


Догадываюсь, схемер продолжениями хвалился. Но у них больше-то ничего и нет, в то числе и сообщества.
#464 #991496
>>991129
Тут не обитает, а свой тред-то у них есть? Куда податься кложуристу-ньюфагу?
991503
#465 #991503
>>991496
В жава-тхренд либо в жс
#466 #994268
Я вот хипстер с подворотами неофит от пограмирования и только недавно вкатился на первую работу, и вот решил на волне хайпа посмотреть все таки что такое функциональное программирование. Услышал про SICP, пищу первые хеллоувроды на SCHEME и вот мои первые вопросы:
1. Собственно, а зачем лиспы нужны? Ну т.е. какова сфера применения? Академические исследования? Софт?
2. Часто ФП еще называют декларативным программированием, но я так и не понял что оно такое. Т.е. вот например ф-я квадрат на пхп, или императивный стиль:
function square($x) {
return $x $x;
}
На лиспе оно как-то так:
(define (sqaure x) (
x x))
Но в чем глобальное отличие? Типа в первом - я говорю интерпритатору что и как сделать, а во втором - в общих чертах набрасываю? Нихуя не понимаю в общем.
3. Почему под такие вещи не пишут удобных ide?
4. На лиспах есть вообще удобные фреймворки, или сорт оф? Ну типа как ларавель на пхп. Допустим если я захочу на лиспе написать блог - что мне для этого требуется?
994282994414
#467 #994282
>>994268
ФП это не декларативное. Декларативное это что-то типа пролога (с натяжкой). Его суть в том тчо ты не описывешь порядок действий, а просто вкидываешь системе начальные данные и говоришь "зделай заебись", а она дальше ебется.
994302994331
#468 #994302
>>994282
Интересно, значит я хуйни наслушался.
#469 #994331
>>994282
Про лисп чего только не говорят, и что он ФП, и что декларативный. На самом деле что из него сделаешь то и будет. Это метаязык.

На лиспе благодаря макросам можно запилить язык декларативного программирования под свою область.
994333
#470 #994333
>>994331
Скажи, анончик, а на лиспе можно работу найти нормальную?
994337994356994425
#471 #994337
>>994333

>язык без синтаксиса


>найти работу нормальную

994341
#472 #994341
>>994337
Не понимаю о чем ты говоришь, у лиспа так то есть синтаксис.
994343
#473 #994343
>>994341
Я кстати охуеваю от синтаксиса, у того же scheme его за час можно выучить. Алсо еще вопрос, я так понял у ФП языков как таковых нет веще навроде переменных, типов данных? Т.е. в (define (sqaure x) ( x x)) - sqaure это просто ссылка на память?
994385
#474 #994356
>>994333
Clojure
994358
#475 #994358
>>994356
Можешь по-подробней пояснить за кложу. Я так понимаю что не просто кложей стак не ограничится?
994360
#476 #994360
>>994358
скалу знаешь? у скалы есть скаласкрипт, который по сути является джаваскриптом с синтаксисом скалы и не совместим с самой скалой. у кложура есть подобное. кложур, как и скала, работает на жвм со всеми вытекающими (экосистема етц).

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

кложа не очень похожа на обычные лиспы, у нее синтаксис посложнее и еще куча мелких отличий от "обычных" лиспов, а еще в ней очень хорошо видно то, что она ориентирована на jvm.
994363
#477 #994363
>>994360
Ну я сейчас пишу на жсе, и ищу еще какой нибудь интересный фп язык, на котором в будущем возможно будет найти работу и дополнить мой стэк. Как думаешь кложа под эти задачи подойдет?
994364
#478 #994364
>>994363
вполне
994365
#479 #994365
>>994364
правда я не видел чтоб у нас особо вакансий по ней было.
#480 #994385
>>994343
Так, короче. Во-первых, лишпы по сути не более ФП, чем какой-нибудь JS. Кроме кложи, она чуть ближе к функциональщине за счёт иммутабельности по умолчанию. Но все равно, в принципе в этих хипсторских экмаскриптах есть всё функциональное что есть в лиспах (по крайней мере из коробки, ходят слухи что с помощью макросов из лиспа можно сделать хоть C++, хоть Haskell, но на практике я такого колдунства не встречал).
Дальше, труЪ-ФП язык, из того что хоть как-то близко к мейнстриму - это Haskell. Переменные в функциональщине конечно есть, как и типы данных. Просто переменные эти неизменяемы (и объекты, на которые они ссылаются, тоже, короче, чистое ФП вообще не подразумевает никакого изменяемого состояния). А на счёт типов - труЪ-функциональный Haskell как раз известен своей охуенно мощной системой типов, которая даёт на ротан всяким там джавкам и шарпам и концепции из которой нет-нет да перекатываются в вроде как даже императивщину, отличный пример - Rust (всё жду когда в него HKT завезут, вот тогда заживём!).
Вообще, если попытаться максимально коротко описать основные принципы функционального стиля, это:

1. Иммутабельность. Почему? Да потому что часто оно получается, во-первых, более предсказуемо, во-вторых, безопаснее при работе с многопоточностью, асинхронностью, вот этим вот всем. Если интересно как те же хаскеллисты избегают во многих случаев постоянного копирования данных при каждой операции, почитай про персистентные структуры данных.

2. Отсутствие сайд-эффектов. В принципе изменение состояния тоже можно считать сайд-эффектом. Суть в том, что в чистом ФП функции формально не пишут ничего в консоль, не меняют файлы, не выводят графику. В общем, не производят никаких эффектов - просто вычисляют значение. Понятно, что программа должна производить сайд-эффекты, поэтому суть ФП в том чтобы их инкапсулировать (т. е. отделить "мухи от котлет", сайд-эффекты от основной логики вычислений). В Haskell это (и не только это на самом деле) делают с помощью тех самых монад. В не таких труЪ ФП языках как Haskell такого жёсткого разделения нет, просто большую часть функций стараются логически отделять функции, работающие с внешним миром, от функций, реализующих какую-то логику вычислений.

3. Функции как объекты первого класса (т. е. ссылку на функцию можно передавать как любое другое значение), функции высшего порядка (это когда функции принимают другие функции в качестве аргументов и/или возвращают функции) и их активное использование. То есть например чтобы обработать список в функциональных языках используют не циклы (потому что циклы используют изменяемое состояние и вообще императивны), а функции высшего порядка. Функция map принимает функцию, применяет её к каждому элементу списка и возвращает список результатов. То есть map(f, [1, 2, 3]) это то же самое, что [f(1), f(2), f(3)]. В этом и проявляется "декларативность" - мы не говорим, "взять первый элемент, применить к нему функцию, добавить его в возвращаемый список, увеличить счётчик на 1", мы как бы говорим "в нашем новом списке каждый элемент - результат применения функции к соответствующему элементу в старом списке". И теоретически компилятор того же Haskell вправе применять их не по порядку (от первого к последнему), а в каком-то другом порядке или вообще параллельно. Короче говоря, мы описываем что хотим получить, а способ получения этого результата может в какой-то мере отдаваться на откуп компилятору. В императивных языках компилятор порядок вычислений не меняет, поэтому в императивных языках под декларативностью функционального стиля понимается не то что технически конкретный способ получения результата неизвестен, а то, что детали реализации инкапсулированы и код всё-таки выглядит более декларативно, чем при использовании императивных циклов. Хотя бы чисто визуально.

Потом, есть ряд абстракций, которые все так или иначе связаны с предыдущими пунктами и которые прижились в ФП-сообществе. Ну типа там всякие функторы, монады, трансдьюсеры, вот это вот всё. На самом деле всё это довольно простые вещи, это как ООП-шные паттерны проектирования, только из мира ФП.

А в коде "(define (twice x) (+ x x)" x - никакая не ссылка на память, конечно же (ФП стремится максимально асбтрагироваться от таких низкоуровневых понятий, как "ссылка на память"). Это обычная переменная с динамическим типом, как и в любом другом динамически типизированном языке, вроде JS, Python, PHP, Ruby и т. д. и т. п. То есть аналог на JS будет "function twice(x) { return x + x; }" или "const twice = x => x + x;". (я заменил square на twice и звёздочку на + потому что звёздочку здешняя разметка съедает).
#480 #994385
>>994343
Так, короче. Во-первых, лишпы по сути не более ФП, чем какой-нибудь JS. Кроме кложи, она чуть ближе к функциональщине за счёт иммутабельности по умолчанию. Но все равно, в принципе в этих хипсторских экмаскриптах есть всё функциональное что есть в лиспах (по крайней мере из коробки, ходят слухи что с помощью макросов из лиспа можно сделать хоть C++, хоть Haskell, но на практике я такого колдунства не встречал).
Дальше, труЪ-ФП язык, из того что хоть как-то близко к мейнстриму - это Haskell. Переменные в функциональщине конечно есть, как и типы данных. Просто переменные эти неизменяемы (и объекты, на которые они ссылаются, тоже, короче, чистое ФП вообще не подразумевает никакого изменяемого состояния). А на счёт типов - труЪ-функциональный Haskell как раз известен своей охуенно мощной системой типов, которая даёт на ротан всяким там джавкам и шарпам и концепции из которой нет-нет да перекатываются в вроде как даже императивщину, отличный пример - Rust (всё жду когда в него HKT завезут, вот тогда заживём!).
Вообще, если попытаться максимально коротко описать основные принципы функционального стиля, это:

1. Иммутабельность. Почему? Да потому что часто оно получается, во-первых, более предсказуемо, во-вторых, безопаснее при работе с многопоточностью, асинхронностью, вот этим вот всем. Если интересно как те же хаскеллисты избегают во многих случаев постоянного копирования данных при каждой операции, почитай про персистентные структуры данных.

2. Отсутствие сайд-эффектов. В принципе изменение состояния тоже можно считать сайд-эффектом. Суть в том, что в чистом ФП функции формально не пишут ничего в консоль, не меняют файлы, не выводят графику. В общем, не производят никаких эффектов - просто вычисляют значение. Понятно, что программа должна производить сайд-эффекты, поэтому суть ФП в том чтобы их инкапсулировать (т. е. отделить "мухи от котлет", сайд-эффекты от основной логики вычислений). В Haskell это (и не только это на самом деле) делают с помощью тех самых монад. В не таких труЪ ФП языках как Haskell такого жёсткого разделения нет, просто большую часть функций стараются логически отделять функции, работающие с внешним миром, от функций, реализующих какую-то логику вычислений.

3. Функции как объекты первого класса (т. е. ссылку на функцию можно передавать как любое другое значение), функции высшего порядка (это когда функции принимают другие функции в качестве аргументов и/или возвращают функции) и их активное использование. То есть например чтобы обработать список в функциональных языках используют не циклы (потому что циклы используют изменяемое состояние и вообще императивны), а функции высшего порядка. Функция map принимает функцию, применяет её к каждому элементу списка и возвращает список результатов. То есть map(f, [1, 2, 3]) это то же самое, что [f(1), f(2), f(3)]. В этом и проявляется "декларативность" - мы не говорим, "взять первый элемент, применить к нему функцию, добавить его в возвращаемый список, увеличить счётчик на 1", мы как бы говорим "в нашем новом списке каждый элемент - результат применения функции к соответствующему элементу в старом списке". И теоретически компилятор того же Haskell вправе применять их не по порядку (от первого к последнему), а в каком-то другом порядке или вообще параллельно. Короче говоря, мы описываем что хотим получить, а способ получения этого результата может в какой-то мере отдаваться на откуп компилятору. В императивных языках компилятор порядок вычислений не меняет, поэтому в императивных языках под декларативностью функционального стиля понимается не то что технически конкретный способ получения результата неизвестен, а то, что детали реализации инкапсулированы и код всё-таки выглядит более декларативно, чем при использовании императивных циклов. Хотя бы чисто визуально.

Потом, есть ряд абстракций, которые все так или иначе связаны с предыдущими пунктами и которые прижились в ФП-сообществе. Ну типа там всякие функторы, монады, трансдьюсеры, вот это вот всё. На самом деле всё это довольно простые вещи, это как ООП-шные паттерны проектирования, только из мира ФП.

А в коде "(define (twice x) (+ x x)" x - никакая не ссылка на память, конечно же (ФП стремится максимально асбтрагироваться от таких низкоуровневых понятий, как "ссылка на память"). Это обычная переменная с динамическим типом, как и в любом другом динамически типизированном языке, вроде JS, Python, PHP, Ruby и т. д. и т. п. То есть аналог на JS будет "function twice(x) { return x + x; }" или "const twice = x => x + x;". (я заменил square на twice и звёздочку на + потому что звёздочку здешняя разметка съедает).
994423
#481 #994414
>>994268

>1. Собственно, а зачем лиспы нужны? Ну т.е. какова сфера применения?


>Академические исследования? Софт?


Нет, блядь, балет. Какая ещё может быть сфера применения у языка программирования общего назначения?

>2. Часто ФП еще называют декларативным программированием, но я так и не понял что оно такое.


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

>3. Почему под такие вещи не пишут удобных ide?


SLIME. Было бы хорошим вопросом: почему для других языков ничего подобного рода не написали

>4. На лиспах есть вообще удобные фреймворки, или сорт оф? Ну типа как ларавель на пхп. Допустим если я захочу на лиспе написать блог - что мне для этого требуется?


Есть и не один.
994421
#482 #994421
>>994414
Спасибо. У меня вообще сложилось впечатление, буд-то лисп это как глина из которой разработчик лепят что нужно для своих задач, не? Пост, есть что-то как slime под схем? Я просто по сикп хочу заниматься. Или это мне надо гуглить все эти плагины для емакс?
994424
#483 #994423
>>994385

>Кроме кложи


Кложефанат незаметен. Ладно бы схему в пример привел, но не этот же недоязычок для скриптования явы, в котором даже tco нет.

>ходят слухи что с помощью макросов из лиспа можно сделать хоть C++, хоть Haskell, но на практике я такого колдунства не встречал


Плохо смотрел. Вот сишка, например https://github.com/y2q-actionman/with-c-syntax/blob/master/README.org
#484 #994424
>>994421

>У меня вообще сложилось впечатление, буд-то лисп это как глина из которой разработчик лепят что нужно для своих задач, не?


Да, эта одна из его характерных фишек.

>Пост, есть что-то как slime под схем?


Slime только для общелиспа, у схемы geiser. Рекомендую просто взять спейсмакс, там уже всё настроено.
#485 #994425
>>994333
Можно, но сложно, потому что вакансий мало, а те, что есть, в основном с высокими требованиями.
994429
#486 #994429
>>994425
Можно пару примеров таких вакансий, чтобы примерно уровень понять?
994431
#487 #994431
>>994429
Из того, что сходу вспоминается, - grammarly. Вроде даже по СНГ искали лиспера
994449
#488 #994449
>>994431
Спасибо, анончик. А на той же кложе может писать программы общего назначения, которые обычно пишутся на питоне, или пока маловатое библиотек для этого? Или может он просто не подходит для этого?
994470994595994642
#489 #994470
>>994449
Из кложи ведь можно использовать библиотеки для джавы. Думаешь их не достаточно?
994472
#490 #994472
>>994470
Ты прав, спасибо, что ответил на мои вопросы, пойду осваивать.
#491 #994595
>>994449
Все что можно писать на джаве можно писать на кложе.
#492 #994642
>>994449

>которые обычно пишутся на питоне


Нет, конечно. Ты бы согласился заменить весь используемый питонософт жавой? Сомневаюсь.

>или пока маловатое библиотек для этого?


Да библиотек-то достаточно, но есть у кложи один фатальный недостаток, из которого следует куча недостатков и в дизайне самого языка, и в его реализации, и сообществе, и, собственно, в библиотеках. И называется он JVM.
#493 #994683
https://repl.it/languages/scheme кому интересно, нашел удобный онлиан интерпритатор лиспа. Есть даже возможность зарегаться и сохранять свои хеллоуворды. Мне пока для подделий из первой главы сикпа хватает.
все то же неофит без подворотов
994889
#494 #994889
>>994683
https://racket-lang.org/download/
На, не мучайся.

>интерпритатор лиспа


Схемы. Лиспом обычно common lisp называют.
997529
#495 #997529
>>994889
Интересно, а кто-то умудрился запустить ту же схемку на винде в нормальной среде разработки? Или никсы + емакс наше все? Я пробовал в эклипсе, но плагины так и не заработали.
997536
#496 #997536
>>997529

>Интересно, а кто-то умудрился запустить ту же схемку на винде в нормальной среде разработки?


Да, емакс работает. Алсо, для задачек их сикпа и дррэкет сойдет

>Я пробовал в эклипсе, но плагины так и не заработали.


Они давно протухли, ибо какой лиспер захочет поддерживать плагин на яве для неюзабельного монстра
997539
#497 #997539
>>997536

>для задачек их сикпа и дррэкет сойдет


Да все равно пиздец как неудобно после няшных иде от жетбрейнс.

>Да, емакс работает.


А есть какая-то инструкция как запустить емакс + спейсмакс на винду? Ну для таких неофитов, кому само слово емакс это сильное колдовство. Мне вообще так что бы изкоробки.
997542
#498 #997542
>>997539
http://spacemacs.org/
Распаковываешь в .emacs.d в домашней директории и просто запускаешь емакс, выбираешь нужные слои и пользуешься. Кстати, там же можно попробовать спейсмакс прямо в браузере. Непонятно зачем и как, но оно работает.
Емакс можешь взять отсюда https://sourceforge.net/projects/emacsbinw64/files/release/
#499 #1003394
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 20 июля 2017 года.

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

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