Сегодня у нас в гостях вновь Александр Вершилов, который уже 15 лет пишет на Haskell. Мы продолжаем разговор про Haskell и переходим к той теме, на которой у многих разработчиков всё обычно ломается — IO, побочные эффекты и монады.
Haskell регулярно называют «слишком сложным» языком. Чаще всего это происходит ровно в момент, когда разговор доходит до работы с внешним миром. До этого — чистые функции, композиция, красивая типизация. А дальше — «реальный мир», контексты вычислений и ощущение, что ты внезапно оказался в другой вселенной.
В выпуске мы разобраели, почему в чистом языке вообще возникает проблема IO, что такое referential transparency и почему чтение файла её нарушает. Обсудили, зачем Haskell протаскивает через типы «токен реального мира», как устроен IO изнутри и почему это не встроенная магия компилятора, а обычная структура данных с чёткими правилами. Пошагово прошли через Maybe и Either, связывание вычислений, do-нотацию и законы монад, а затем сравнили этот подход с Result в Rust, async/await в JavaScript и обработкой ошибок в Go.
Полезные ссылки:
Twitter - https://x.com/qnikst
Подписывайтесь на канал «Организованное программирование» в Telegram: https://ttttt.me/orgprog
– Список подкаст-платформ (Apple Podcast, Google Podcast, Spotify, Яндекс.Музыка и другие): https://podcast.ru/1734325321
– Смотреть в ВК Видео: https://vkvideo.ru/video-224967259_456239224
🔹 Telegram-канал Организованного Программирования: https://t.me/orgprog
🔹Хекслет Клуб в Telegram https://t.me/HexletClubBot
#функциональноепрограммирование #haskell #fp #программирование #языкипрограммирования #itподкаст #typeclasses #архитектура
Haskell для начинающих: разбираем IO, Maybe и do-нотацию | Александр Вершилов #75
- (00:00) - — Монады без боли: почему их боятся и зря
- (00:59) - — Переходим к практике: готовим среду и код
- (02:32) - — Где в Haskell начинается «та самая сложность»
- (05:22) - — Два пути работы с эффектами: хаос или контроль
- (13:56) - — Кто реально выполняет ваш код? Роль интерпретатора
- (29:14) - — Порядок вычислений: скрытая проблема ленивости
- (36:52) - — Можно ли повторить Haskell в JavaScript?
- (48:14) - — Самый простой пример работы с IO
- (59:15) - — Пишем свою монаду и разбираем механику
- (01:11:03) - — Где монады реально спасают: транзакции и сеть
- (01:21:30) - — Maybe: убийца Null Pointer Exception
- (01:43:18) - — Монада простыми словами: структура + связывание
- (01:54:05) - — Promise — это монада или нет?
- (02:03:14) - — Заключение: монады меняют мышление
Fler avsnitt av Организованное программирование
Visa alla avsnitt av Организованное программированиеОрганизованное программирование med Кирилл Мокевнин finns tillgänglig på flera plattformar. Informationen på denna sida kommer från offentliga podd-flöden.
