Разработка ждёт балета
1.64K subscribers
516 photos
5 videos
15 files
1.57K links
What I cannot create, I do not understand.

DM: @alexey_mileev
PeerLab: https://xn--r1a.website/+e2ND1tAa0lU2ZTli
Download Telegram
Очень простая, но все еще довольно интересная статья про Optional и функторы, реализованные на Kotlin. Что это, зачем это, как оно работает - все есть в статье. Даешь ФП рабочим! Пис ✊🏻

#kotlin #fp
https://medium.com/@aballano/kotlin-functors-applicatives-and-monads-in-pictures-part-1-3-c47a1b1ce251
Недавно я уже скидывал ссылку на статью про функторы, тогда автор только-только закончил первую часть цикла. Сейчас же цикл завершен, все три статьи готовы, и я призываю тебя на них посмотреть. Узнаешь не только о том, что такое функторы, но и о том, что такое applicative (не представляю, как это перевести) и монады. Ну и да, все это на Kotlin. Пис ☝🏻

#kotlin #fp #functor #applicative #monad
https://hackernoon.com/kotlin-functors-applicatives-and-monads-in-pictures-part-1-3-c47a1b1ce251
https://hackernoon.com/kotlin-functors-applicatives-and-monads-in-pictures-part-2-3-f99a09efd1ec
https://medium.com/@aballano/kotlin-functors-applicatives-and-monads-in-pictures-part-3-3-832d58d92445
Интересная статья про красоту Lisp’а. Если тебя, как это когда-то было со мной, пичкали в универе Lisp’ом, то, скорее всего, ничего нового ты не узнаешь. В обратном же случае, крайне рекомендую.

#lisp #fp
http://blog.rongarret.info/2018/02/yes-code-is-data-but-thats-not-what.html
Очень приятная статья, в которой Иван Гришаев рассказывает, зачем нужен Clojure. Мне очень понравилось. Пойдите, почитайте. Она очень короткая, чесслово.

#fp #clojure
http://grishaev.me/why-clj
Бывает, несёшь себе кофеёк к компу. Путь пролегает не самый близкий - покинуть кухню, преодолеть коридор, крадучись занести кружку в комнату, не обосрав тот любимый белый ковёр, и водрузить, наконец, дрожащими руками заветный напиток на рабочий стол.
А тут, на тебе, в коридоре, прямо под ногами, песок какой-то. Ясное дело, подставил кто-то. Гады. Ну ты-то не мог, ты-то ногами об коврик пошаркал, когда с прогулки возвращался. Сволочи. А кофе-то запахом манит. Да и пролить не хочется, они от нас только этого и ждут, Бубба.
Тут ты и принимаешь стратегическое решение аккуратненько ножкой так ать, и смести песок куда-то в сторону. Пусть это будет проблема выходного тебя.
Вот так и с сайд-эффектами, всё время их диверсанты какие-то в наш чудесный код добавляют. Но хочется же их аккуратненько куда-то под коврик замести, и чтобы только там они где-то и водились, и не отсвечивали, пока не позовут. И чтобы нельзя было ими наши замечательные чистые функции попортить.
Вот в этом посте смотрят на использование suspend модификатора для этих целей. Интересная идея, пометить всё, у чего есть сайд-эффекты, тогда компилятор не даст нам чистые куски запятнать. Особенно интересно в контексте Redux-like подходов на эту идею посмотреть.

#kotlin #coroutine #fp
Тут показывают, чем Arrow-kt может помочь, если приходится делать множественные вложенные .copy на data class’ах.
Мне почему-то кажется, что если проделывать такое приходится действительно часто, то, возможно, где-то мы свернули не туда. Ну, случаи бывают разные, может быть для кого-то это и впрямь оправданно. Да и выглядят эти modify и @optics не прямо фу-фу-фу.

#arrowkt #fp #library
Показывать явно в возвращаемом типе, что функция может завершиться ошибкой, - идея не новая, хоть и всё ещё не заезженная. В этом посте чувак показывает, как такую Result monad можно на Kotlin написать. Реализация там, на мой взгляд, не во всём удачна (ну в какой, скажите, вселенной, val reason: String достаточно для описания ошибки?), но достаточно хороша.

#fp #monad #kotlin
Со всякими .flatMap, .filter и .reduce все уже давно знакомы. В этом посте рассказывают про .traverse.
Всегда интересно на такого рода вещи смотреть, но очень часто после этого хочется помыть руки. Просто посмотрите на финальный сниппет в посте. Коротко? Да. Но прочитать это человеку со стороны будет тяжеловато.

#fp
В Morgan Stanley были недовольны тем, что короткий, простой и понятный код не даёт нужной производительности, а ФП-подходы заставляют бороться со своей же системой типов, и написали халабуду, которая сама умеет тот самый простой и понятный код забатчить, запараллелить и другими способами осквернить.

#talk #fp #monad
👍1
Всю это неделю я решил посвятить серии чудесных постов в прозе. Наслаждайтесь!

Reversing the technical interview

“That’s not a list,” the interviewer says. “That’s an if statement.”
“What else are lists,” you reply, your eyes flashing


#interview #humor #fp
😐7👍21
Hexing the technical interview

“We’re, uh, we’re not doing IO here. Just an in-memory list.”
Agree politely, but delete nothing. Never apologize for who you are.


#interview #humor #fp
🤔10😐41👍1🤯1
Typing the technical interview

“You’re… defining the natural numbers by hand? Why?”
“Haskell is for mathematicians,” you explain. “We always define our terms.”


#interview #humor #fp
👍21
Rewriting the Technical Interview

“People always complain,” you murmur. “That Lisps have too many parentheses. What they really mean is that their positions are too far to the left.”

#interview #humor #fp
😐61👍1
Unifying the Technical Interview

“You absolute madwoman,” Aisha chortles. “You can’t remember how to balance a binary tree, but you memorized µKanren?”

#interview #humor #fp
🤔5
И а-ля фанфик, бонусом.

Typescripting the technical interview

“Okay, that looks like a correct solution, but the code is quite hard to follow, and it’s not very concise.” he asserts, wrongly.
“Oh it’s mostly just TypeScript boilerplate. I think you’ll find once it’s compiled down to JavaScript it’s perfectly concise.” you reassure him.
Invoke the compiler


#interview #humor #fp
😐71😁1
Отличное эссе сразу о многом, по большей части о мутабельном состоянии, и о том, как с ним пытались работать, где в этом всем ФП, ООП, Rust и проч.

#programming #fp #oop
Тут чел проверяет, как некоторые ФП подходы натягиваются на современный Python.

#python #fp
🔥2
В какой-то Clojure книжке читал про transducers и так и не понял, зачем оно нужно, ещё и так сложно. А тут подвернулся пост, где более доходчиво объясняют. Упрощая: чтобы все привычные filter, map, reduce и т.п. применять к чему-то более абстрактному, чем простые коллекции.

#clojure #fp
1