brain_dump_etc
641 subscribers
101 photos
4 videos
3 files
402 links
Дампы мыслей, свалка ссылок, программизмы, вкусовщина!

Автор: @astynax
Донаты (patreon и прочее): https://astynax.me/support.html
Чат: https://xn--r1a.website/brain_dump_chat
Twitch: https://www.twitch.tv/astynax2hs
Discord: https://discord.gg/tJvze5
Download Telegram
Полезная библиотечка для PureScript purescript-quantities (https://pursuit.purescript.org/packages/purescript-quantities) позволяет описывать физические величины и, помимо, собственно, декларации длинн, масс и прочих температур, предоставляет инструменты для синтеза сложных величин из простых (метры можно делить на секунды и получать скорость!) и конвертации между разными шкалами!

Пара примеров:

- арифметика со временем
> showResult $ 2.0 .* minutes ⊕ 30.0 .* seconds

"2.5min"


- перевод скоростей между системами
> showResult $ (85.0 .* miles ./ hour) `convertTo` (meters ./ second)

"37.9984m/s"


#purescript #library
Делюсь ссылкой на недавно возникший бложик со статьями про Elm и разработку на нем, ориентированными на новичков: https://alpacaaa.net/blog/

Наткнулся на него, увидев на /r/elm статью "In depth overview of Elm and Purescript. Lessons learned porting a game from Purescript to Elm." (https://alpacaaa.net/blog/post/elm-purescript-in-depth-overview/). Собственно, эту статью и рекомендую - в т.ч. и тем, кто ни #elm ни #purescript не использует (пока 😉). Сравнение этих языков в статье несколько предвзято, но в целом вполне адекватно (что, увы, редкость).

А ещё в блоге можно найти статьи про написание на Elm простой версии Mastermind (по-нашему "быки-коровы") и ещё пары игр, что называется, from scratch - отличное чтиво для интересующихся новичков!
https://www.youtube.com/watch?v=YC2FvozglPc -
интересная задача (эмуляция NES) и интересная комбинация #rust и #elm :)
Rust то как раз оправдан - эмуляторы стоит писать как раз на таких языках. А вот Elm в таком проекте интересно было увидеть! Впрочем, я лично не удивлён, т.к. Elm как раз очень хорошо подходит тем, кто хочет "просто сделать GUI", но фронтендом непосредственно не интересуется (и часто не хочет погружаться в тонкости настройки webpack, babel, вот этого всего).

В комментариях к ролику автора спросили "Very nice! Btw, why did you choose Elm instead of PureScript (which has higher abstractions like typeclasses etc)?", на что он ответил "I haven't heard of purescript until now, so I guess Elm is just marketed better or has more people talking about it.". Этот микродиалог меня натолкнул на две мысли:

1) автор столкнется с болью и унижением, если попробует приобщиться к #purescript и во многом благодаря (да уж, что ещё "благо") тулингу - имхо, npm+bower+pulp+psc-package могут любить только мазохисты, профессионально деформированные фронтендом;

2) всё таки заметность у Elm уже достаточна для того, чтобы язык выбирали те, кто client-side web developing особо не интересуется и сталкивается с оным лишь эпизодически - по необходимости.

P.S. В описании видео есть ссылки и на эмулятор и на отладчик - тут уж кому что интересно :)
https://leanpub.com/outsidefp вот ещё кто-то пишет книгу "типизированное ФП для людей со стороны".

Почитал я "About the Book" и как-то "взгрустнулось". Мне, как человеку, достаточно испорченному знакомством с #haskell/#elm/#purescript, немного обидно читать такое такое (тут мейнстрим противопоставляется типизированным ФП-языкам):

> By "mainstream", I mean:
> - Applications that require only "ordinary" reliability.

не говоря уж о

> - Applications that work in messy domains.
> - Applications that are continuously growing new features.

Вот только это правда. Обидная, но правда.

И мне с моим любимым Haskell уже даже морально тяжело делать "просто достаточно надёжные" приложения, а ведь надо ещё и компилятор убедить в том, что "пока и так сойдёт". Заметьте, я не утверждаю, что так делать в Haskell нельзя - сделать нарочито хуже, конечно же, можно. Но не хочется! А значит я буду стараться делать сразу настолько хорошо, насколько смогу.

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

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

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

Может быть сий неготивизм по отношению к простым решениям и вообще к упрощению, это всего лишь боязнь того, что в язык придут люди, которые смогут с помощью гонзалесовой Turtle писать простые скрипты, не парясь по поводу зависимых типов, рекурсивных схем, профункторов, и прочего "именно того, ради чего вообще в Хаскель стоило идти"? "Илитизм" какой-то, право слово.

Другой пример. Новичок приходит в Reddit и спрашивает "А какую либу мне выбрать, чтобы сделать простой web-сервис - Scotty или Spock?" (очень частая ситуация). Реалистичный вариант цепочки комментариев будет выглядеть так:

- Бери Servant - только Servant есть TRUE!
- (кто-то робко) Но у сёрванта порог вхождения выше и сообщения об ошибках непонятнее...
- У меня всё работает! И там ваще всё просто (если ты достаточно хорош)!

После этого новичок идет пробовать Servant, видит список требуемых расширений, или просто первое сообщение об ошибке и уходит в ужасе/печали - и хорошо, если не из ФП вообще, а только из Haskell. Одним потенциальным хаскелистом меньше. И какова будет реакция аудитории - особенно русскоязычной - "одним слабаком и неосилятором меньше!".

Смотришь на это и понимаешь, почему кто-то убегает из Haskell с "труёвым Servant" в "скучную и нетайпсейфную" Clojure, или из PureScript с его профункторными линзами и FRP на Halogen в "скучный" Elm. А ведь, на Haskell можно писать и просто (типа вебчика на Scotty)! Но простые решения будут порицаться, или как минимум будут приняты со снисхождением - это демотивирует. И смешные статьи или картинки про Haskell не на пустом месте появляются - есть благодатная почва.

Меня лично радует лишь то, что я даже на своём невысоком уровне умения "в настоящий Haskell" могу делать на оном то, что мне интересно - пусть даже это никого не впечатлит. И я люблю этот язык, пусть и "не благодаря, а вопреки". И быть может мне повезло, что я учил язык, варясь в собственном соку и читая "слишком простую" «Learn You a Haskell For Great Good» - некому было отбить у меня желание к изучению.