Size: a a a

2020 May 13

DS

Doge Shibu in rust_offtopic
Я утрирую, но он не совсем честен в своих аргументах бывает
источник

SP

Stanislav Popov in rust_offtopic
Doge Shibu
Главное правило хаскель чатов:
1. Не слушайте Гранина
2. Не читайте Гранина
3. Не верьте Гранину
Сидел насильник-дед в ОСи,
Страдая от проблем.
И думал, как избавить Си
От багов насовсем.

Он думал так, что поседел,
Не ел и плохо спал.
Но он нашел благой удел,
Где Хаскель правит бал.

Он четко видел свою цель:
Код должен быть красив.
И он заставил Ди-Эс-Эль
Генерить код на Си.

И все бы круто, но потерь
Он, право, не хотел.
За выбор Хаскеля теперь
Уволен весь отдел.
источник

NL

Nick Linker in rust_offtopic
Jon Harrop лжец и манипулятор. Этот его высер обсуждался на реддите, и многие опровержения он отметал со словами "ааа, вы тут используете монады, всё, вы проиграли".
источник

SP

Stanislav Popov in rust_offtopic
Nick Linker
Jon Harrop лжец и манипулятор. Этот его высер обсуждался на реддите, и многие опровержения он отметал со словами "ааа, вы тут используете монады, всё, вы проиграли".
лол ну наверное потому что так и есть
источник

DS

Doge Shibu in rust_offtopic
Он фанат фри монад, причем совсем фанатичный. А фри монады - это достаточно узкой применимости техника, с рядом важных недостатков.
источник

NL

Nick Linker in rust_offtopic
Stanislav Popov
лол ну наверное потому что так и есть
Во многих аспектах он апеллирует к практике, но именно практические решения и отметает. Тролль, короче.
источник

SP

Stanislav Popov in rust_offtopic
я пока фри монады не прочитал не начал понимать о чем тф
источник

A

Aleksandr Khristenko in rust_offtopic
Doge Shibu
Он фанат фри монад, причем совсем фанатичный. А фри монады - это достаточно узкой применимости техника, с рядом важных недостатков.
Вроде не все так плохо. Судя по хаскель чатику такой подход вполне имеет место быть.
источник

DS

Doge Shibu in rust_offtopic
Aleksandr Khristenko
Вроде не все так плохо. Судя по хаскель чатику такой подход вполне имеет место быть.
Т.е. я писал и с приминение фри монад в стиле Гранина и это так себе экспириенс. Бойлерплейта там немеренно, реализация не столь тривиальная, перформанс так себе, эргономика тоже не очень.
источник

DS

Doge Shibu in rust_offtopic
MTL тоже не идеален, но для него можно найти подмножество с которым можно жить.
источник

DS

Doge Shibu in rust_offtopic
Есть ещё всякие альтернативные системы эффектов, но они требуют либо нетривиальной типо-магии, либо дополнительных оптимизаций в компилятор, чтобы нормально работать.
источник

DS

Doge Shibu in rust_offtopic
Плюс именно final tagless и того же MTL, что они простые как пробка
источник

SP

Stanislav Popov in rust_offtopic
мне статьи рисовали это как иерархию mtl->free->tf
источник

SP

Stanislav Popov in rust_offtopic
Рабочий вечер. Свет экрана.
Из полумрака веет сном.
Пойти бы в бар; но еще рано,
И думать нужно не о том.

Релиз горит, коллеги плачут,
Программа не готова в срок...
...А мысль хаотично скачет
Меж неработающих строк.

Рефакторинг - святое дело,
И компилятор был бы друг,
Но за такие типы, зело,
Лишить бы кое-кого рук.

С такими типами всё сложно:
Как ни моля, как ни прося,
В них выразить никак не можно
Все то, что допустить нельзя.

На все нечистое в программе
Наш компилятор промолчит.
Дебажте код, ищите сами, -
Пока у вас не пригорит.
источник

Т8

Т-34 85 in rust_offtopic
Aleksandr Khristenko
Фп и императивность ортогональны, в фп вполне пишется императивный код.
Как в фп мутировать данные?
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
мне статьи рисовали это как иерархию mtl->free->tf
Тут под MTL часто понимают не явное использование трансформеров, а-ля:
newtype MyApp a = ReaderT Env (...) a

myBusinessLogic :: Wtf -> MyApp Order

А final tagless стиль, где используются тайп классы из MTL:

myBusinessLogic :: (MonadReader Ctx m, ...) => Wtf -> m Order
источник

DS

Doge Shibu in rust_offtopic
Т-34 85
Как в фп мутировать данные?
IORef, MVar вам в руки
источник

DS

Doge Shibu in rust_offtopic
STRef, и т.д. и т.п.
источник

NL

Nick Linker in rust_offtopic
Doge Shibu
Т.е. я писал и с приминение фри монад в стиле Гранина и это так себе экспириенс. Бойлерплейта там немеренно, реализация не столь тривиальная, перформанс так себе, эргономика тоже не очень.
И я писал. Да, есть масса недостатков, и бойлерплейт, и перфоманс (если делать тупо), но зато код ОФИГЕННО тестируемый во всех аспектах и срезах, и это перевешивает все недостатки.
Бойлерплейт кстати тоже можно было бы пофиксить при желании. В пакете free уже есть из коробки генерация алгебр и соответствующих функций, осталось сделать генераторы для сумм и произведений и вуаля.

UPD. ОФИГЕННО
источник

A

Aleksandr Khristenko in rust_offtopic
Т-34 85
Как в фп мутировать данные?
MVar/IORef и мутируешь себе внутри IO
источник