This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-10-29
Channels
- # aws (1)
- # beginners (65)
- # boot (400)
- # cider (19)
- # clara (2)
- # cljs-dev (29)
- # clojure (127)
- # clojure-chicago (2)
- # clojure-conj (1)
- # clojure-dev (12)
- # clojure-russia (156)
- # clojure-sg (6)
- # clojure-za (1)
- # clojurescript (193)
- # core-async (23)
- # datomic (91)
- # editors (4)
- # editors-rus (1)
- # events (1)
- # hoplon (3)
- # jobs (1)
- # ldnclj (6)
- # leiningen (3)
- # nginx (3)
- # off-topic (5)
- # om (93)
- # onyx (10)
- # re-frame (11)
- # spacemacs (1)
- # testing (2)
- # yada (5)
Если есть кто-нибудь из Петербурга, кто хочет поучаствовать в Clojure Cup, но еще не нашел команду, пишите в личку 😊
потому что рефакторинг даже вроде нормального cljs кода время от времени оборачивается неприятными сюрпризами
Мы перешли с JS на TypeScript (не совсем строго правда) не так давно для одного из проектов - скучаю по динамике( Бесконечная борьба с компилятором
Кстати, может скажу банальность, но только сейчас узнал:
(-> [jay john mike chris]
(->> (filter (comp (partial = "new york") :current-city))
(group-by :employer))
(update-in [""] (partial map :name)))
(as-> [jay john mike chris] persons
(filter (comp (partial = "new york") :current-city) persons)
(group-by :employer persons)
(update-in persons [""] (partial map :name)))
по сути универсальный threading macros, буду юзать его теперь везде
ну вот я и хочу понять, борьба с компилятором происходит вместо борьбы с исключениями в рантайме и юнит-тестами, или в довесок
ну по первых многие вещи просто будет сделать невозможно - банальный apply уже вызывает сложность, partial некоторые языки и вовсе не поддерживают для себя я сделал вывод что optional types это золотая середина - вся мощь динамики + доп проверки на критичных местах
меня смущает подозрение, что доп проверки в критических местах не будет работать, вон CircleCI недавно на это жаловались http://blog.circleci.com/why-were-no-longer-using-core-typed/
мне почему-то кажется, что фишка всей это пляски вокруг хиндли-милнера хороши, когда проверяется всё
есть ответ на эту статью, только поискать нужно
> partial некоторые языки и вовсе не поддерживают а некоторые поддерживают куда лучше. @ul: elm я попробую, но как язык оно довольно убогое. хаскель сильно академичен, не надо ожидать, что придешь туда и начнешь ебошить, надо овладеть базой сначала ) а вот окамл, например, тупой, там можно сразу начать фигачить, но коммьюнити небольшое.
там нет тайпклассов, протоколов, модулей или чего-то подобного. но это не так часто и нужно в аппликейшен разработке.
фундаментально куда более интересный тип выполнения (ленивый) в теории позволяющий компилятору делать много крутых оптимизаций, полное отделение io от чистых функций (собственно следует из ленивости), весь код строится вокруг нескольких абстракций, которые компоузятся друг с другом иногда хорошо (те самые монады, функторы (не ml-функторы), аппликативные функторы, ленсы) и не очень хорошо (тонны монад трансформеров) и эти абстракции повсюду, жисончик не прочитать без понимания что с чем нужно соединять. Зато если поймешь, наверно, получишь от этого бенефиты Из коробки неблокирующий IO в сокет-операциях. Активное комьюнити.
а как насчет Go? Вроде и типы, и стандартная библиотека хороша - да и горутины что core.async одна малина
оо, а можно попродробней? Просто сейчас как раз уходим с node.js на беке и вроде как на Go
ну а чего тут говорить? ) система типов убогая, сколько уже нытья про отсутсвие хотя бы чего-то похожего на генерики, чего добавлять-то. В итоге все библиотеки говно, программируешь на interface{}, тайп сейфети на уровне динамических языков, обработка ошибок — говно, по той же причине. нет нормальных типов => нет result-типа => нет composable обработки ошибок. Как итого получаем тысячу строк кода вместо ста, соответсвующее количество багов и скорость разработки. Как сайд-эффект даже невозможность такой банальной техники как метод-чейнинг. Повсюду стейтменты вместро экспрешионов. Нафига было select ограничивать известными в компайл-тайме каналами? ну т.п.
Как остроумно заметил один парень Го болье похоже на диверсию от гугла против всего остального мира, а внутри они давно на C++17 пишут
Реализация CSP в том или ином виде есть почти во всех нормальных языках (включая вышеупомянутые хаскель и окамл)
>Нафига было select ограничивать известными в компайл-тайме каналами? это первая боль которую я увидел в го(
а что бы ты посоветовал для бекэнда? У нас у команды сейчас аллергия на не статичные языки (после ноды), так что кложуру не продвинуть ну никак
@artemyarulin: я фиг знает, я пока личинка программиста, да и того, что совсем нравилось бы нет ) я сам пока балуюсь с окамлом переписывая https://github.com/prepor/condo/ на него в https://github.com/prepor/condo2.
эх, нет в жизни счастья. Спасибо все равно
По моим наблюдениям: если входить в go x времени. То в clojure 2x, а в ocaml 4x
на JS все пишется за 0.01x
(npm install jquery; jquery.addNumbers(2,2))
, но это мало что значитхотя согласен - я clojure более-менее начал понимать и чувствовать наверно только через пол года. Правда для меня ФП было еще новым
Типизированные ребята мечтают о зависимых типах (ala Agda, Coq). Haskell красив, мне нравиться как мост между математикой и нашей ремесленеческой возьней, но до него надо созреть видимо
У хаскелистов так, начал писать сайт и завис на месяц над монадическим парсером параметров Зато если получилось, можно кандидатскую защищать.
@ul: опасайся @dottedmag !
@prepor: а ocaml тебя не пугает вот эта непоследовательность авторов? я про то, что там и фп и ооп, но при этом оно всё какое-то "особенное"
в общем там в целом все ок, merlin вполне ок, вот только его конфигурять надо отдельно (пара строчек в спец-файле с типа списком зависимостей). в целом у меня ничего, кроме того, что есть в spacemacs не настроено
@az: там нет ничего особо непоследовательного и особенного, собственно ml-языки в деды годятся большинству “современных”, странно их называть “особенными”. императивности там ровно столько сколько надо. можно создать указательно и модицифировать его, да. это иногда удобно и эффективно. ровно так же как в кложе есть atom, только тут все проще, без решения проблем конкурентного доступа
@az: не вижу ничего печального ) там императивщины очень мало и она в библиотеках. в кложе тоже есть transients, сколько раз ты их использовал?
а, “ооп”. “ооп” там совсем не то ооп, объекты не те объекты, а классы не те классы. и опять же их никто особо не использует и применимы они в каких-то узких сферах. например, гуи рисовать
(наверно, никогда не рисовал гуи, но примеры хорошего применения ООП обычно заканчиваются на окошечках)
я вообще фп пока не использовал, я как-то попал в одно купэ с @nicola и пошло поехало … покатился по наклонной …
я пока только читаю и тд и тп, очень многое выглядит сомнительно
пока такое впечатление, что всё это как "новые обои в болдженос", но написанные окадемиками
окамл очень прагматичный язык, а совсем не академичный. отсюда и вся императивщина. http://realworldocaml.org/ если что, годная книжка
но почему коммьюнити такое маленькое? складывается ощущение, что джейн стрит и тащит весь окамл вперёд
ну да, я сам не знаю ) Core и Async збс, лучше лвт и батареек имха. но и движухи все таки достаточно, и в либах и в языке.
Порог вхождения большой, я щитаю
Я сужу по себе. У меня не взлетело
@ul: про коммунити можно скажем вот по этой подборке посудить. http://alan.petitepomme.net/cwn/2015.10.13.html это выжимка всякого происходящего за неделю в мейл-рассылке
@ul: ну я хз, вроде как наоборот те же ребята из Core и Async доразделяли свои либы что б не быть привязанным к линуксу, а что бы работало в разных платформах, таких как js и mirage (юникернел)
парни я правильно понимаю, что cljs и его экзосистемы не хатило для быстрой и удобной разработки spa приложений?
так на хабре завещали что Nim грааль
@prepor: а вот я и не могу найти ничего, кроме js_of_ocaml, чтоб оно было активным и компилировало окамл в джс
https://github.com/s3team/uroboros Uroboros: Infrastructure for Reassembleable Disassembling and Transformation да что они там курят?
А грааль мужчина из Мск вот здесь создает - https://github.com/saniv/symta
qsort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ [email protected]#)) ^: (1<#) ok
> да что они там курят? ну это весьма специфичный инструмент. у фейсбука например всякие статические анализаторы жс-а на окамле написаны
вот к лиспам со статической типизацией http://shenlanguage.org/
ну раз пошёл разговор за языки вообще, я вот на эту штуку поглядываю http://purelang.bitbucket.org/
https://github.com/zinenko/kunstcamera пока так, потом можно будет как-то группировать
ну да, мне надо сделать рефактор, который, в принципе, можно решить регексами, но блин, у меня же лисп
Мне кажется пора сделать тулзу для работы с проектом как с базой - в духе трансформаций, метрик, анализаторов и визуализаторов.
ага - только не столь дерзкую, а практичную - чтоб задача вроде твоей решалась в 5 sloc
pacman: а что нормальную инит систему не использовать?
Я вот героически перелез на апстарт
Жду системд в убунте по дефолту
по поводу визуализаторов - вчера в clojure канале кинули: http://asterion-dev.elasticbeanstalk.com/index.html
классная штука, для приватных репо тока нету пока(