Это копия, сохраненная 15 апреля в 02:35.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
{Основные диалекты}
:: Common Lisp - разрабатывался как промышленный язык, пригодный для широкого спектра применения, из-за чего имеет достаточно объемную спецификацию. Является мультипарадигменным (процедурщина, функциональщина, ооп (CLOS)), с сильной, динамической типизацией. Есть опциональная декларация типов и частичный их вывод в некоторых реализациях.
Описание особенностей: http://habrahabr.ru/post/143490
Основные реализации:
- свободные: SBCL (нативный код), Clozure CL (нативный код), ECL (через сишку), Clisp (байт-код; небольшой размер образа; похоже, заброшен), Clasp (LLVM; ориентирован на интероп с C++), ABCL (байт-код JVM), CMUCL, GCL.
- коммерческие: LispWorks, Allegro CL, Scieneer CL, mocl
:: Scheme - это минималистичный лисп, пригодный в основном для обучения, исследований. Наиболее практичными реализациями являются GNU Guile и Chicken Scheme.
:: Racket - развитие PLT Scheme. Racket включает в себя много подъязыков (typed racket, lazy racket, frtime racket, Scheme стандартов r5rs и r6rs).
:: Clojure - для тех, кто считает, что из смеси явы и лиспа может получиться что-то хорошее, или тех, кто интересуется креольскими языками, есть отдельный тред. Тред утонул, дом сгорел, отец-подлец бросил, поэтому поживёт сиротка пока у нас. Мальчик со странностями, но хороший, не обижайте. Шапка треда здесь https://rentry.co/9ve9d
{Scheme}
::: Учебники
- SICP :: https://mitpress.mit.edu/sites/default/files/sicp/index.html
- The Scheme Programming Language (R6RS) :: https://www.scheme.com/tspl3
- Практика :: https://exercism.io/my/tracks/scheme
::: Документация
- http://web.mit.edu/scheme_v9.2/doc/index.html
::: Остальное
- https://github.com/theodesp/awesome-scheme
- https://github.com/schemedoc/awesome-scheme
{Racket}
::: Учебники
- HtDP :: https://www.htdp.org/
- Racket Guide :: https://docs.racket-lang.org/guide/index.html
- Beautiful Racket: https://beautifulracket.com/
- Остальные :: https://racket-lang.org/books.html
::: Документация
- https://docs.racket-lang.org/
::: Библиотеки
- https://github.com/avelino/awesome-racket
- https://pkgs.racket-lang.org/
::: Среда разработки
- DrRacket :: https://docs.racket-lang.org/drracket/
- Online :: https://www.jdoodle.com/execute-racket-online/
{Common Lisp}
::: Учебники
- Cookbook :: https://lispcookbook.github.io/cl-cookbook/
- PCL :: http://lisper.ru/pcl/
- OnLisp :: http://www.paulgraham.com/onlisptext.html
::: Документация
- http://www.lispworks.com/documentation/HyperSpec/Front/index.htm
- https://cl-community-spec.github.io/
::: Библиотеки
- https://awesome-cl.com/
- https://ultralisp.org/
- https://lisp-journey.gitlab.io/blog/state-of-the-common-lisp-ecosystem-2020/
::: Среда разработки
- https://lispcookbook.github.io/cl-cookbook/editor-support.html
Предыдущий тред: >>2395633 (OP)
>Хуясе. Никогда не думал, что встречу кого-либо с такой точкой зрения.
>А как без режимов? Ctrl+Alt+Shift+Super+Жопа+Аллах+... на каждый чих?
А откуда у тебя столько комбинаций то взялось? Основных аккордов для работы с текстом не больше чем у вима получается, а что-то очень редкое можно и на Ctrl+Alt+Аллаха повесить.
Вообще команды вызываю через Alt+x
>Clisp (байт-код; небольшой размер образа; похоже, заброшен)
>похоже, заброшен
>Current version:2.49 (2010-07-07)
На первый взгляд - да, но на самом деле - нет: https://gitlab.com/gnu-clisp/clisp/-/commits/master
Исправьте в шапке следующего треда.
Хз. Я пользуюсь распечатанной на А4 и подшитой нитками.
Просто неприятно лезть в аккорды для каких-то операций. Мне Ctrl-F/D или Ctrl-B/U то неприятно нажимать, а тут речь идёт про постоянное использование для ЛЮБОЙ комманды редактору. Пизда.
Можешь считать предыдущий пост гиперболой.
Вимовские SPC m c f не многим удобнее емаксовских C-c C-c, так что вкусовщина
>SPC m c f
Что? Я не знаю такой комманды. "m" не юзаю, потому что в больших файлах не копаюсь - разбиваю на файлы поменьше.
"f" юзаю только когда пинг > 120 и редактирование - это адская пытка. А "c" - это бро.
Алсо, продолжу говорить то, что мне говорили во время "индоктринирования":
Вим попроще для рук, они устают меньше.
>Что? Я не знаю такой комманды.
Это из дум емакса. Сочетание для sly-compile-defun. Я просто не помню, какое сочетание в vlime, но уверен, что похожее.
>Вим попроще для рук, они устают меньше.
Ты либо каждый день вим переписываешь, что у тебя руки устают?
>Я же примитивный дикарь, что использует чистый текстовый редактор.
Соболезную. Не удивительно, у тебя руки устают.
>В основном кресты
Соболезную вдвойне.
Страшно заоптимизированное, многопоточное решение на cl-ppcre https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/regexredux-sbcl-4.html у меня отрабатывает за 29с (~55с процессорного времени)
а наивное, однопоточное на сабже https://dpaste.org/qpFOH - за 11c
Жаль проц avx не поддерживает, simd-версия должна быть ещё шустрее
Да, в дум емаксе.
Как зачем? Тянки боятся, быдло течёт.
Некрасиво отвечать вопросом на вопрос. К тому же, со мной то как раз все понятно. Я датасаентист, используюсь в крупной компании. Нужен жене. А лисп?
Да причем тут крупная компания. Людям-то, людям ты зачем нужен?
А ты не приписывай мне то, чего я не говорил. Я хотел узнать от антонов конкретные примеры, раз есть целый тред, то кто то же наверное использует лисп в практике.
На, утоли своё любопытство https://github.com/azzamsa/awesome-cl-software
Только не надо треллить. Вас таких в каждом треде по десятку заваливается.
>А кем работаешь, если не секрет?
В НИИ попердываю и физическим моделированием занимаюсь.
Но это
>тот же Guile использую в качестве встаиваемого языка для своих приложений.
никак не связано с работой. Это я для своих личных проектов использую.
Ананимас Про.
>Тогда вот https://linedit.common-lisp.dev/
https://github.com/sharplispers/linedit/blob/0561c97dfca2f5854fcc66558a567a9875ddcb8f/main.lisp#L82
> Results are unspecified if ... READTABLE is not the standard readtable.
Конечно, можно говорить что мол, хуйня это всё, и вообще, чё в первый раз на UB уповаешь перекрестившись? Однако что-то мне больше тебе хочется продолжить пилить свои велосипеды. Мне это надо.
Тут аналогично, вот это вроде бы не форк
https://gitlab.common-lisp.net/linedit/linedit/-/blob/master/main.lisp#L80
>>2682625
Что-то мне подсказывает, что они просто защищают тебя от выстрела в ногу.
https://gitlab.common-lisp.net/linedit/linedit/-/blob/master/main.lisp#L106
Да, похоже на то. Они определяют свои макросы чтения для команд репла типа :cmd arg1, о чем и предупреждают
Нигде, никому не нужен тк как даже автор лиспа признал под конец что это неюзабельная скобочная дрочильня.
Кредит дадут, если скажу, что лиспер?
>Объясните причину ненависти к кложе?
Упоротые евангелисты. Видимо, всё дело в том, что изначально ЦА языка были ява-программисты, а они дикие и их очень легко впечатлить. Вот и носятся с кложей, как с чудом, хотя там ничего особенного нет, язык-компромисс.
Ну только он в 100 раз удобнее чем большинство других лиспов и по функциональности не сильно отстает от хаскеля.
>Типикал коммонлишпер - ненавидит кложу, ибо не тру лисп. Ненавидит другие ЯПы, ибо не тру лисп. Ненавидит залетных анонимов, ибо не тру лисп. Ненавидит печеньки, щеночков и Иисуса Христа, ибо не тру лисп. Ненавидит ТЕБЯ, ибо не тру лисп.
Отстань, чувак. Ты сейчас сам же проиллюстрировал ответ на свой вопрос. Именно за это вас и не любят.
Кого нас? Ты так и не представил никаких адекватных аргументов, а начал с обсуждения комьюнити.
Всё-всё, ты победил, кложа - лучший язык, Хикке - гений, а комьюнити - самое дружелюбное и нисколько не назойливое.
Всё так.
А почему ты на nix не сидишь? Всё дело в одобрении от Штольмана, то что это для него труъ дистрибутив?
Guix попросту удобнее и немного фичастее, но пакетов меньше, да.
Но тебе же похуй, ты просто забыл принять свои таблетки.
Почитай рассылку, блокировоал хостер сборочной фермы. Он развёрнут на мощностях какого-то университета.
Имакс - это desktop environment, а не текстовый редактор.
Хз, очень редко торможусь на ошибках, которые бы могла словить система типов (тем более а-ля го или джава). Зато вот когда после кложуры пишешь на го, то часто зарываешься на дохуя времени из-за того, что вместо наиболее логичной формы данных приходится делать нечто, что влезет в тайпчекер.
Попробуй писать спеки или хотя бы просто примеры входа\выхода для функций (по ним потом можно автосгенерить спеки).
>У вас просто пригорает с того что ваши коммон лиспы и схемы никому не нужны?
В основном да. Еще есть такой нюанс, что некоторые чуваки пробуют КЛ и в общем-то на нем и останавливаются, все остальные языки как правило смотрят поверхностно и сравнивают с КЛ (разумеется, делая выводы не в пользу остальных языков). Ну и атмосфера в КЛ-комьюнити своеобразная, это тоже дает свой отпечаток.
капча: данные, трустори, я не троль
> Еще есть такой нюанс, что некоторые чуваки пробуют КЛ и в общем-то на нем и останавливаются, все остальные языки как правило смотрят поверхностно и сравнивают с КЛ
Это правда, лисперы - те ещё фанатики.
Я даже знаю одного такого. Местный любимец, кстати. Со времён журнала fprog если кто-то здесь такой помнит этим болеет и активно пытается заразить других: https://github.com/tonsky
Одни уже который десяток лет обшивают давно сгнившего дедулю свежими кусками мяса, чтобы показать окружающим, что он всё ещё аполлон. Он продолжает гнить, куски отваливаются, но они этого будто не замечают.
У других пока стадия отрицания. Они ещё не могут поверить, что он тоже ВСЁ. Ведь каких-то лет 8-10 назад он был молод и полон сил, пил смуззи и расчесывал бороду, а сейчас распух и плохо пахнет. Но они продолжают успокаивать себя, что тот просто растолстел от самых высоких зп в мире, а дурной запах - норма для jvm.
А третьи вообще самые особенные. Они и не думают никого оживлять, просто носятся с пластмассовым скелетом из кабинета биологии, крича на каждом углу, что мясо не нужно, оно только утяжеляет.
Я был в каждом из перечисленных сообществ, и даже с этими... с кыштымсим пиколиспом, но пусть это останется нашим секретом. И скажу вам, не тратьте своё время, бросайте эту хуйню. В мёртвом нет жизни. Тащите живое, соберем из дедули Аполлона!
>>перемещение курсора даже не на home row
Так оно же на hjkl (а он на home row). Или я чёт не понял?
Тащемта w, b, e и прочие штуки действительно не на home row. Но они и не всегда нужны.
В общем, скачал СИКП, чтобы по вечерам палочкой трогать и встал вопрос о выборе редактора. Все в интернете советуют ставить емакс, потому что охуенная интеграция с REPL-ом, расширяемость и т.д и т.п. Но первое знакомство с этим редактором оставило привкус шоколада во рту.
Во-первых, куча лишнего говна по типу почты, игр, шифрования, архиватора, и т.д.
Во-вторых, вместо добавления функционала его приходится отключать, например, чтобы не видеть эти убогие GUI элементы.
В-третьих, антигуманные биндинги, которые идут со времен space cadet(да биндил crtl на caps, но привкус шоколада так и остался). (evil-моды тоже идут нахуй, потому что иногда биндинги конфликтуют и приходится пердолиться с конфигом)
В-четвертых, кто, блядь, вообще придумал(конечно мозолеед аутизмом) перемещение на Ctrl + f/b/p/n? Этот человек вообще на клавиатуру смотрел? Или у него пальцы кривые?
Собственно вопрос, можно ли писать ваши лиспы в виме и не сильно ли упадет ЮЗЕР ЭКСПИРИЕНС по сравнению с емаксом?
Как же хочется нормальный редактор без вот этого всего. Прям бери и свой пиши на основе Guile.
> антигуманные биндинги
В spacemacs и doom-emacs нормальные семантические биндинги.
>Как же хочется нормальный редактор без вот этого всего
drracket
>В spacemacs и doom-emacs нормальные семантические биндинги
>evil-моды тоже идут нахуй, потому что иногда биндинги конфликтуют и приходится пердолиться с конфигом
Ну и не ТРЪ же.
>support for cross-compiling the system to Android has been added
Дождались
>>2686931
Харкачую drracket, для сикпа он вполне пойдет. Еще там гуем можно обмазываться. Я вчера на коммонлишпа набрел на portacle, для новичка вроде довольно удобно. Кто-нибудь юзал? Это по-сути емакс с какими-то свистоперделками.
Еще на реддит зашел к коммон лисперам и охуел, смотрите пик.
> набрел на portacle, для новичка вроде довольно удобно.
Его уже вроде не поддерживают. В этом и мало смысла, когда уже есть полноценные дистрибутивы емакса с огромными сообществами, в которых поддержка слайма нисколько не хуже, а другие компоненты более тщательно отполированы.
>Еще на реддит зашел к коммон лисперам и охуел, смотрите пик.
Лол, внезапно. Выжигатель никого не щадит.
Кстати, такая хуйня только в соевой версии, в нормально всё по-старому https://old.reddit.com/r/Common_Lisp/
>Еще на реддит зашел к коммон лисперам и охуел, смотрите пик.
Весь мир с Украиной, чему удивляться?
Двачую.
А я вот не понимаю, почему еще не был добавлен пикрил в шапку.
Потому что никто не добавил.
не ебись сразу с емаксом и лишпом. Выбери что-то одно. Поставь vscode, сделай себе одолжение.
https://github.com/Enerccio/SLT
Судя по галочкам в тудушке, самое необходимое из слайма уже умеет, так что, неосиляторы емакса, дерзайте.
>ГНУтые уже добавили поддержку ELisp в Guile?
gccjit прикрутили, а про guile я только слухи встречал.
>и написать новый редактор на Guile
Уже есть lem на общелиспе. sbcl-то, чай, быстрее guile будет.
Присоединяйся к разработке, допиливай, а меня и емакс устраивает
>lem
https://github.com/lem-project/lem/tree/master/frontends/sdl2
О, нихуя! Они фронтенд на sdl2 начали пилить
>Уже есть lem на общелиспе. sbcl-то, чай, быстрее guile будет.
Имхо, общелисп слишком СЕРЬЕЗНЫЙ для таких вещей, когда же Guile - это няшная схемка для встраивания.
>Присоединяйся к разработке, допиливай
Кто? Я?
Емакс жив засчет пиздатых легаси плагинов по типу org-mode, magit, tramp и т.д. Сомневаюсь, что на lem-e есть что-то похожее
>меня и емакс устраивает
Меня фундаментальная проблема не устраивает - философия "все в одном". Изкаробки емакс имеет столько ненужных функций, что просто злит. Почему бы этот функционал не вынести в отдельные плагины, которые люди бы устанавливали самостоятельно при необходимости? Вот на кой черт там нужны игры? Или архиватор? Шифровальщик? Ну и пососная работа в терминале тоже иногда злит.
>Емакс жив засчет пиздатых легаси плагинов по типу org-mode, magit, tramp и т.д. Сомневаюсь, что на lem-e есть что-то похожее
Очевидно, ему ещё далеко до емакса по расширениям. Но я думаю, создать слой совместимости с елиспом и емаксовским апи должно быть не очень сложно.
>Изкаробки емакс имеет столько ненужных функций, что просто злит.
"Из коробки" он умеет только интерпретировать елисп и работать с текстовыми буферами, а всё остальное -- расширения.
>Почему бы этот функционал не вынести в отдельные плагины
Ты не поверишь
>создать слой совместимости с елиспом
Тем более, что оный с каждым годом всё больше и больше мимикрирует под общелисп.
>Ты не поверишь
>Из коробки" он умеет только интерпретировать елисп и работать с текстовыми буферами, а всё остальное -- расширения.
Тогда почему приходится наблюдать и отключать кучу говна после первой установки? Я не знаю, может быть, мне ментейнеры емакса на дебиане говна в штаны залили, но после установки он по дефолту имеет игры и кучу другой спорной функциональности.
>но после установки он по дефолту имеет игры и кучу другой спорной функциональности
Ну да, обычно емакс опакечивают со всеми стандартными расширениями. Но можешь не беспокоиться, они подгружаются исключительно по требованию, на скорости запуска и объеме сжираемой памяти их наличие никак не сказывается.
https://nyxt.atlas.engineer/article/release-3.0.0.org
>приходится пердолиться с конфигом
>поставил емакс
>боится лезть в конфиги
Лол.
Чувак, вся суть емакса и вима это именно возможность тонкой настройки через конфиги под свои задачи, иначе от них нет никакого толку. Для вима так и вовсе еще неплохо бы базовое знание вимскрипта и умение писать свои функции. Для емакса думаю тоже. Просто ты пытаешься относиться к емаксу как к обычному текстовому редактору и думаешь что можешь его интуитивно понять и использовать. Это не так.
Емаксу и виму нужно именно учиться. Да, есть специальные книжки для этого, не удивляйся.
>можно ли писать ваши лиспы в виме
Да, spacemacs\doom-emacs.
>>2686151
Изобрели. Литералли что угодно лучше вима.
>>2686575
Хоум роу - это (asdf+jkl;), соответственно к h надо тянуться. Нормальные (психически здоровые) люди используют ijkl, ну а поциенты желтого дома, которым кажется, что они инопланетяне, используют hjkl и к концам строки прыгают эргономичными $ и ^. Продолжая тему поста выше - даже не знаю, что хуже: быть пидором, хохлом или вимером.
Так со времен хикки ниче интересного пока так и не появилось, не на эликсир же перекатываться продолжая твою аналогию - это в один разлагающийся труп засунули другой разлагающийся труп и такие: я сделаль!.
Он не коммонлиспер и вообще вроде на кл не писал, после кложи и кложискрипта плотно пересаживался на раст, в фпроге вроде никогда не публиковался и вообще когда фпрог был живой он вроде еще в нгу учился
> Вот на кой черт там нужны игры? Или архиватор?
Это хуйня, вот недавно они еглот затащили в основную поставку. Вопрос - нахуя? Вот у меня все нормально работало, я мог отдельно обновлять еглот, не обновляя всего редактора. Теперь если мне вдруг понадобится например к какому-то неиспользуемому ранее языку подрубиться к лсп, и внезапно там что-то отломается, то придется обновлять весь ебаный имакс в надежде на то, что в новой версии еглота это починили. И разумеется обновление всего имакса приведет к отваливанию каких-то других пакетов. И все ради чего? Ради того шоб сказать, что мол вот, еглот - это СТАНДАРТНЫЙ пакет в имаксе! Бляди, сэр.
> в фпроге вроде никогда не публиковался
Не публиковался, но был в их агрегаторе. Своей агитационной деятельностью заебал ещё тогда. Собственно, именно поэтому я его и запомнил.
>после кложи и кложискрипта плотно пересаживался на раст
Хз, не следил, но судя по гитхабу, ничего не изменилось.
>я мог отдельно обновлять еглот
Ты и сейчас можешь, шиз. Что за нашествие неосиляторов в треде?
Он всё ещё есть в элпе https://elpa.gnu.org/packages/eglot.html
Если вдруг тебе понадобится самый последний коммит, просто тащишь его из гита к себе в load-path и просто пользуешься.
https://www.emacswiki.org/emacs/LoadPath
>Продолжая тему поста выше - даже не знаю, что хуже: быть пидором, хохлом или вимером.
>итералли что угодно лучше вима.
Причина подрыва?
>Он всё ещё есть в элпе
Пока может и есть, но после включения в состав имакса автор планировал прекратить релизить отдельный пакет (надеюсь, что его отговорили, не следил)
>просто тащишь его из гита
>просто
Сразу видно человека, который на практике никогда не пытался этого сделать
>Хз, не следил
ну я про то и говорю, что три тезиса - три промаха
а агитационная деятельность у него в основном за шрифты и веб-дизайн, лол
>Побибикай.
Педалировать и сигналить это больше по вашей теме.
Алсо, кидаю тебе JSON в одну строку и твой емакс виснет. Твои действия?
> твой емакс виснет
Не виснет.
> Твои действия?
Запускаю M-x json-pretty-print-buffer и делаю то, что собирался с ним делать
>Пока может и есть
These :core packages (Eglot included) are then released periodically to GNU ELPA, so users of other Emacs's versions can get them via M-x package-install.
>Сразу видно человека, который на практике никогда не пытался этого сделать
Что изменилось-то? Обратную совместимость ломают и без включения в состав емакса.
Никит, ты? Или это ВРЁТИ от неравнодушного кложурянина?
Я не понял, что ты там себе опроверг?
>Не виснет
Виснет, виснет.
Алсо,
>используют hjkl и к концам строки прыгают эргономичными $ и ^
Куда уж нам до C-f\b, C-p\n и т.д.
Хуя тут говорящий кальмар в тред ворвался.
Вот многие говорят что паскаль ужасен из за begin, end, но лисп с этими скобками еще хуже, даже paredit не помогает.
Давай, не виляй попкой, выдели по пунктикам, чтобы было видно, что они не только у тебя в голове.
Если тебе перечитать недостаточно и нужно еще выделить пунктики, то можешь заняться и этим, я разрешаю.
Хз, а мне паскаль не особо нравится. Х-ль эстетичный, епта, но конечно с грамматикой там кромешный пиздец.
У форта нет синтаксиса, пруфмиронг! Бог дал им бесконечность и лисп - нет, хочу стукать кокосом по камню и разделять токены пробелами...
>are then released periodically to GNU ELPA, so users of other Emacs's versions can get them via M-x package-install.
Ну ок, хорошо.
>Что изменилось-то?
Конфликты обновленной версии со встроенной же. Я как-то раз пробовал так орг обновить, лучше бы не пробовал. В итоге так и пришлось откатиться.
>Конфликты обновленной версии со встроенной же.
Это один модуль, чему там конфликтовать?
>Я как-то раз пробовал так орг обновить, лучше бы не пробовал. В итоге так и пришлось откатиться.
У тебя емакс был совсем протухший? Хотя маловероятно, для этого нужно было отстать больше, чем на три мажорных версии.
Не представляю, в чем там ещё можно было обосраться, ибо оргмод прекрасно обновляется пакетным менеджером емакса.
>У форта нет синтаксиса, пруфмиронг!
Именно так, и это идеально, никаких ошибок синтаксиса, никаких сложных парсеров.
>Бог дал им бесконечность и лисп - нет, хочу стукать кокосом по камню и разделять токены пробелами...
Так ты сам говорил что то про парсинг, редактирование, тут форт удобнее, не? И зачем лисп когда на форте он реализуется в одну строку? ну с нормальными списками чуть больше
>Именно так, и это идеально, никаких ошибок синтаксиса, никаких сложных парсеров.
Потому ли это, что все они скрываются в пользовательском коде?
>И зачем лисп когда на форте он реализуется в одну строку? ну с нормальными списками чуть больше
А если с сигнальным протоколом, clos/mop, системой типов и прочими ништяками?
>Потому ли это, что все они скрываются в пользовательском коде?
Делать парсеры это неправильный подход в Forth, так что обычно их не делают, из базовых слов знаю только " и комментарии еще через обработку ввода делают, и то этих парсеров нету в ColorForth тк как ему это не нужно из за редактора.
>А если с сигнальным протоколом, clos/mop, системой типов и прочими ништяками?
Суть форта в том что бы избегать таких сложных абстракций, но я определенно могу это реализовать короче по символам чем в SBCL. В форте даже нету структур, ты наверное думаешь что их надо реализовывать, но нет, их как раз таки реализовывать не стоит, особенно с каким то парсером.
OKAD II для проектирование его 144 ядерных процессоров занимает 500 строк кода, и там нету структур, парсеров итд.
Вот мой код lisp.f без парсеров написан, так и надо писать на форте, через подобных подход, так почти все можно реализовать, кроме сложных каких то форм языковых, там проще сделать аналог lex+bison если уж потребуется, но слова которые их будут реализовывать, и слова описания тоже будут работать без стороннего парсера.
Я имел в виду ошибки и сложность. Из-за примитивности языка приходится велосипедить свои едсл и таким образом переносить сложность в пользовательский код. Вот у тебя там две команды: открывающая и закрывающая скобка. Парность никак не проверяется. Думаю, очень весело будет отлавливать такую ошибку, если случайно потеряешь где-то скобку.
В форте не принято таким заниматься, я запускаю этот код своим фортом написанным на ассемблере, он занимает всего 4кб (linux amd64), и там ошибка печатается только если слово не найдено, пока никаких проблем не возникает, написал на нем пару консольных игр, блог (скоро выложу), сейчас в отпуске еще что нибудь сделаю, наверное ассемблер свой, что бы не зависеть от fasm.
Расскажи про отладку и про обработку ошибок на форте.
> там ошибка печатается только если слово не найдено
Т.е. подход как в эрланге но без отказоустойчивости в дизайне: "хуй с ним, пусть валится"?
Ну итог тот же, поэтому наверное можно, но эти слова не читают исходный код, не меняют курсор исходного кода итд.
>>2701395
Мой форт переводит все в машинный код, поэтому мне достаточно gdb, в ColorForth примерно тоже самое, только там все интегрировано в него уже, не нужно вызывать сторонний gdb. Общий подход в том что бы писать кода меньше, если твой OKAD II занимает 500 строк, блог+асинхронный сервер 400 строк, то и отладка становится проще. Но например в моем блоге все что приходит от пользователя проверяется, что бы ничего не крашнулось, или лишнего не отдалось, суть в том что бы убрать обработку ошибок там, где она не имеет нулевой стоимости или не так уж и нужна.
Подход меньше пиши - меньше будешь отлаживать, реализуем в любом языке программирования, просто Forth и сам часть такого подхода, вот взять этот примитивный обработчик s-exp, это иллюстрирует преимущество использования Forth если придерживаться этого подхода, плюс низкий уровень, мне он просто нравится, у меня нет слов для чтения файлов, сокетов, мой форт не зависит от libc, но у меня есть слово syscall, и через него я вызываю все функции ядра что мне нужны, ну и мои программы по итогу жестко зависят от linux amd64, но я на другой платформе и не собираюсь их запускать.
21, а к чему вопрос? Возможно тебя смутило написанное, но если программа работает, выполняет свою задачу, не вылетает, новые возможности добавляются по необходимости, то что в таком подходе может быть странного?
Forth все же лучше подходит для небольших проектов с микроконтроллерами, IoT. Но и обычное ПО с ним вполне можно делать, в первую очередь же нужно выполнение определенных задач, а не красивый интерфейс, или возможность работы на всех платформах, итд. Вот например у Maxidom внутренние программы на ncurses и люди довольны, говорят что быстро удобно, ПК АДИС тоже консольный, такое можно реализовывать прямо на моем Forth, через syscall, и никаких трудностей не будет.
>Это один модуль, чему там конфликтовать?
Зависимостям видимо.
>У тебя емакс был совсем протухший?
Не помню конкретных версий, но емнип не особо.
>оргмод прекрасно обновляется пакетным менеджером емакса.
Я пробовал его так обновлять несколько раз с интервалом в несколько лет, практически каждый раз заканчивалось предсказуемо
>никаких сложных парсеров
...кроме тех, которые предстоит написать ЛИЧНО ТЕБЕ!
>форт удобнее
Ты меня пытаешься стриггерить, но я не буду поддаваться на провокацию.
я прост довольно глубоко в конкатенативщину погружался
>но я определенно могу это реализовать короче по символам чем в SBCL
Могу реализовать это еще короче по символам чем в форте (на джей, разумеется). Господа, кто даст меньше?
Который ascii apl, очевидно же
>...кроме тех, которые предстоит написать ЛИЧНО ТЕБЕ!
Не пишу сложных парсеров, ну ладно, кто я такой. Вот Чак Мур не пишет и не советует, он не авторитет в мире Forth? Его код доступен.
>я прост довольно глубоко в конкатенативщину погружался
Ты мог в нее погружаться, но стек это вообще не главное в форте, стек просто сейчас является наиболее удобным способом передавать данные между словами.
>>2702393
Точно сможешь? Можно взять другую задачу, которую можно решить за день. Но J хороший язык, https://cosy.com/ это Forth + APL.
Так я то же самое спрашиваю. Просто как провокация, чтобы поднять мёртвый тред.
>но я определенно могу это реализовать короче по символам чем в SBCL.
Есть у меня на примете задачка получше: http://lorwiki.zhbert.ru/index.php/LOR-contest
Запилишь нам решение на форте на любом из, когда будет свободное время? Было бы интересно посмотреть.
Кстати, на других языках тоже было бы интересно посмотреть. Так что доставайте свои схемы, тикили, реболы, джулии, прости господи, яваскрипты с кожурами, будем письками мериться.
>После других функциональных языков очень неприятно.
Просто ты ещё не научился его готовить. Ты пытаешься писать как на других функциональных языках и закономерно получаешь неидиоматичный код, потому тебе и неприятно.
А как писать не как на других фп? Концептуально-то все тоже самое, но только всякие бесячие формы типа function/#' и funcall.
>А как писать не как на других фп?
Чтобы понять, как писать на каком-нибудь языке, его обычно изучают, поэтому не очень понимаю, какого ответа ты ожидаешь.
Могу книжку посоветовать или с конкретным куском кода помочь.
>Концептуально-то все тоже самое
То же самое, что и в хаскеле, анлямбде, АПЛ или рефале? Любопытное мнение.
Другие ФЯП, о которых ты говорил, - это схема, да?
Но есть же Раптор!
Я имел в виду ФВП, ты умеешь в функции высшего порядка на CL без фанколлов? Ну покажи тогда. ФВП в других ФП типа хаскеля/схемы/кложи/других не знаю выглядит не так убого все же.
Просто кривой квирк старых реализаций, который до сих пор тащат, потому что так исторически сложилось. ну и да, кл настолько функциональный, как руби или жс
Тебе ещё из хаскеля должно быть известно, что если приходится писать свою фвп или у тебя явная рекурсия, то значит, ты просто не осилил подходящий комбинатор.
Так что ты явно делаешь что-то не так, если у тебя много функолов в коде. Вот сейчас на одном своем проекте замерил, на 712 строк кода приходится всего 2 функола.
Короче, давай уже свой проблемный код в студию.
>>2709635
>ну и да, кл настолько функциональный, как руби или жс
Скорее, как окамл. Кстати, не многим известно, но фильм Зита и Гита снят именно про них.
> Common Lisp - разрабатывался как промышленный язык
> Scheme - это минималистичный лисп, пригодный в основном для обучения, исследований
Думай.
Чел, ты в итоге с ума сойдёшь от этого выбора. Делай как я: учи оба.
Но вот тебе хинт: на лиспе написать что-то большое и работающее быстрее и удобнее. Схема вылощена, как будто ещё кислотой чистили. И я до сих пор не понимаю как продолжения работают и как их юзать. Любой код с ними у меня в голове синий экран смерти вызывает.
Да не то чтобы их очень много, где-то пара штук на 300 строк, но просто я не понимаю зачем вообще так было делать? Единственный аргумент который я видел это "зато мы можем переменную назвать list а не lst", хотя в чем проблема называть переменную list в локальном контексте в той же схеме я не понимаю.
Мне очень понравилось что-то на Лисп писать. REPL с емаксом и компиляция кода без надобности весь файл пересобирать очень удобны. Я в си заебался !make && !./main писать, тут радость вызывает пока что абсолютно все
В первый раз когда у тебя что-то логическое наебнётся из-за "органического" программирования, вспомнишь чудика из лисп-тредов, который репл наотрез отказывался использовать.
Это я. Два-три треда назад бомбил.
Мне не нравится эта особенность работы с лиспом, а также фанатичность всех, кто это юзает.
Приходишь попросить совета? Показывай отдельные куски кода, а не проект целиком, потому что иначе начнётся вот это "А ПАЧИМУ ТЫ НЕ ЮЗАЕШЬ САМУЮ УДОБНУЮ ПРИБЛУДУ?".
Все их вспуки про то, что можно послать каждую отдельную инструкцию в SWANK; вспуки про "удобство", про то, что можно и файлы перекомпилировать целиком, если нужно - это всё блекнет в сравнении с чистым запуском с нуля каждый раз.
Ты просто уверен, что вызываемый код каждый раз в одних и тех же условиях. Потому что он стартует с одним и тем же ядром каждый раз.
И, если честно, я даже раз что лисп-машины загнулись. Если там была такая же хуета с постоянной модификацией образа, то это было бы не очень приятно.
>>2710148
Не настроен сраться снова. Спроси у адептов REPL про "выращивание" программы/образа.
>но просто я не понимаю зачем вообще так было делать?
Я предполагаю, что это в первую очередь связано с динамической природой общелиспа. Это ведь не столько язык, сколько программируемая среда. И каждая сущность в ней быть интроспектирума. А о какой инстроспекции может быть речь, если язык даже не позволяет найти функцию по имени?
И возможно, такое подход упрощает реализацию горячей замены кода, но это не точно.
>Единственный аргумент который я видел это "зато мы можем переменную назвать list а не lst"
Ну, то, что не нужно париться об именах переменных, сильно упрощает кодогенерацию макросами.
Кстати, рекомендую serapeum, если хочешь, чтобы твой код был более функциональным, а волосы мягкими и шелковистыми.
См. https://github.com/ruricolist/serapeum/blob/master/REFERENCE.md#functions fbind, defalias, mvfold
Я никуда и не уходил.
>И я до сих пор не понимаю как продолжения работают и как их юзать.
В продолжениях ничего сложного. Если знаешь хаскель, то рекомендую посмотреть на реализацию монады cont (простую, без трансформеров), сразу поймешь, как оно устроено.
>Любой код с ними у меня в голове синий экран смерти вызывает.
Это нормально. Уследить за рваным кодом не так уж просто
>Если знаешь хаскель
>бросил его учить, когда не понял как зачем монады нужны и как их правильно готовить
Ну чел(((
https://wiki.haskell.org/MonadCont_under_the_hood
У них даже статья есть, где подробно разжевывается
>И, если честно, я даже раз что лисп-машины загнулись. Если там была такая же хуета с постоянной модификацией образа, то это было бы не очень приятно
Ну вообще-то это свойство системы когда-то спасло американский спутник, который находился возле другой планеты.
А gdb когда-то спас мою жопу от пожара, когда плюсовая программа выдавала сегфолт, ага.
Свойство, которое можно использовать в некотором контексте? Хорошо.
Свойство, фанатики которого не дадут тебе спокойно жить, пока ты не конвертируешься в их веру? Эээ, без комментариев.
>А gdb когда-то спас мою жопу от пожара, когда плюсовая программа выдавала сегфолт, ага.
ну тут твоя жопа, а там спутник, на который было миллионы долларов потрачено, чуешь разницу? ещё я новостей не видел, чтобы gcc или gdb спас кого-то, скорее наоборот
>Свойство, фанатики которого не дадут тебе спокойно жить, пока ты не конвертируешься в их веру? Эээ, без комментариев.
Мб ты что-то не понял? Просто если тестировать отдельные модули\функции, а потом обнулять REPL, то выглядит довольно здравой идеей.
Ага. Давай я соглашусь с этим и скажу, что попробую.
Чтобы потом сблевать от Emacs и вступить в пространные рассуждения о том, что ограничивать выбор инструментов плохая затея. (Намекая на очивидное ограничение в виде SLIME).
Чтобы перейти к части, где говорят про SLIMV, и вообще про то, что ограничения это нормально, посмотри на MSVS для плюсов (рядом с которой есть qtcreator, clion, и даже просто чистый вим + gcc).
Чтобы затей перейти к финальному акту, где SLIMV из коробки глючит, а я получаю порцию говна за шиворот, потому что мне не нравится имакс.
Нет, спасибо. Кушайте сами, не обляпайтесь только.
Да он шизик, не обращай внимания.
ЕМНИП он писал код в виме, а потом вручную его копировал в репл, потому что автоматизация - зло. Видимо, копировать каждое изменение было лень, поэтому в образе накапливалось расхождение с кодом.
>а потом вручную его копировал в репл
Так ты в своей голове представлял видимо. Додумывал то есть.
Но, у меня есть мэйкфайл с sbcl --load бла-бла-бла.
Так что нет, вручную я не копировал.
Не-не, я помню, ты пытался в интерактивную разработку, но спотыкался на ровном месте об свою шизу.
>Но, у меня есть мэйкфайл с sbcl --load бла-бла-бла.
Хм. Должно быть, очень удобно. Особенно когда в проекте больше одного файла и есть зависимости.
Даже не знаю, стоит ли говорить про асдф
>интерактивную разработку
Не совсем. В расширяемую пользователем.
В итоге я редизайнул эту хуйню. Теперь это asdf система, которую пользователь просто добавляет в зависимости своей кастомной asdf системы, а потом вызывает функцию make-executable, который настраивает repl sbcl'а и добавляет reader macro. Сам исполняемый файл - это блоб на 50 мегабайт, который из себя представляет консольную утилиту с текстовым интерфейсом (точнее фуловый sbcl, который выдаёт себя за консольную утилиту).
>Не совсем. В расширяемую пользователем.
Не вынуждай лезть в архивач, я помню твои приключения с реплом!
>В итоге я редизайнул эту хуйню.
Ну и какую проблему это решает?
>а потом вызывает функцию make-executable
https://asdf.common-lisp.dev/asdf.html#index-image_002dop
>который настраивает repl sbcl'а и добавляет reader macro
У всех это обычно в ~/.sbclrc
>Скорее, как окамл.
Да не, категорически нет, окамл как раз сферический фяп (с прибитыми сбоку ооп-свистоперделками).
почему французы такие уебки и не могут завести блядь нормальный тулинг и нормальную библиотеку, так бомбит каждый раз как об этом думаю, такой бы заебатый дефолтный язык вышел вместо всяких ГОвноЛАНГов и прочей хуйни
Да мне просто любопытно, что произойдёт с твоей шизой, когда ты осознаешь надуманность проблем, которым так отчаянно противоборствуешь.
В кложе например есть удобный тулинг для пересборки всего кода твоего проекта без перезапуска образа. То есть библиотечные кэши как были так и остаются, а все твои неймспейсы уничтожаются и собираются заново. Это чуть дольше, чем компиляция отдельной формы, но все еще на несколько порядков быстрее пересборки всего проекта, очевидно.
Использую более простой метод. Так же, как с редизайном номер один. Значит будет редизайн номер два, три и так до посинения.
Что касается проблем, которым я действительно противоборствую, типа слаймозависимых зилотов - тут уж надуманными они явно не будут.
>А о какой инстроспекции может быть речь, если язык даже не позволяет найти функцию по имени?
Ты какой-то бред написал, лисп-1 vs лисп-2 не имеет никакого отношения к интроспектируемости. Это литералли деталь реализации, которую тащат из 80-ых
Я тоже не осилил продолжения. Ну то есть я понимаю, как они могут как концепция пригодиться при трансформации кода, но как (а главное - зачем) использовать их непосредственно на прикладном уровне - хз.
инб4 эффекты
Дан список символов, найди соотвествующие им функции, если таковые определены.
А каким местом проблемы слайма\кл к интерактивному программированию?
>ограничивать выбор инструментов плохая затея
Ну для кложи есть имакс, вим, вс код, интеллиджей идея и еще полдюжины обскурных редакторов чисто под саму кложу. И еще дюжина визуализаторов данных и гуишных интроспекторов, которые подключаются к тому же реплу и выводят все в браузер. И самих протоколов взаимодействия с репл-сервером тоже несколько, от дефолтного нрепла до минималистичных, к которым буквально телнетом можно цепляться.
Ну то есть ты взял какую-то конкретную реализацию, тебе там что-то не понравилось, и на основании этого ты критикуешь целый подход к программированию, который в общем-то уже давно признан объективно более лучшим для построения любых интерактивных систем. Не очень-то логично.
https://www.youtube.com/watch?v=PUv66718DII
Самое очевидное применение - асинхронщина. На продолжениях пишется легко и органично, без лапши из колбеков
>который в общем-то уже давно признан объективно более лучшим для построения любых интерактивных систем
Тогда не нужно пытаться это впарить, как отчаявшаяся РСП-сэйлс с двумя детьми и ипотекой.
"Объективный" - значит рано или поздно каждый сам дойдёт до этого. Когда ты добавляешь "уже давно признан ... лучшим" - я чувствую запашок фанатичной уверенности.
>без лапши из колбеков
Уже давно нигде никаких колбеков нет, только асинк\авейт и цсп. Чем продолжения удобнее асинк-авейта?
я ж говорю, все равно в итоге дискас сведется к эффектам, лол
>Тогда не нужно пытаться это впарить
Я хуй знает, что там у тебя за психические травмы и кто тебе там что-то пытался впарить, мне похуй.
>"Объективный" - значит рано или поздно каждый сам дойдёт до этого
Не значит, между распространенностью и техническим совершенством нет корелляции а если и есть, то скорее обратная, азаза. "Доходят" только до того, что активно пиарится - корпорациями за деньги или сообществами во имя добра.
>Когда ты добавляешь "уже давно признан ... лучшим" - я чувствую запашок фанатичной уверенности.
Ну ты там это, юнити (игры в котором делают) какой-нибудь открой, посмотри сколько там ассетов в сторе - это все тайные зилоты имакса и слайма, инфа 100%
Мне похуй на твои психические травмы, шиз. Тред\раздел - про разработку ПО, остальной мой пост этому и посвящен.
на всякий случай насрал говном тебе в рот, ты какой-то токсичный
> Чем продолжения удобнее асинк-авейта?
Тем, что асинхронный код ничем не будет отличаться по виду от синхронного. Очевидно же.
А что с ней? Я лично не вижу смысла называть локальные переменные тем же именем, что и библиотечные функции - это в любом случае только вносит путаницу при чтении кода. (Впрочем, сделать это все равно никто не мешает, локальный биндинг просто затенит библиотечный, ну стандартные правила лекической видимости.)
Имена типа "list", "map" и т.п. - это в любом случае антипаттерн, опять же безотносительно обсуждаемого топика. Если уж у тебя нечто настолько абстрактное, что ты его не можешь никак осмысленно назвать, то давно уже есть привычные xs, ys и так далее.
Наконец, даже чисто концептуально выделять замыкания в какую-то отдельную категорию нелогично, потому что, ну блин, весь смысл ФВП и замыканий в том, что это такие же значения, как любое другое значение. Давайте тогда отдельные неймспейсы для чисел и строк заодно заведем. Бред же.
Так и с асинк\авейтом он по форме не отличается от синхронного (в этом и смысол асинкавейта). Можешь привести пример, который демонстрирует разницу в чистоте между асинкавейтом и продолжениями?
>Walmart, CircleCI, Heroku, Puppet, Netflix, Soundcloud, Spotify, Facebook, Groupon, Red Hat, Oracle, Сбербанк.
>ничего не пишется
Если этот тред является представительной выборкой "лисп хакеров", которые, по-хорошему должны показывать насколько лисп охуенен, то не удивительно, что он загнулся.
Я сам в лисп вкатился как в язык. Не как в азаза всё выдумали уже за тебя, используй что сказано или шиз с агрессивным проецированием своего психологического состояния, когда диалог строится хоть на йоту не так, как якобы должен по представлениям "лисп хакера".
>Я в си заебался !make && !./main писать, тут радость вызывает пока что абсолютно все
Попробуй С++, там IDE и есть REPL, почти все можно проверить статически, пересборка это одна кнопка, и используй отладчик, он позволяет вставлять код, менять значение переменных итд, в качестве IDE советую CLion.
Ну что-то на уровне КОБОЛА, да. Даже из области, для которой лишп и создавался, его питон выгнал.
И что мешало залить новую программу? Можно еще всегда работающий процесс пропатчить. Вояджеры же нормально патчат. И тебе не просто так рассказали про gdb, там можно и функцию наживую пропатчить, и значения посмотреть поменять.
>Если этот тред является представительной выборкой "лисп хакеров",
Тебе лет 15 или ты просто туповатый?
>Не как в азаза всё выдумали уже за тебя
Я вообще без понятия о чем ты и с какими голосами в голове разговариваешь. Съеби в /psy/, шиз!
>Я лично не вижу смысла называть локальные переменные тем же именем, что и библиотечные функции
Что плохого в том, чтобы назвать переменную str, next, rem, count и т.д.?
>>2710355
Ты не понял. С продолжениями не нужно никаких ключевых слов, не нужно никак преобразовывать код, потому что реализация асинхронного ио может просто взять лямбду продолжения и повесить её на событие.
>стартапы
>что-то на уровне КОБОЛА
/0
>из области, для которой лишп и создавался
Какой лишп? Лишп - это семейство языков программирования, как си-подобные языки (с, с++, с#, джава, раст). Изначально лишп создавался для написания академических публикаций по символьным вычислениям, але.
Это наиболее продвинутый язык сейчас, особенно если использовать патченный clang с рефлексией, есть крутые рейнджи, есть рефлексия, есть комплтайм, есть лучший оптимизирующий компилятор в мире (если вы подумали о fortran, то вы ошиблись, он отстает от С++ и язык вовсе НЕ позволяет как то лучше оптимизировать, подробнее в гугл). Говоря о том что IDE это REPL я не троллю и ничего не путаю, если у вас контракты везде, и статика, а отладчик позволяет патчить код и менять значения, у вас есть все что нужно.
Зачем он нужен, когда есть джулия? На ней числодробилки на уровне фортрана по производительности.
>Что плохого в том, чтобы назвать переменную str, next, rem, count и т.д.?
Ну конца света ясное дело не случится, но в идеале я бы предпочел, условно, s или string для переменной и т.п. А распространенные слова типа next не использовать в именовании библиотечных функций. То есть чтобы в области видимости по умолчанию экспортировался фиксированный набор слов, которые всегда имеют только одно значение. А все, что может пересекаться с предметной областью - в сабнеймспейсы убрать.
В этом плане, кстати говоря, какой-нибудь cdr мне импонирует больше, чем rest\tail.
>А распространенные слова типа next не использовать в именовании библиотечных функций.
В кложе решили иначе.
>реализация асинхронного ио может просто взять лямбду продолжения и повесить её на событие.
Ну так и компилятор может переписать твой код в кп-стайл и навесить в любой точке что угодно, я ж не про это. Давай еще раз, я человек простой, от колл\цц у меня бсод в мозге, объясни мне на примере. Вот есть джва запроса, нужно взять результат того, который придет первым, и передать дальше, либо отвалиться по заданному таймауту. Как на продолжениях это выглядит?
Производительность хуже, библиотек нету, поддержки нету, IDE достойных нету как и инструментов, статические анализаторы есть под нее хоть?
Не говоря уже о том что язык сливает по возможностям.
неосилятор, спок.
>динамической природой общелиспа
Т.е.? Если ты про области видимости то они лексические/статические в лиспе, если ты про гомоиконность и возможность меня куски кода на лету, то это присуще всем лиспам и один неймспейс для всего никак этому не мешает.
>Ну, то, что не нужно париться об именах переменных, сильно упрощает кодогенерацию макросами.
Да что-то не возникало таких проблем, на крайний случай есть gensym.
>>2710165
Крутая штука, у меня есть похожая вещь, но маленькая, правда один неймспейс она мне все равно не сделает. К тому же если быстро окинуть взглядом почти все это есть в колже из коробки.
В общем нахрюке у символа может быть и значение и функция.
Вот в Схеме всегда одно значение, там можно
(set! f cons)
(f 1 2)
В общем нахрюке надо
(setq f #'cons) ; значение символа f = функция символа cons
(defun f (x y) (+ 1 2)) ; задали функцию символа f
(funcall f 1 2) ; значение f вызвали (1 . 2)
(f 1 2) ; функцию f вызвали 3
В дополнение: (funcall 'f 1 2) будет 3.
>(set! f cons)
В схеме так нельзя, сначала надо определить f, т.е. должно быть
(define f cons).
>динамической природой общелиспа
>Т.е.?
>возможность меня куски кода на лету
Не совсем. Речь, скорее, об особенностях дизайна языка как живой системы а-ля смолтолк.
>один неймспейс для всего никак этому не мешает.
Вот хз, это достаточно сложный и, к тому же, малозначительный вопрос, чтобы ответить навскидку без анализа, поэтому не могу ни согласиться, ни опровергнуть. Но чувствую, что устройство лисп-2 должно быть проще в плане поковыряться в рантайме.
>Да что-то не возникало таких проблем, на крайний случай есть gensym.
Я про макросы типа (do-select ((a b c list d) :from table) ...)
Когда имя переменной не выбирается программистом, а продиктовано извне.
>К тому же если быстро окинуть взглядом почти все это есть в колже из коробки.
Кек, там подписано же, откуда что взято. Что-то из кложи, что-то из хаскеля, что-то из J
>А (setf (function f) #'cons) нельзя?
fdefinition, а не function
Но так делать не надо, есть defalias и fbind из серапеума
[ситейшн нидед]
CircleCI допустим я нашел, но там кложа, остальные тоже нитакусиковые крудо опердени или есть реальные случаи, гже прям без лиспа никак было?
Особенно интересует сбер.
Что за фишки?
Программирование с использование символов. Символ в лиспе - это тип. Символы можно манипулировать для генерации кода. Насколько я понимаю термин, символьные вычисления - это тот случай когда ты используешь символы как данные. Просто привязывание значения к символу вроде как не считается, но могу ошибаться.
>но там кложа
Так везде кложа, другие лиспы в проде нигде не используются за исключением отдельных исчезающих случаев. Наверное самый известный юзер общелиспа - граммарли, у них бэкенд анализа текстов на нем. На схеме в проде никто не пишет хотя лет 10 назад была в питере одна контора, тоже писали какой-то нлп, зарплаты были уровня "это еще вы нам доплатите, шоб на борщах писать".
>есть реальные случаи, гже прям без лиспа никак было?
Таких случаев не бывает, это не так работает.
>Особенно интересует сбер.
Емнип одна команда писала анализ логов (или что-то в таком духе), было несколько вакансий. Опять же это кложа, на других лиспах вакансий нет.
Что я сделал не так?
Вот сам код:
(define (square x)
(* x x)
)
(define (func a b c)
(cond (and (> a b) (> b c)) (+ (square a) (square b))))
(func 5 4 3)
В схеме пара условие-значение (как и в CL) должна быть в скобках, это в кложе она не нужна.
Вообще, если для себя учишь лисп, то лучше начинай с кложи, она и проще других и можно на практике применить.
Кроме того, поскольку отношение "больше" транзитивно, то функция ">" принимает много аргументов, так что можно сократить так:
(define (func a b c)
(when (> a b c)
(+ (square a) (square b))))
Да я по книжке Структура и интерпретация компьютерных программ иду. А она про Scheme. Или особо не важно и можно просто смотреть реализацию тех или иных приколов, описанных в книге, где-то ещё?
Я не читал эту книжку, но она довольно старая, так что с учетом того, что у схемы десятки реализаций код оттуда вряд ли будет везде работать, и я думаю, что можно найти более современные книги с таким же примерно содержанием.
Спасибо. Посмотрю.
Можно вместо схемы использовать и другой лиспоподобный язык, на кложу вроде даже первые главы кто-то переводил:
http://ecmendenhall.github.io/sicpclojure/pages/contents.html
https://github.com/gregsexton/SICP-Clojure/tree/master/src/sicp
https://www.sicpdistilled.com/
Но на самом деле особого смысла в этом нет, сикп же не про конкретный язык, а о программировании в целом. К тому же схема простая и примитивная (ибо специально под обучение и заточена), а та же кложа - промышленный язык с кучей фич, с платформой и т.п.
Алсо, насколько я помню в dr-racket была языковая директива #sicp, ну типа именно та версия, которая используется в книжке, так что примеры как есть должны работать.
Да в целом всё работает, но я в упражнении с синтаксисом натупил.
>Я в си заебался !make && !./main писать
В вскод можно сделать перекомпиляцию при сохранении файла, правда не уверен, что уже есть готовое расширение, возможно придется писать самому. В Ви и Имакс я думаю тоже можно. Я уже молчу про хоткеи.
Весь "западный мир" с Украиной, используй достижения остальной цивилизации если не нравится.
Только об этом раньше надо было думать, вот например интересный проект
https://тхаб.рф/wiki/%D0%AF%D1%80_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
Ахахаха, шепелявые официально зашкварены.
У нас в кложе такой хуйни нет, ибо кложа - это интерпрайс, это про серьезных парней в костюмах и большие бабки, а не про кучку фриков, у которых то пидоры, то хохлы, то какие-нибудь негры.
basic bitch common lisp официально НЕНУЖЕН!
набросил
Очередное убожество. Потому что нужно не просто менять "def" на "опр". Если уж хочется положить русский язык в основу ЯПа, то нужно использовать грамматические и синтаксические особенности славянских языков. Например, образование новых слов (функций) с помощью суффиксов, или например независимость от порядка слов в предложении (выражении).
И переводить с латиницы надо сразу на глаголицу, кстати. Ибо так брутальнее.
гойдаскрипт
>Например, образование новых слов (функций) с помощью суффиксов, или например независимость от порядка слов в предложении (выражении).
Вот рили интересные идеи, даже в отрыве от копрославской шизы.
Была бы какая-то тусовка, где это все можно вкидывать и обсуждать - глядишь, коллективный разум и выработал бы что-то интересное, эх...
Ravenpack сейчас ищут разраба на Common Lisp. Но нужно физически присутствовать в Марбелье.
>>2683183
У них Clojure, они его спонсируют прямо.
>>2684172
>коммон лиспы
См. выше, бывает нужен где-то.
>>2686100
>если кто-то здесь такой помнит
У меня есть выпуски, так ещё и не прочитал толком ни один. Надо бы, хорошо ведь писали.
>>2688945
Соевики, хули. Это общая проблема нашей отрасли. Видел список от ctorecords? Не говорю уже про отмену ветки master три года назад.
>>2727699
>независимость от порядка слов в предложении
Независимость слов от порядка.
>Не говорю уже про отмену ветки master три года назад.
Везде main меняю на master, потому что заебало.
"Барнаул, Алтайский край", говорили они. "Ты далеко, тебе ниггерошиза должна быть побоку", говорили они.
Тьфу, блядь!
>"Барнаул, Алтайский край", говорили они. "Ты далеко, тебе ниггерошиза должна быть побоку", говорили они
Да это криптоглобалхомо подпездывают и в заблуждение вводят. Ибо когда в стране, которая экспортирует свою культуру, технологии и образ жизни на весь мир происходит что-то, то это касается весь мир. Глобализация же.
В Python это можно сделать двумя генераторами. Тогда для обхода периметра достаточно написать что-то вроде "for pos in rect_bounds(rect):", для обхода площади - "for pos in rect_area(rect):". Как лиспер решит эту задачу?
был против в этом контексте. Ну а хули, миллион всего уже написано, простой доступ ко всей инфраструктуре. Для веба даже на богомерзком js писать не надо. Ну и нет ебаного ООП со всей этой хуйнёй, что ему сопутствует. Типа в рекламных буклетах всё хорошо.
Но чем дальше я изучаю, тем больше мой ньюфажий мирок начинает трещать. Мало структур данных и миллион функций нихуя не плюс. Потому что под каждый пук посложнее у нас есть другая функция, которая расширяет предыдущую и они типа разные. Надо что-то более сложное? Есть ещё другая функция, которая принимает другие функции, которые имеют разную логику работы и так до бесконечности. Все они вроде одинаковые, но нет, они чуть-чуть различаются и некоторые из них не стакаются.
И я говорю не про вложенность какую-то, нет, я именно про то, что куча почти одинаковых механизмов, которые делают почти то же самое, но чуть более развёрнуто/вложенно и т.д.
Такое ощущение, что у автора языка такая же каша в голове из хороших концепций, как и у меня после их изучения. Да, я знаю, что их купил банк, но всё равно, выглядит пиздец.
Я конечного много не знаю и не разбираюсь в программировании, но всё равно.
ФП имеет ничуть не меньший потенциал быть невыносимым, чем ООП. А все из-за переиспользования абстракций, которые плодить нехуй делать, чтобы потом пихать их в мапы с комбинаторами, превращая код в нечитаемую кашу, и главное еще писать все однострочником без байдингов.
Кстати, ФП это тру-парадигма, берущая корни в лямбда исчислении, -- альтернативе машине Тьюринга, а ООП это хуй пойми что, ни то это синтаксический сахар чтобы автокомплит работал, ни то это как то связано с рантайм диспатчем, которого при этом нет в Окамле.
Я бы кложу изучил чисто ради ихних интерактивных тетрадок Clerk, это всяко интереснее выглядит чем технофашистский типодроч в Хаскелле, воот.
Проблема в том, что расширения для iterate не дружат с вложенными и последовательными циклами, а только с параллельными. Из-за этого если хотим писать что-то вроде (for pos in-area rect) и (for pos in-bounds rect), то в случае обхода площади код драйвера получается довольно запутанным, но все-таки читаемым. А вот для обхода периметра придется написать адовый говнокод с командами next, да еще разбавленный alexandria:with-gensyms и запятыми.
Тем временем на Python соответствующие генераторы напишет любой дебиловатый джун.
>ООП это хуй пойми что, ни то это синтаксический сахар чтобы автокомплит работал, ни то это как то связано с рантайм диспатчем, которого при этом нет в Окамле.
То самое, смоллтоковское ООП, пошло от actor model и, в свою очередь, повлияло на неё. И которая параллельно стала идейной основой для Scheme и Erlang. Мейнстримное ООП можно считать результатом искажения actor model, вызванного тем, что разработчики языков знали про Smalltalk, но не хотели или не умели правильно реализовать его ООП.
https://en.wikipedia.org/wiki/Actor_model
Тогда в куче будет выделен список всех клеток периметра, что означает лишнюю работу для сборщика мусора. Как учебный или игрушечный пример сойдет, как серьёзный код - нет.
я не особо понял в чем проблема на ставлю на то что ты долбоеб
> учебный или игрушечный
На лиспе иного не пишут :)
Скомпилировать достаточно продвинутым компилятором - и лишнего консинга не будет. А если и будет, он не составляет проблемы с современным сборщиком.
Список клеток, кстати, можно реверсировать, фильтровать etc стандартными средствами лиспа.
>Как учебный или игрушечный пример сойдет, как серьёзный код - нет.
Имаджинируем ебала лисперов, когда чтобы решить то, что в Си решается обычным циклом, в лиспе приходится выворачивать себе анус на изнанку.
Вариант от сеньора в студию.
>>2743346
Это троллинг тупостью из-за лени гуглить?
https://lispcookbook.github.io/cl-cookbook/iteration.html
Ты и на лиспе можешь написать обычный цикл. Даже с goto, если совсем прожженный олдскульщик
https://github.com/shamazmazum/stateless-iterators/
Надо лгбт-скобочки.
>В Python это можно сделать двумя генераторами
В любом из лиспов тоже.
В кложе, т.к. это функциональный язык, используется абстракция под названием seq - это (объясняю на питоньем) иммутабельные генераторы. Если ленивость ненужна, то можно вместо этого инкапсулировать преобразования в трансдьюсер.
>for pos in rect_bounds(rect)
В кложе как правило идиоматичнее синтаксически использовать не цикл, а цепочку композиций преобразований с функциями высшего порядка.
>Как лиспер решит эту задачу?
Какую задачу-то? Ты половину поста описывал фигню про фигуры и площади, а в конце спросил, как в лишпах делать итерацию.
>Сам я не разработчик
>начал изучать Clojure
Зачем? Ты ебанутый? Это язык для синьоров-помидоров с большим опытом индустриальной разработки и знанием жмв\жс платформы.
>Разрекламировали мне кложуру как очень простой язык
Из-за того, что ты не разработчик, ты не понял, что концептуальная простота (ортогональность языковых фич) не имеет никакой связи с легкостью изучения для вкатуна. Для вкатунов специально придумали Схемку. ну и https://www.maria.cloud/ но это для школоло
>Потому что под каждый пук посложнее у нас есть другая функция
Не понял, в чем бугурт. Тебе надо запомнить пару десятков функций обработки коллекций из стандартной библиотеки. Это общий словарь для всех функциональных языков (на самом деле так как функциональщина уже давно мейнстрим - это просто общий словарь базовых паттернов обработки коллекций уже для всей индустрии). Примерно 80% типовых задач обработки коллекций решаются через их комбинацию. Для остальных 20% просто пишешь свёртку\рекурсию\цикл.
>я именно про то, что куча почти одинаковых механизмов, которые делают почти то же самое, но чуть более развёрнуто/вложенно и т.д.
Без понятия о чем ты. Конкретика какая-то может будет? Пример приведи, что тебе непонятно, пока в ответ можно только пожать плечами.
>Я конечного много не знаю и не разбираюсь в программировании
this
Крестовое ооп идет от симулы.
Для кложи это не вполне идиоматичный код, хорошим тоном считается не более двух-трех уровней вложенности. хотя хикка пишет и так как на пике и ниче
Но не вижу никаких проблем с чтением пикрил кода - обычное форматирование, такое же как в си-подобных языках, любой разработчик с айкью выше 80 может это прочитать. В чем конкретно бугурт-то?
>то в случае обхода площади код драйвера получается довольно запутанным
Один простой for. Не путанее вложенных циклов
>А вот для обхода периметра придется написать адовый говнокод с командами next, да еще разбавленный alexandria:with-gensyms и запятыми.
Кода будет чуть больше, чем в первом случае, но соизмеримо с 4мя циклами.
Другой вопрос - действительно ли для твоей задачи нужен навороченный iterate? Большинство лисперов в таких случае пишут простой do-подобный макрос.
Лягушку варят медленно. Обычно люди интеллектуальных профессий имеют самые слабые скрепы. То есть? Можно начинать с них.
Бля, автор реально какой-то припизднутый. Фурифаг, возможно зоофил(ну ясен хуй), извращенец, эксгибиционист(иначе бы вся эта хуйня не покидала его спальни), бдсмщик.
Судя по этому, гайд наверно реально хороший.
>Бля, автор реально какой-то припизднутый.
>Судя по этому, гайд наверно реально хороший.
Ты или крестик сними, или трусы надень.
Можно ли у таких как-то отбирать права на репозитории? Вдруг в один день окончательно поедет и снесёт всё? Помните, что произошло с оригинальным лурком? Его тоже держал какой-то небинарный транспидор.
Макрос стрелочки из Clojure -> это попытка имитировать превосходящий язык программирования, а конкретно Forth, но приблизиться к нему не получается, убогие скобки все засоряют и мешают, сравните:
Lisp: (-> a (b) (c) (d))
Forth: a b c d
> имитировать превосходящий язык программирования, а конкретно Forth
Напиши функцию, считающую корни квадратного уравнения на форте, например.
Зачем? Без понятия как их считать, думаю 3-4 строки займет, на тебе лучше просчет косинуса и синуса на ColorForth.
Вот это вот превосходящий язык? Пиздец.
А где тред твоего превосходящего языка? А то из триады CL, Scheme, Forth (которых я хотел выучить в универе), я выучил только полтора. Подсказка: форта среди них нет.
>Зачем?
Чтобы увидеть "превосходящий язык" в действии при трех-четырех значениях на стеке.
>на тебе лучше
О том и речь - выглядит как нечитаемая каша. Write only язык.
>Write only язык.
Ну, он щас начнёт оправдываться, что это только для тебя и вообще это acquired taste.
>что это только для тебя
Самое смешное, что я-то как раз понимаю, что там происходит, потому что эмулятор GA144 тыкал в свое время, а этот дурачок - наверняка нет.
>Чтобы увидеть "превосходящий язык" в действии при трех-четырех значениях на стеке.
Кажется я тебя понял, ты хочешь показать неудобность стека. 3-4 это как раз рекомендуемый максимум, с большим количеством значений на стеке в colorforth вообще никак нельзя работать, там pick нету. Но стек превосходен на самом деле.
Я ограничиваюсь тремя значениями, в моем форте нету слов которые могут смотреть за 3 элемент, то есть максимум это rot/-rot.
Что бы не плодить значения на стеке, есть множество правил которые мне трудно уловить и описать, но вот некоторые способы которые универсальны и сразу приходят в голову.
1. Сделать код более простым, например код моего ассемблера x86 не хранит стеке никогда более 3 значений, а так же в его коде нету циклов вообще включая рекурсии, данные должны течь по коду, нужно организовывать его так что бы меньше перемещать значения на стеке просто так
2. Использовать переменные, в Forth локальных переменных нету, поэтому нужно использовать глобальные, замечу что проблем с многопоточностью не будет, их можно помещать в TLS
3. Это Forth, тут можно что угодно, см.скриншот, реализация лисплайк записи в одну строку
>Вот это вот превосходящий язык? Пиздец.
А что смутило? В ColorForth если что цвет имеет значений, например если выделить токен красным, то он станет определением (словом, функцией, процедурой, defun итд), с этим связанно очень интересное решение, все токены хранятся в одном машинном слове, пару бит для аттрибута цвета, остальные под сам текст, текст хранится сжатый, иначе бы много в машинное слово не влезло, значения переменных при этом не являются текстовым токеном, а являются отображением реального значения, таким образом если в фоне запущен процесс выполнения, в редакторе можно видеть как изменяется значение, возможно возникнет вопрос, а в файле кода значение тоже изменяется? Но файловой системы у ColorForth нету, пользователь просто оперирует блоками памяти, которые можно сбрасывать на диск.
Вернемся к читаемости, код довольно простой, не содержит большого количества значений на стеке или их перестановки, код так же очень компактен, каким бы он не был, прочесть его довольно просто, особенно с описанием https://mschuldt.github.io/www.colorforth.com/cos.htm
Добавлю еще. ColorForth на картинке, запущен на 144 ядерном 18 битном процессоре, всего 0x1f опкодов, и 24 максимальная глубина стека. Ядра расположены сеткой, они между собой все не связаны, и вообще они все асинхронные и у них нету тактовой частоты. Но соседние ядра могут посылать друг другу сигналы или читать их, поэтому программируя на этом процессоре есть возможность вручную задавать на карте специфичную программу для определенного ядра, можно сделать его просто связующим, можно выбрать для него программу которая будет что то делать, памяти в них не особо много, 64 машинных слов на ядро. Но этого достаточно для обработки изображений, декодирования видео, запуска ColorForth что бы разрабатывать программы под данный тип процессора с него самого.
>реализация лисплайк записи в одну строку
Кажется мне, что ты пиздишь. Сложи больше двух значений за одну операцию.
>1. Сделать код более простым, например код моего ассемблера x86 не хранит стеке никогда более 3 значений, а так же в его коде нету циклов вообще включая рекурсии, данные должны течь по коду, нужно организовывать его так что бы меньше перемещать значения на стеке просто так
>2. Использовать переменные, в Forth локальных переменных нету, поэтому нужно использовать глобальные, замечу что проблем с многопоточностью не будет, их можно помещать в TLS
Не язык хуёвый - вы хуёвые.
Все, кому нужно больше трёх отступов - не программисты.
Кажется я тебя понял. Ты хочешь сбросить всё сложность на программиста снова, как делали тысячи людей до тебя. Язык, который уменьшает сложность это как раз рекомендуемый дефолт, с ассемблероподобными языками вообще нельзя работать за пределами встройки.
> реализация лисплайк записи в одну строку
> Велосипед, который едет только вперед и иногда взрывается.
>Кажется мне, что ты пиздишь. Сложи больше двух значений за одну операцию.
О, кажется получается кого то удивлять. Ты имеешь виду принятия функцией + списка чисел? Я уверен есть лиспы которые принимают лишь два аргумента всегда, но так можно сделать, результат на скриншоте, хотя мне кажется это лишним усложнением.
>Не язык хуёвый - вы хуёвые.
Не понял, я никого не осуждал, просто говорю что на форте не стоит заводить слишком большие стеки, их можно заводить, но если они маленькие то это удобнее, вот и все.
>Кажется я тебя понял. Ты хочешь сбросить всё сложность на программиста
Вовсе не так, я наоборот против сложности, все эти советы про то что бы сохранять простоту.
>Язык, который уменьшает сложность это как раз рекомендуемый дефолт
Не знаю про рекомендации, но языки которые уменьшают сложность мне нравятся, Forth мне кажется уменьшает сложность очень сильно, нету перегруженного наследия и большого рантайма, и сам язык способствует ограничению роста сложности, не нужно как в CL определять какие то пакеты, пользователей, иметь странный стандарт и большую ВМ.
Не играл в эту игру. А ColorForth довольно удобен, это даже не среда а ОС.
>>2773738
Этот велосипед не взрывается, но про "едет только вперед" хорошее замечание! Писать код для решения конкретной задачи, и не думать о том что бы он был общим, это то что помогает снизить сложность, и уменьшить количество кода.
Стиль форта это писать много маленьких слов и соединять их, не стоит писать слова которые занимают больше одной линии, лучше что бы они включали в себя 3-6 слов и на этом все.
Эти слова должны передавать друг другу значения, аргументы, вот тут стеки становятся очень полезными, о, и да, СТЕКИ во множественном числе. Удобно когда есть отдельный стек для строк, векторов. Так вот, через регистры тоже можно передавать аргументы, но как организовать рекурсию? Придется сохранять регистры в стек, или еще куда то. Придется назначать регистры. Придется заводить локальные переменные.
Так что стек это очень удобно, самое простое и элегантное решение. Регистры сильно переоценены.
>Я уверен есть лиспы которые принимают лишь два аргумента всегда
Это покалеченные лиспы для встройки значит. Не говори о том, в чём не шаришь. S-expr это база. И они умеют в какое угодно количество аргументов. Я пытался сдизайнить конкатенативный гомоиконичный язык один, чтобы править всеми. И за пределами комбинаторов это было анриал. Та же unlambda в пример. Знаю, что вот эта ебола с фиксированным количеством аргументов - это стойкое такое свойство стекозависимых языков. Не языков со скобочками, типа того же Om.
>Вовсе не так, я наоборот против сложности, все эти советы про то что бы сохранять простоту.
Ты даже не догнал, что я тебе сказал. Программист - это прослойка между ТЗ и кодом. И превратить ТЗ в код тем сложнее, чем проще язык ты используешь.
Я говорю не о сложности языка или сложности вымученных программ, которые ты сутками переписывал, чтобы они вмещались в стек. Я говорю о сложности кодирования решений проблем. И у форта она невъебенно выше, чем у лиспа.
>Forth мне кажется уменьшает сложность очень сильно
См. абзац выше. Если ты умеешь танцевать с гирями на яйцах, это ещё не значит, что гири облегчают танец для всех остальных.
>>2773781
>Писать код для решения конкретной задачи, и не думать о том что бы он был общим
Г-споди, какая мерзость. Уноси.
>Это покалеченные лиспы для встройки значит. Не говори о том, в чём не шаришь.
Какая разница для чего они? Я решил взять такое поведение.
>Я пытался сдизайнить конкатенативный гомоиконичный язык
Форт это не про стек, конечно они тесно связанны, но стек в форте есть только потому, что это самое элегантное решение, смотри комментарий выше.
>И превратить ТЗ в код тем сложнее, чем проще язык ты используешь.
Не думаю что это так, язык может быть сложным как PL/1 или COBOL, то есть перегруженным ненужным функционалом который не поможет разрабатывать программу.
>Я говорю не о сложности языка или сложности вымученных программ, которые ты сутками переписывал, чтобы они вмещались в стек.
В моем форте стек бесконечный, это просто стиль программирования с маленьким стеком, я ничего не переписываю, я так изначально пишу.
>Я говорю о сложности кодирования решений проблем. И у форта она невъебенно выше, чем у лиспа.
У Forth есть стек, REPL, простой и удобный синтаксис который можно расширить, не могу согласится с таким утверждением. Хотя думаю что на лиспе можно не сильно длиннее реализовывать программы которые можно реализовывать на форте, в конце концов можно написать свои похожии функции, но форт это минимальная основа, я не вижу причин выбирать перегруженный вариант, лучше упростить оригинальную проблему.
>Знаю, что вот эта ебола с фиксированным количеством аргументов - это стойкое такое свойство стекозависимых языков.
Форт никак не контролирует эффект слова на стек, можно принимать любое количество аргументов, и возвращать так же любое количество значений. Не понял про какое фиксированное количество ты говоришь.
> Стиль форта это писать много маленьких слов и соединять их, не стоит писать слова которые занимают больше одной линии, лучше что бы они включали в себя 3-6 слов и на этом все.
Стилистически это неплохо, но - прощай производительность.
> Эти слова должны передавать друг другу значения, аргументы, вот тут стеки становятся очень полезными, о, и да, СТЕКИ во множественном числе.
В ЯВУ стек(и) прячется компилятором. Он есть, но не беспокоит.
> Удобно когда есть отдельный стек для строк, векторов.
Костыли для языка, где нет кучи.
> Так вот, через регистры тоже можно передавать аргументы, но как организовать рекурсию?
Регистры - автоматический кэш для самых важных переменных. Все трудности их использования ложатся на компилятор. Человек видит имена. Это удобно. Это работает быстро.
Напиши функцию для вариабельного количества аргументов без маркера остановки.
Вот про это. Я заметил это ещё когда обратную польскую нотацию в унике учил. Функции без маркера на стеке всегда имеют фиксированное количество аргументов. Это прям фундаментальное свойство же.
С этим могут быть проблемы, если я хочу, чтобы все функции могли принимать неограниченное количество аргументов. Тогда на каждый колл нужен маркер остановки на стеке. Комбинаторы это обходят довольно изящно, но за это расплачиваются ещё большей простотой. А значит ещё большим гемором программиста.
Посмотри по ветке откуда доёб идёт.
Плюс держи в голове, что я пытался взять какую-нибудь простую формулу (потому что именно на арифметике тестил насколько нагромождёнными будут программы) и проверить разные типы языков, как на них это будет реализовано.
Доёб специфичный, потому что я про специфичное свойство лиспа говорил, которое он имплементнуть не смог, и ещё и огрызается потом.
>Какая разница для чего они? Я решил взять такое поведение.
>Стилистически это неплохо, но - прощай производительность.
Оптимизации это не сложно, мой Forth написанный на ассемблере не занимает и 10 кб, но там есть инлайнинг маленьких слов, оптимизация хвостовой рекурсии, и оптимизация комбинации заданных слов.
>В ЯВУ стек(и) прячется компилятором. Он есть, но не беспокоит.
Не понимаю зачем его прятать.
>Костыли для языка, где нет кучи.
Кучу можно реализовать самому, а Forth который запускается на ПК почти всегда имеет доступ к системному malloc(). Куча это неудобно, нужно где то хранить данные для освобождения, нужно иметь указатели, возможно придется писать сборщик мусора, не лучше ли использовать стек? Элементы на кастомном стеке могут выделятся с помощью кучи, drop для такого стека сам освободит их. В С++ можно сказать так и сделали, вышли за пределы видимости переменной, вызвался деструктор, а можно просто использовать стеки.
>Все трудности их использования ложатся на компилятор.
А вся сложность компилятора и его инструментов уже на программиста и пользователей, мне кажется нету смысла делать сложные компиляторы, которые явно нельзя будет уместить в экран кода 80*25, когда можно взять стеки.
Но вообще, если не брать мое мнение, то некоторые реализации форта компилируются в регистры, мой форт делает более простую оптимизацию, верхнее значение стека это всегда регистр RAX. Если мне нужно увеличить на 1 первое значение стека, это будешь просто RAX INCQ
>Напиши функцию для вариабельного количества аргументов без маркера остановки.
Это довольно просто, я всегда могу получить указатель стека, а через него посчитать сколько аргументов пришло.
>С этим могут быть проблемы, если я хочу, чтобы все функции могли принимать неограниченное количество аргументов.
Они и так могут принимать сколько угодно аргументов в Forth, можно хоть весь стек выгрести, или просто его посмотреть, что бы вывести например.
>Доёб специфичный, потому что я про специфичное свойство лиспа говорил, которое он имплементнуть не смог
Любые функции в скриншоте #2 могут принимать неограниченное количество аргументов, которые задаются так же как в лиспе. Так что реализовал.
>а через него посчитать сколько аргументов пришло
Вот это я не понял. Что значит "пришло"? Как ты отделишь аргументы твоей функции от остального стека?
В форте нету аргументов, их невозможно отделить от стека. Тут либо ты чего то не понимаешь, либо я. Покажи простой пример на лиспе с твоим переменным количество аргументов, а я реализую это на форте.
(- 2 3 (+ 4 5 6 7))
Вроде понятно.
На стеке окажется
7 6 5 4 для + и 22 3 2 для -
А если это
DoSomething + -
И после DoSomething на стеке лежит
3 2 7 6 5 4
?
Что делать? Класть в стек
; 7 6 5 4 ; 3 2
?
>О, кажется получается кого то удивлять. Ты имеешь виду принятия функцией + списка чисел? Я уверен есть лиспы которые принимают лишь два аргумента всегда, но так можно сделать, результат на скриншоте, хотя мне кажется это лишним усложнением.
Вот это не заметил. Ожидаемый результат, правда, из-за закрывающей скобочки. Она и есть маркер остановки. Но тут уже не однострочник.
Когда я это осознал, то понял, что можно, в принципе, и лиспоподобно на форте писать. Но зачем, когда уже есть лисп?
Я так понимаю то что выше не нужно демонстрировать? Оно в принципе и так работает.
>Вот это не заметил. Ожидаемый результат, правда, из-за закрывающей скобочки.
В лиспе ее что ли нету? Можно и без закрывающей скобки обойтись, если покажешь как это делают в других языках.
>Но тут уже не однострочник.
Да, двустрочник.
>можно, в принципе, и лиспоподобно на форте писать. Но зачем, когда уже есть лисп?
Незачем действительно, у форта свой подход.
>
> мой Forth написанный на ассемблере не занимает и 10 кб
Какое значение это имеет, ведь писал ты для х86.
> Куча это неудобно, нужно где то хранить данные для освобождения, нужно иметь указатели, возможно придется писать сборщик мусора, не лучше ли использовать стек?
Ясно-понятно
> которые явно нельзя будет уместить в экран кода 80*25
Зачем?
>Какое значение это имеет, ведь писал ты для х86.
>>которые явно нельзя будет уместить в экран кода 80*25
>Зачем?
Чем меньше кода тем проще понять проект, чем меньше кода тем проще что то переделать, возможно полностью, проще поддерживать, проще переносить на новую платформу, в маленьком коде меньше багов, в маленьком коде меньше сложности, а сложность растет вовсе не линейно.
>Ясно-понятно
Я вижу простой и удобный стек, и альтернативы для которых придется написать еще ~10 кб.
Ты хоть что-то написал на своем форте кроме его самого? Это прямо типичный путь форт-энтузиаста: написать свой форт, а потом забросить, не написав на нем ничего толком.
Ну мне кажется это не так уж и презрительно, у энтузиаста будет удобный REPL для проверки разных идей, я постоянно его с этой целью запускаю, что то посчитать, попробовать какую то структуру, посмотреть работу какой то инструкции x86.
Из готового я например сделал блог. В своем форте я не делал возможности вызова С библиотек, потому что это подразумевает связь с libc, у меня есть одна функция syscall которая принимает два аргумента, длину аргументов и номер прерывания, и я ей делаю все. Поэтому в блоге я реализовал БД и сервер, шаблоны, итд, все это заняло 500 строк, сейчас я думаю что это слишком много, и что блог это не то что я хочу, попробую сделать аналог твиттера но с упором на контент, его наверное уже опубликую со своим контентом. А в разработке проектов несколько.
Пидарас тот, кто заголовок видео делал. Это бэйт.
Я думал, что будет "Comparing proteing structures with Clojure", а это было "Comparing protein structures among themselves with use of Clojure programming language".
Я хочу знать, как программы похожи на белки, а не как вы своей заумью занимаетесь на другой зауми.
заебали дурачки со своим ноем про скобки
Ты понимаешь, что скоби это то, что делает лисп метаязыком, что так сильно отличает его от остальных языков?
Я лично под большим впечатлением от того, что можно писать на любом языке, а это все равно будет выполняться на джава машине. Казалось бы, какие здесь плюсы? А такие, что можно из любого языка импортить либы и использовать в любом другом языке на JVM. Так приводили пример как на питоне ставили брейкпоинты в браузере.
Граальвм это как раз про то, что можно писать на любом языке для жвм, а компилироваться оно будет в нативный код. Из минусов - бинарники получаются жирные, это тебе не ГОвняшка всё равно. Производительность также ниже, чем на жвм. В принципе для фанкшн-эз-э-сёрвис пойдёт, но всё равно чуток костыльно получается, имхо.
Потому что скобки лучше и удобнее. Алсо сделали же.
Удачи перекомпилировать что-то сложнее лабы в твоём ПТУ на каждое сохранение. Прикольно наверное ждать джва часа после каждого изменения файла.
Для этого придумали объектные файлы и makefile, но в ПТУ этому не учат, поэтому откуда тебе знать.
Я и написал джва часа, а не восемь часов.
Ладно, поебать. local-time есть, и хуй с ним.
Если внутри либы тоже 32х битный timestamp, то узнаю со временем. А если они пофиксят 2к38, то и не узнаю. Главное дожить.
* (encode-universal-time 0 0 0 19 9 3000)
34735194000
Ни в фурри, ни в зоосексуальности ничего плохого или странного нет. В программирование лично я как зоо вкатился чтобы на удаленке трахаться с хаски, и цели добился. В айти идут не ради больших зп, а чтобы уйти нахуй от родственничков чтоб не пытались обесценить твои мечты и интересы.
Чёто листал нулевую и увидел твой пост, посмотрел на шапку НУ КОНЕЧНО ЖЕ ЭТО ЛИСП-ТРЕД...КАКОЙ ЕЩЁ...
Вообще-то лисперы наоборот гомофобные орки со злыми рожами, ты с растом и хаскелем перепутал же
В Зеленом банке есть реальный сервис на кложе. Можно попробовать сунуться туда.
Еще, хочу сказать. Сейчас работаю над проектом у которого довольно большой техдолг. Написан он на питоне. И написан он преимущественно с помощью функций без классов с перегрузкой методов через 10 колен вверх. И код читается очень просто! Не смотря на то, что это дикий говнокод с функциями по 1к строк, он все равно читается просто.
Работал в другой конторе, там был прилизанный код прошедший через дохуя ревьюверов. И как же у меня горела жопа с кучей оберток, неоднозначной перегрузки методов, многоступенчатого наследования. Зато нет дублирования, нахуй! Зато код универсальный, нахуй! Который невозможно читать.
Короче, начал склоняться к тому, что наивное решение задачи зачастую лучшее, т.к. читается проще. Нахуя мне делать самописный итератор из класса, когда можно запустить while/for?
Есть такое, все эти DRY и прочие мантры в реальном коде скорее вредят, чем помогают. Но конечно чтобы понимать, когда надо копипастить, а когда абстракцию городить, всё равно сперва нужно обмазаться всеми этими мантрами.
https://research.swtch.com/coro
Нахуя?! Нахуя они это тащат? Наихудшая же абстракция по эргономике. Вот нахуя?
заодно бамп треду
>функций без классов с перегрузкой методов через 10 колен вверх. И код читается очень просто!
> прилизанный код прошедший через дохуя ревьюверов. И как же у меня горела жопа с кучей оберток, неоднозначной перегрузки методов, многоступенчатого наследовани
> наивное решение задачи зачастую лучшее,
Ещё один прозрел, что паттерны и бездумное следование непонятно кем придуманным правилам не является хорошим стилем и не делает код более поддерживаемым, поздравляю.
мимовимоблядь
Это да.
Для емакса же есть эмуляция вима. Так-то он сам не сложный. По большому счету кроме навигации и M-x ничего знать и не нужно.
>Для емакса же есть эмуляция вима.
Мне ОКР не позволит. Я ЧУВСТВУЮ, что evil-mode смотрится неорганично в экосистеме емакса, словно сбоку скотчем примотали. Поэтому придется мапить ctrl на caps и ломать пальцы.
>словно сбоку скотчем примотали
У меня такое ощущение вызывает каждая вторая хуйня в линукс/айти сообществах.
Например, мода все выводить через консоль, файловый менеджер, текстовый редактор, нахуй дебаггер. А по итогу все глючит и пердит. А ты уже привыкаешь, потому что ну не мышкой же файлы перетаскивать и по фолдерам кликать.
(Нео-)вимом я как основным редактором я не пользуюсь, потому что через SSH он работает в 5 фпс, если сервер не в локальной сети. Да и половину функционала надо накатывать руками. Наверняка ssh фиксится каким то расширением, но нахуя, когда вскод практически из коробки это поддерживает. Кто-то скажет, фу, электрон, а я скажу, что гипертекст как раз является наиболее логичным выбором как основа для IDE, потому что код со всякими референсами, подсказками автокомплита и т.д. это самый ни на что гипертекст и есть. Гигабайтом памяти ради удобства я пожертвовать готов. Еще можно юзать среды от IKEA IDEA, там нормальная поддержка SSH есть и большая часть функций работает из коробки.
А имакс для меня выглядит архаикой дикой, у вима хотя бы свежая итерация в виде неовима есть.
>>2905473
У кложи есть интерактивная среда Clerk, сам не юзал, но выглядит интересно, не хуже Pluto.jl и Jupyter. Поиграться самое то. А чтобы не поиграться что-то кроме кложи брать смысла нет, вакансии на не-кложу-лисп это легенда на уровне ваканский на хаскелль, насколько мне известно.
На хаскелль-то вакансии как раз есть/бывают, в том числе в России.
>А имакс для меня выглядит архаикой дикой
У него есть киллер фичи для редактирования текста, если привыкнешь, трудно уйти. История копи-пейста, например, редактирование текста прямоугольниками. Ну и макросы - это просто имба, особенно, когда они со всем окружением интегрированы. То есть если, например, есть перечисление в коде вида A = 1, B = 2 .. и надо куда-то в середину добавить элемент и перенумеровать следующие, то можно просто копировать число во встроенный калькулятор, делать там плюс один и вставлять обратно. Запускаешь макро - хуяк, список перенумерован. Или аналогично список констант каких-нибудь в шестнадцатеричный формат перевести. Встроенный файловый менеджер опять же, можно тупо список файлов скопировать, обработать макросом, в кавычки там обернуть, и в код вставить.
Так "архаичный" имакс всё ещё на порядок лучше как экстенсибл среда исполнения, чем неовим. Вим, как ни крути, это просто текстовый редактор с хуевыми кейбиндингами.
Имхо, емакс - этот попытка обойти ограничения по железу своего времени.
Забей, это просто секстанство очередное. Не пытайся понять. Захочешь вкатиться, вкатишься, тоже будешь при каждом удачном случае советовать и зазывать. В принципе даже на ранних этапах можно экстрполироватьи п онятьв се плюсы и фишки, которые можно получить, если освоишь, но лично мне было впадлу после 20 лет за компом переучиваться на хоткеи емакса/нео-вима. Я просто не готов несколько мсяц притираться ради экономии в 200мс. Ну вот допустим ты станешь эффективным и быстрым, но нужно ли оно тебе? Ты в любюолм случае больше думаешь/читаешь/смотришь, чем печатаешь и скорость, которую адёт тебе емакс просто теряется во всё олстальном. Если кто-то считает иначе, то рад за них, ведь в конце дня самое главное, чтобы задачи выполнялись и тебе было комфортно.
У вас шапка гавно лютое, переделывайте
Пошёл коупинг.
>Имхо, емакс - этот попытка обойти ограничения по железу своего времени.
Ахаха. В "свое время" он всем казался ультра тормозным и жирным, примерно как эклипс в нулевые. Eight Megabytes and Constantly Swapping.
>но лично мне было впадлу после 20 лет за компом переучиваться на хоткеи емакса
Никогда не понимал тему с хоткеями у емакса. Они же как в линкусовом терминале. Там тоже C-f, C-b, C-p, C-n, M-a, M-e и т.д. Ну или в nano. Т.е. это какие-то базовые умения же должны быть, если с линуксом работаешь.
>линкусовом терминале
нормальные люди в этой хуйне только команды максимум запускают, никакие наны дольше чем на 20 секунд не запускают
всё отслаьное для красноглазых дрочеров
У "нормальных людей" вообще комп в кабинете только чтобы в пасьянс играть и ютуб смотреть, работает за компом секретарша.
У нормальных все вопросы решает ИИ
>Ахаха. В "свое время" он всем казался ультра тормозным и жирным, примерно как эклипс в нулевые.
Что "ха-ха"? Почитай когда и зачем появился лисп и лисп машины.
>Никогда не понимал тему с хоткеями у емакса. Они же как в линкусовом терминале. Там тоже C-f, C-b, C-p, C-n, M-a, M-e и т.д.
Одно дело пернуть пару команд в терминальчике и забыть, а другое дело работать с этим продолжительное время.
Лисп появился в 50-ых, чтобы обрабатывать списки. Лисп-машины - в 80-ых. Но при чём тут емакс...
Держу в курсе.
10-ая аллегра у меня на линуксах не работает - openssh определённой версии требует, а мне в лом этим озадачиваться.
У меня на елиспе написан клиент двача и сервер для одноплатника, который обрабатывает данные с гроубоксов.
Понятно. Я думал ты как-то хочешь буквально диктофон свой сделать и прикрутить лисп к нему. Очень фантастично.
Хм, не знаю - не разбираюсь. Погуглил про clisp, так что наверное можно и так.
Есть же бифф, или как он там называется сейчас, где всё из коробки на модном htmx.
Алсо есть олдовый люминус, где все компоненты уже собраны в кучу и проект создаётся из темплейта.
Ну и hyperfiddle
Вот такое, например: https://2ch.hk/gg/res/1682199.html (М)
Back: Clojure (Ring + Compojure + Monger).
Front: ClojureScript (re-frame).
>>2936017
ClojureDart имеет шансы взлететь.
Спасибо
>ClojureDart имеет шансы взлететь.
Нет спасибо, я только в sbcl дрочу, в остальное лезть не хочу. Просто зазотелось что нить для мобилы по бырому набросать и упаковать.
Какой же ваш емакс однопоточное, глобальностатическопеременное убожество. Подумал сначала что он будет идеален для того что бы его запрограммировать под себя, но теперь буду смотреть VSCode, надо было сразу его брать, его плагины выглядят намного более продвинутыми и удобными, вот например для graphviz.
Спасибо что поделился, это очень важно для нас!
Используете ли вы evil-mode?
Ну я использую.
И это всё?
> последний пик
В Scheme такая же слабая типизация как в JavaScript? Можно вычитать числа из строк?
Неудивительно, что подобное говно оказалось никому не нужно.
Тогда к чему сравнение с JavaScript? Какой-то дебил ляпнул, и все дружно повторяют? Что там вообще общего, кроме анонимных функций с замыканиями, которые даже в C++ есть?
Вообще насколько я читал, Айк хотел сделать скриптовый язык на базе Лиспа, но руководство Netscape его послало нахуй и сказало делать клон жабы. Он разозлился и на отъебись сделал полный кал.
>Тогда к чему сравнение с JavaScript?
Сейчас бы всерьёз обсуждать смищную картинку из интернетов...
>Что там вообще общего, кроме анонимных функций с замыканиями, которые даже в C++ есть?
eval.
> "лого" CLISP'a - это еврейская семирожковая свеча
> на реддите коммон лиспа везде флаги Украины
> в гайде на кложу пикрил 3
Что за приколы у вас в лисп-камунити?
(((lisp)))
Дваждую интересная тема
> Можно вычитать числа из строк?
Нельзя. Типизация динамическая, но интерпетатор ругается, когда ты в функцию данные тех типов подсовываешь, или арность не соблюдешь.
Преобразовать нужно явно.
К примеру:
(string-append (number->string 2) (number->string 4))
Сделать как жабаскарипте типа (string-append 2 4) не выйдет.
Нафиг тебе Лисп? Юзай JSON.
Имеет смысл только если твоё ПО написано на лиспе. Если это не так, то JSON или YAML.
Пока у императивных петушков в реактивных средах разработки отзывчивость на каждый пук с наносекундными задержками, я буду конём впердоливать перезапуски и ебаться со сторонними костылями для слизня чтобы отладить пару небольших кусков кода.
Вот такой киберпанк мы заслужили, тов. МакКарти.
Мог бы просто написать, что не знаешь, что за перезапуски и зачем они нужны
Кондишоны/рестарты? Допустим, я не знаю. Объясни тогда свою позицию более ясно. Как не пердолясь я смогу конём ебать фреймстек?
Сигналы в лиспе, в отличие от исключений, не раскручивают стек. Таким образом, ты можешь обработать его где-то выше по стеку и затем передать управление ниже. Хоть в ту же точку, где сигнал был вызван. break и continue именно так и работают.
Короче, достаточно удобная штука. И отладку упрощает, и позволяет дать протокол управления потоком выполнения чужому коду.
Мог бы просто написать, что не знаешь, что за режим такой и зачем он нужен.
Да, общелисп.
>Где этому научиться? Какая литература?
Есть неплохая ознакомительная статья https://lisper.in/restarts
Если хочешь нырнуть глубже, ищи книгу The Common Lisp Condition System
Слишком непонятный для вкатывальщиков и волков это я тебе в глаза нассал сейчас, не знаю, хоть тред бампну, можешь lisp curse навернуть, но там тоже в глаза ссут
EDN подойдёт? В Clojure применяется для зависимостей, например.
> 6 лет
> не может пофиксить одну строчку
Окей, прежде чем я форкну и исправлю это дерьмо, спрошу:
Есть альтернативы этой либе?
A, там есть :raw и :splicing-raw
Нахуй фиксить это тогда. Закостылим по-быстрому.
Пчеликс размазался слишком тонко по своему дохуелиарду репо.
Алсо, мне стало интересно.
Могу я, в качестве костыля, сделать нечто вроде https://pastebin.com/9j2vBSnh ?
И можно ли это сделать как-то красивее?
Просто свежайшая хуйня, которая меня выбесила своей тупостью: у neil при создании scratch проекта и добавлении тестов добавляется одна версия, а при созданиии app проекта другая, более свежая.
При добавлении тестов, алиас добавляется в deps.edn не под ключ :aliases, а просто в конец главной мапы.
В проеке app тесты уже добавлены, но сука не добавлена :exec-fn
Хули так насрано-то, просто базовые очевиднейшие вещи созданы через хуй.
neil как я понял просто удобная обёртка над deps-new, которая в свою очередь использует темплейты clj-new, которая в свою очередь основывается на проектах clj, boot и leiningen
Пиздец прсото. Нагородили хуйни, которая работает всегда на 80%. Такое ощущение, что специально сделали так, чтобы нужно было пердолиться.
Второй пункт нашей программы: документация на официальном сайте, которая просто являет собой кучу каких-то постов в блоге, разбросанным по разным местам. Посмотрите на официальную документацию к elixir, их getting started, вам не стыдно после такого вообще? Пиздец.
Немного глянул веб-разработку, там вообще мрак. Даже не представляю, сколько лет мне понадобится, чтобы из всего этого кладбища-помойки библиотек связать стандартный работающий бложик.
И это я ещё не дошёл до билда в продакшен и дистрибуции. Чую там меня ждёт всё то же саме, что и выше, только добавятся приколы билдинга Java-проектов.
Но сам язык мне нравится, конечно.
Испытываю нечто похожее. Сейчас использую clojure только в виде бабашки как некая замена питону
Возможно ли в каком-либо из лиспов изменить правила компилятора или кода так, чтобы, например, заменить символ скобки на другой символ (или вообще даже убрать его)? Другими словами, как, например преобразовать компилятор в понимающий конструкции вида "ä+ 2 3 (" вместо "(+ 2 3)"? Или же в "+ 2 3 end".
Можно. В коммон лиспе делается через макросы чтения (reader macro).
Можно даже такие штуки вытворять https://github.com/y2q-actionman/with-c-syntax
Racket построен на этой идее. Там вообще можно какой хочешь синтаксис сделать.
Мне кажется или ракета требует больше телодвижений для определения своих синтаксических конструкций, чем общелисп?
Не сколько ракетка, сколько scheme.
Если семантика твоего DSL пишется легко - обычными макросами, то когда дело касается синтаксиса... тут уже другие материи начинаются. А учитывая не самую показательную документацию ракетки.
Тут прям нужно очень внимательно повторяю блядь внимательно вкуриваться в документацию, ибо вот так с наскока неасилить (sic!).
Однако взамен ракетка даёт такое что не даст тебе вообще ни один языков программирования (кроме Prolog).
Я вот думаю неплохо было бы сделать язык, в котором:
1. Будут зависимые типы;
2. Разрешена только простая рекурсия (общая рекурсия под запретом).
3. Эффекты как отдельная конструкция языка.
С точки зрения теории это будет самый безопасный язык программирования.
Странно, что такой язык ещё не появился. Как по мне такой язык будет безопаснее какого-нибудь Раста.
Просто сделай lein new foo и не парься.
Просто возьми luminus или biff и не парься.
Для билда просто напиши lein uberjar и не парься.
Таких языков десятки, если не сотни, создано за последние лет тридцать. Гугли пейперы по ключевым словам substructural recursion, total functional programming и т.п.
Идрис это просто зависимые типы. Они и в ракетке есть. А вот чтобы и завтипы и эффекты и тотальность.
Тебе это кто-то рассказал или сам примерно почувствовал?
У них даже в faq сказано, что язык является тотальным, а про монадки и эффекты -- всего парой страничек дальше
Зачем им быть отдельной конструкцией? Более ясно можешь излагать мысли, чтобы не приходилось додумывать за тебя?
> Зачем им быть отдельной конструкцией?
Очевидно чтобы спокойно вызывать эффекты в программе напрямую, без всяких изъебств оставляя язык функционально чистым.
Вот есть лямбды - чистые и без эффектов:
myFun = lambda x => abs(x)
А вот есть эффекты:
main = effect => print[myFun(-3)]
То есть, мы выделяем эффекты в отдельную конструкцию, оставляя лямбды чистыми. А если функции в языке чистые априори, то и сам язык функционально чистый.
Ну то есть делим язык ну чистые функции и на грязные процедуры, иначе говоря.
Тебе система типов и так не даст мешать чистый код с эффектами. Более того, даже позволит их типизировать https://idris.readthedocs.io/en/latest/st/examples.html
Если лямбды могут вызывать эффекты (хоть и типобезопасно), то это уже не чистый функциональный язык.
Это уже твой шизофанатизм. Другое ключевое слово никак суть не поменяет.
То есть у джейнстрит есть бабло, чтобы спонсировать популярных ютуберов-миллионников, но нет денег, чтобы запилить наконец спустя 20 лет нормальный тулинг для окамла. Заебись, чо.
У окамла уж лет как 10 всё нормально с инструментарием.
Сейчас ещё ocamlbuild окончательно выкинут и будет вообще заебись.
Нет, просто вместо старого кала запилили новый кал, который чуть менее каловый (но всё ещё кал). Про нормальную единую стдлибу я уж молчу, надежды нет. Так окамл и сдохнет в безвестности несмотря на джейнстрит и гранты французиков.
А что же тогда не кал? Или у товарища копросомелье любой цвет - оттенок коричневого?
Хаскель
инб4 олвайс хас бин
В каком плане что? Стдлиба где вменяемая? Да где угодно (кроме хаскеля, лол), раст тот же, та же кложа
Сам окамл не кал, мне потому и обидно, что хороший язык запороли распиздяйством и неспособностью договориться и сделать нормально.
Вы заебали. Если что-то может исполнять код вживую - это не значит, что это интерпретатор. В емаксе есть компилятор елиспа в байт-код.
Емакс - это среда выполнения, правильнее всего сформулировать так. ОС это в том смысле, в каком "GNU" из GNU/Linux является "ОС". Не ядро, а утилиты и пользовательское окружение.
>В каком плане что?
Это уж тебе должно быть виднее, что именно ты назвал калом.
>Стдлиба где вменяемая?
У окамля вменяемая, кстати, просто многим непривычно, что их несколько и развиваются сообществом. Как у борщелиспа.
Такой подход имеет свои плюсы.
Почему нодежс сообщество не напишет одну нормальную стандатную высокоуровневую библиотеку вместо 100500 мокрописек isEven от ноунеймов с майнерами...
Сообщество мудацкое ¯\_ (ツ)_/¯
У раста, судя по количеству зависимостей даже у простых библиотек, примерно такое же.
Есть джава (язык), есть джава (джейвиэм)
>сдох
Для дохлятины он довольно бодро развивается. Кложа на его фоне дохлее выглядит, хотя ей тоже можно сделать скидку как языку, который никогда бы не стал мэинстримным.
Я хз, что ты понимаешь под "развивается". Окамл буквально мёртвый - либ нет, вакансий нет, книжки раз в 10 лет выходят, на реддите 3.5 подписчика. Развивается в смысле релизы языка пилятся - тут да, ну так они ж на грантах сидят, академия все дела.
Так там же цельный джейн стрит есть! Но в целом да. Для нишевых вещей типа компилятор написать отличный инструмент. Но в мире мало где его используют.
Что обычно понимают под "развивается"? Вот то и имею в виду.
По-моему, ты принимаешь отсутствие мэинстримной суеты за отсутствие развития. Либо просто уныло треллишь.
> Развивается в смысле релизы языка пилятся
Не только. Развивается и экосистема языка. Из недавних вех - dune. Слава богу, теперь нормальнаяохуенная система сборка, а не тот ужас, что был до.
>>3017920
>Так там же цельный джейн стрит есть!
А как же мираж? Спрос на опердени в виде unikernel никуда не делся
А, дюн это недавнее, ок. И это охуенная система сборки. Ну ок.
Что обычно понимают под развивается - этого у окамла нет, на нём тупо никто не пишет. Потому что хуевый тулинг и нет стандартнлй библиотеки (и либ). Поэтому никто не пишет.
И это печально.
Нытье жс детей в счет не берем.
Объективно надо постараться чтобы найти работу на окамл. Я ровно два раза за свою 15 лет карьеру видел роли где была бы возможность писать на нем. Первый это джейн стрит. Второй фейсбук. Третий компания какая-то которая занимается рекламой. Не вспомню уже.
Всего три позиции.
мимо любитель фп порой мониторю рынок
>Всего три позиции.
>за свою 15 лет карьеру
>Объективно надо постараться чтобы найти работу на окамл.
Лол. Тебе-то знать, если ты за 15 лет не смог вбить в поисковик "ocaml job" и перейти по первой ссылке?
Вакансий несомненно меньше, чем на всяких жсах, всё-таки язык не мэинстримный, но мне, тем не менее, удавалось найти работу даже в РФ и даже не в ДС.
Ну молодец хули, я все же предпочитаю выбирать над чем работать, а не кидаться на единственную вакансию в своей мухосрани. Работы на окамл нет. Цифрами этими можно пренебречь. Точка.
>я все же предпочитаю выбирать
>выбирать
>1. рассматривать множество имеющихся вариантов, определяя нужные или желательные и отвергая ненужные или нежелательные ◆
>Всего три позиции.
>за свою 15 лет карьеру
Ты обязательно найдешь работу мечты, главное - не сдавайся
Я даже близко не окамлер, о чем ты вообще. Если бы в него пораньше завезли нормальный параллелизм то может быть и да. А так бог отвел.
И вообще это лиспотред. Расскажите лучше про кложу. Чому умерла? как окамл?
Хочу сгенерировать обёртку по спецификации для одного протокола, и оказалось, что без макросов уже не так удобно.
Ты хотел сказать "меньше, чем на всяких хаскелях, кложах и эликсирах"? Потому что их меньше на порядок, чем на всяких хаскелях, кложах и эликсирах. С жс ясное дело, что сравнивать смешно. Да даже с растом уже смешно сравнивать.
Вообще, надо быть весьма упоротым, чтобы на окамле писать прод, с такой-то экосистемой.
Команда разработки языка не может в поддержку и нормальный маркетинг. В общем-то чем-то похожая на окамл история, но конечно не так всё плохо. Если коротко: комьюнити пишет нечто, оно становится популярным, коре команда выкатывает несовместимый аналог, на все вопросы делает непонимающие глаза типа "а чо такого-то?", далее аналог от коре команды остаётся в недопиленном полусыром состоянии навсегда. Была надежда, что после покупки волмартом нюбанком наймут свежих людей, но нихуя, наоборот такое чувство, что перевели разработку в фул-интерпрайз-мод и собственно прост поддерживают продукты нюбанка и волмарта, шоб ничего не ломалось. Дико расхайпленный спек так и остался в подвешенном состоянии: есть первая альфа-версия, встроенная в язык, которую не допилили, так как она должна была быть депрекейтнута в пользу второй версии; вторая версия также недопилена и непонятно, собираются с ней что-то делать и будут ли впиливать её в стдлибу; тем временем комьюнити ещё до релиза первой спеки запилила либу, которую все выкинули в пользу спеки, которая так и не была допилена, из-за чего комьюнити запилило новую либу, которая с нормальной документацией и просто работает, но при этом типа не стандартная и дублирует встроенную в стдлибу функциональность. В итоге не особо понятно, зачем вообще было впиливать это всё в язык, можно было просто дать прототип и сказать " а теперь пилите рабочее решение сами". Ну короче в таком вот духе. С одной стороны нет такого пиздеца как в скалке например (или в жс, лол), всё стабильно, с другой стороны - развития тоже как-то нет, никаких инноваций уже давно не было, хайпа нет. Ну разве что роамресерч/логсик и их клоны, но это уже чисто продуктовая история.
работу смысл искать есть? Угораю по листу но все раз вкладывать время без перспектив получать за это деньги не могу на данном жизненном этапе. Видел в кложе компромиссный вариант.
> Если коротко: комьюнити пишет нечто, оно становится популярным, коре команда выкатывает несовместимый аналог, на все вопросы делает непонимающие глаза типа "а чо такого-то?", далее аналог от коре команды остаётся в недопиленном полусыром состоянии навсегда.
Если честно, как коммент от зог-зависимого со стажем: выглядит дохуя подозрительно.
А никто денег этой кор команде не заносит, чтобы они специально делали хуйню?
Профит в деньгах, естественно. И чтобы нужным дядям не пришлось кор-команду в твиттере отменять. Возни много)))
В чём профит дядей? В том, чтобы лисп никогда не увидел большого продакшена и популярности. Иначе каждый сам себе режиссёр станет.
Да тащемта поебать. Если сейчас сесть и начать программировать всем подряд, то там тоже будут велосипеды.
Только там будут велосипеды уровня "Уууу, калькулятор, бля, ууу!", а с лиспом будут юзабельные велосипеды.
С чего вы вообще решили, что это какое-то проклятие? Так будет в любом коммьюнити индивидуалистов. Чтобы велосипедов не было, должна быть палка в жопе от какой-то внешней силы.
Похоже, что clos генерирует код для диспетчеризации при первом вызове метода, что не очень удобно, т.к. занимает много времени (около тысячи методов).
>Franz introduces Allegro CL v11 with Neuro-Symbolic AI programming
https://franz.com/products/allegrocl/
https://franz.com/support/documentation/current/release-notes-11.0.html
https://www.reddit.com/r/Common_Lisp/comments/18qih25/allegro_common_lisp_110_from_franz_inc/
>Компания Franz Inc., один из первых новаторов в области искусственного интеллекта (ИИ) и поставщик инструментов разработки на Common Lisp (CL) и решений для графов знаний, представляет Allegro CL v11, включающий ключевые улучшения производительности, которые теперь доступны для решения сложных задач в области ИИ.
>«Быстрое внедрение генеративного ИИ (LLM) подпитывает повышенный спрос на управляемые, основанные на фактах приложения, что значительно влияет на приложения в традиционных отраслях ИИ, таких как национальная оборона, а также в медико-биологических науках, производстве и финансовой аналитике», — сказал д-р Янс Аасман, генеральный директор Franz Inc. «Сложность современных программных приложений в сочетании со взрывным ростом объема данных требует очень универсального и надежного языка программирования. Благодаря Allegro CL v11 разработчики машинного интеллекта получили высокопроизводительный инструмент для масштабирования своих приложений и вывода инновационных продуктов на рынок».
1280x720, 0:12
Free express же хватает, нах мне лицуха на Про или Ынтырпрайз
Кто? Я?1
https://gleam.run/
Где тут лисп?
Питон меня в своё время отвратил динамической типизацией, но насколько я понимаю тут что-то другое?
В лисп можно хоть зависмые типы добавить. Посмотри Typed Racket.
И даже в обычном Racket невозможно любое значение засунуть, ибо есть контракты (проверка типа в рантайме).
нормальные люди бегают по блокам а не по строкам так что shift + [] а начало и конец строки это A и I соответственно
нет ничего удобнее вима, уже тыщу раз доказано на практике
токарь девятого разряда или ветеран сво?
Это копия, сохраненная 15 апреля в 02:35.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.