Только что узнал, что не стало моего друга Гриши, с которым мы делали видеоподкаст «ФП для чайника». Уже не доделаем.
Говорят, что для продуктивной работы знать теорию категорий и теорию типов не нужно, а порой даже вредно — причем даже если пишете на хаскеле, где половина стандартной библиотеки щеголяет терминами из теорката. Клепать опердени, перекладывая джейсоны из кафки в постгрю, можно без малейшего понимания, чем является левое сопряжение к забывающему функтору.
Но при этом знание таких вещей радикальным образом расширяет не только кругозор, но и позволяет придумывать новые очень крутые вещи. Например, есть такая конструкция как селективный (выбирающий?) функтор (selective functor) — «подумаешь, еще одна абстрактная хрень, кому она нужна», всё такое. Но, взяв эти функторы за основу, была написана очень изящная библиотека Parsley, о которой ее автор рассказывал на недавнем MuniHac. Или знание о симметричных моноидальных категориях позволило Олегу Нижникову сделать библиотеку Volga, которая позволяет упростить построение и оптимизацию вычислений в распределенных системах.
С другой стороны — в самом начале теоркат и правда больше вреден, чем полезен. Есть большой соблазн начать сыпать терминологией и концепциями без соотнесения их с реальностью, контекстом и вычислительными ограничениями. Я считаю, что не знаю теорию категорий хоть сколь-нибудь вменяемо, поэтому очень аккуратно стараюсь притягивать рассуждения из нее в обыденное программирование, но даже те знания, что есть, помогают в голове выстраивать более цельную картину и видеть новые связи.
Значит ли это, что всем поголовно надо начать заниматься математикой? Да ни в коем случае. У каждого свой путь и свои подходы, которые заставляют понимание «щелкнуть». Но я надеюсь, что примеры выше еще раз покажут, что насмехаться над «академиками в башнях из слоновой кости», по меньшей мере, неразумно.
Но при этом знание таких вещей радикальным образом расширяет не только кругозор, но и позволяет придумывать новые очень крутые вещи. Например, есть такая конструкция как селективный (выбирающий?) функтор (selective functor) — «подумаешь, еще одна абстрактная хрень, кому она нужна», всё такое. Но, взяв эти функторы за основу, была написана очень изящная библиотека Parsley, о которой ее автор рассказывал на недавнем MuniHac. Или знание о симметричных моноидальных категориях позволило Олегу Нижникову сделать библиотеку Volga, которая позволяет упростить построение и оптимизацию вычислений в распределенных системах.
С другой стороны — в самом начале теоркат и правда больше вреден, чем полезен. Есть большой соблазн начать сыпать терминологией и концепциями без соотнесения их с реальностью, контекстом и вычислительными ограничениями. Я считаю, что не знаю теорию категорий хоть сколь-нибудь вменяемо, поэтому очень аккуратно стараюсь притягивать рассуждения из нее в обыденное программирование, но даже те знания, что есть, помогают в голове выстраивать более цельную картину и видеть новые связи.
Значит ли это, что всем поголовно надо начать заниматься математикой? Да ни в коем случае. У каждого свой путь и свои подходы, которые заставляют понимание «щелкнуть». Но я надеюсь, что примеры выше еще раз покажут, что насмехаться над «академиками в башнях из слоновой кости», по меньшей мере, неразумно.
YouTube
MuniHac 2020: Jamie Willis - Exploring Parsley
Title: Exploring Parsley
Speaker: Jamie Willis
Parser combinator libraries are a popular approach to writing parsers in the functional world. In particular, monadic parser combinators take centre stage. But when performance of these parser combinators become…
Speaker: Jamie Willis
Parser combinator libraries are a popular approach to writing parsers in the functional world. In particular, monadic parser combinators take centre stage. But when performance of these parser combinators become…
Forwarded from Oleg ℕižnik
Я для себя понял, что если воспринимать любые абстракции просто из их формального определения, то со временем это будет приводить к ужасной неоптимальности, вплоть до полной неспособности пользоваться.
Чутка если копнуть теоркат, там миллион примеров определений, которые даются десятью непохожими друг на друга способами.
Нужно сидеть часами понимать, почему эти определения - одно и то же.
Зато, когда склеиваются - сразу появляется какая-то волшебная область, которую можно расширять, как буддистский пруд
Чутка если копнуть теоркат, там миллион примеров определений, которые даются десятью непохожими друг на друга способами.
Нужно сидеть часами понимать, почему эти определения - одно и то же.
Зато, когда склеиваются - сразу появляется какая-то волшебная область, которую можно расширять, как буддистский пруд
Forwarded from Oleg ℕižnik
Поэтому в CS часто бывают штуки, которые начинают вот так "склеиваться" или "ветвиться" или ещё что-то. Ты начинаешь подозревать, что они соотносятся с какой-то абстракцией, без ассоциаций это подозрение не возникнет. И только после того, как покопаешь подозрение, что-то может родиться полезное
В четверг Владислав Завьялов расскажет, как писать на хаскеле GUI-приложения:
https://serokell.io/blog/gui-programming-talk
https://serokell.io/blog/gui-programming-talk
Serokell Software Development Company
Introduction to GUI Programming in Haskell
Learn how to do GUI programming in Haskell with GTK+.
Forwarded from Anton Trunov
Записи с TLA+ Community Event (https://conf.tlapl.us.home)
https://www.youtube.com/playlist?list=PLWLcqZLzY8u8EA8UlsZ5xKMvtUoeGr5R_
https://www.youtube.com/playlist?list=PLWLcqZLzY8u8EA8UlsZ5xKMvtUoeGr5R_
YouTube
TLA+ Community Event, 2020 - YouTube
https://blog.cloudflare.com/cloudflare-worker-with-webassembly-and-haskell — неожиданный пост в блоге Cloudflare о Haskell и WebAssembly
The Cloudflare Blog
Let's build a Cloudflare Worker with WebAssembly and Haskell
Let's combine the power of Haskell and WebAssembly in a Cloudflare Worker!
Новый моноширинный шрифт JuliaMono, заточенный под программирование и содержащий больше 10к глифов Юникода: https://juliamono.netlify.app
Мой билд Iosevka все равно пока нравится больше, конечно, но JuliaMono выглядит очень приятно и уж явно не хуже JetBrains Mono.
Мой билд Iosevka все равно пока нравится больше, конечно, но JuliaMono выглядит очень приятно и уж явно не хуже JetBrains Mono.
Система эффектов
https://github.com/KingoftheHomeless/in-other-words
in-other-words, целью которой является представление эффектов выших порядков и решение проблемы O(n²) инстансов:https://github.com/KingoftheHomeless/in-other-words
GitHub
GitHub - KingoftheHomeless/in-other-words: A higher-order effect system where the sky's the limit
A higher-order effect system where the sky's the limit - GitHub - KingoftheHomeless/in-other-words: A higher-order effect system where the sky's the limit
Павел Дуров поделился 7 секретами вечной молодости:
1. Наличие однопараметрического типа Т
2. Наличие аппликативного функтора для типа Т
3. Наличие функции
4. Наличие функций
5. Закон левой идентичности
6. Закон правой идентичности
7. Закон ассоциативности
1. Наличие однопараметрического типа Т
2. Наличие аппликативного функтора для типа Т
3. Наличие функции
return4. Наличие функций
join или bind5. Закон левой идентичности
6. Закон правой идентичности
7. Закон ассоциативности
Forwarded from Alexander Chichigin
https://github.com/prathyvsh/morphisms-of-computational-structures
Как минимум, любопытный список ссылок для дальнешего чтения. 😊
Как минимум, любопытный список ссылок для дальнешего чтения. 😊
GitHub
GitHub - prathyvsh/morphisms-of-computational-structures: A visual catalogue + story of morphisms displayed across computational…
A visual catalogue + story of morphisms displayed across computational structures. - prathyvsh/morphisms-of-computational-structures
Туториал о том, как реализовать тайп-чекер для refinement types:
— препринт статьи на arXiv;
— репозиторий с кодом на Haskell и Reason.
(источник)
— препринт статьи на arXiv;
— репозиторий с кодом на Haskell и Reason.
(источник)
GitHub
GitHub - ranjitjhala/sprite-lang: An tutorial-style implementation of liquid/refinement types for a subset of Ocaml/Reason.
An tutorial-style implementation of liquid/refinement types for a subset of Ocaml/Reason. - GitHub - ranjitjhala/sprite-lang: An tutorial-style implementation of liquid/refinement types for a subse...
Уволился в пятницу из криптостартапа. 10 месяцев просиживал жопу на tensorflow, заебался пиздец. Сидел и думал, мне 21 год, а мои сверстники едут в рюмочную №5 в Камызяке. В принципе, датасайентистом работать хорошо, всегда работу найдешь, три года уже везде нахожу себе применение. Просто заебался, смотрю на других молодых, там всякая хуета классная, цеха, дуговая сварка-хуярка. Пиздец. Очень хочу стоять на заводе с умным ебалом и говорить слова «окалина» или «фистинг». Завидно. Зато я свободен душою и телом, и совесть моя чиста. Даже не знаю, чем хочу заняться на самом деле, ничего не понятно. Вот, хожу, гуляю, скушал фалафель. Говорят, помогает для печени. Всем счастья, здоровья и хорошей работы!