Alexander
имеет ли смысл тут с линзами или не мучаться и case написать
Alexander
если бы оно ещё и все быстро работало, то наверное надо было бы линзы использовать т.к. код проще и убирает бойлерплейт
Alexander
на самом деле у меня там +1 слой, но это не важно
Alexander
traverse его тупо сохраняет
Alexander
7 строк вместо 2 :/
Dmitrii
Какая стандартная функция лучше всего подходит под case следующего вида? x <- case someMaybeValue of Nothing -> pure Nothing Just v -> foo v Где foo имеет тип foo :: a -> IO (Maybe b) (то есть у x в итоге будет тип Maybe b).
кана
MaybeT IO >>= вроде fmap join . traverse foo ещё мб
Dmitrii
Я бы хотел ещё короткий код... Что-то в духе x <- runMaybeT $ maybeToMaybeT someMaybeValue <|> MaybeT foo не особо много выигрыша даёт...
Alexander
maybe (pure Nothing) foo someMaybeValue ?
Dmitrii
maybe (pure Nothing) foo someMaybeValue ?
Сойдёт на первое время 👍
Андрей
https://www.amazon.com/gp/aw/d/1787281396
Андрей
Вон оно чо
Андрей
Го и в фп может
Андрей
Народ, так что же такое фп?
Андрей
Тут недавно набросы были, что вроде как рекурсия не нужна и фп это скорее теоркат, чем програмирование само по себе
Alexander
все верно
Alexander
фп это теоркат, потому что оно про функции а функции это стрелки
Alexander
да и объекты легко представить себе как функции
Alexander
а рекурсия и прочие штуки, ну они и в теоркате есть, но не на первом месте
Андрей
То есть буква П в фп про теоркат?
Alexander
да
Андрей
😃
Alexander
словосочетание "прикладная математика" тебе о чем то говорит?
Vladislav
Не могу понять, какой это уровень иронии
Андрей
😃
Alexander
я без иронии если что
Alexander
программирование это раздел математики, фп это теоркат в рамках этого раздела
Alexander
точнее группа разделов математики
Андрей
И тут Остапа понесло 😃
Alexander
я в общем то серьезно. Никого же не говорит что инженер занимается сопроматом а не проектирует мост
Vladislav
Математик видит аналогии, хороший математик видит аналогии между аналогиями, а самые лучше математики не могут отличить ФП и теоркат
Alexander
а в чем отличие, кстати? ФП это прикладной теоркат
Vladislav
Ну хватит уже
Alexander
нет. серьезно, ты говоришь чтоя не могу отличить, но если ты можешь, то в чем отличие?
Vladislav
во всем? ФП это про программирование с функциями, а теоркат это про отношения между математическими объектами
Vladislav
куски ФП можно представить математическими объектами и применить к ним теоркат, но это узкое пересечение
Alexander
высокоуровневое программирование это про отношения между объектами
Alexander
и да, в фп они математические
Alexander
а программирование с функциями это структурное программирование, если что
Vladislav
Математическую модель можно составить для всего, для императивных языков тоже. ФП это про выбор конкретной модели (чистые функции), что не делает это в большей или меньшей мере математикой
Vladislav
> а программирование с функциями это структурное программирование Товарищ, что ты несешь, прекрати. Структурное программирование это без goto, это про if-then-else и while.
Vladislav
И там вообще не обязаны фигурировать функции никакие
Евгений
Товарищи, вы не хотите продолжить абсурдные дискуссии в _blah?
Андрей
Это куда ты нас послал щас?
Vladislav
Я вообще не вижу тут никакой дискуссии, я до сих пор пытаюсь понять, надо мной издеваются или нет
Евгений
Я думаю человек просто передёргивает, но в целом разделяет высказанное мнение
Alexander
ответил владиславу в blah, а его там нет :(
Vladislav
присоединился в _blah чтобы тоже ответить, но быстро об этом пожалел
A64m
> > It would be nice to have a real-time mode for the GC or something that is tuned for games and such. GC choppiness seems to be major point of cricitism that I’ve seen. > I actually have some rather exciting news on this front but we're not quite ready to lift the covers yet. так так так, дайте угадаю, очередной новый гц который недоделают и он сгниет?
Андрей
а что с гц в гхц?
Андрей
сейчас
A64m
параллельный, но не псевдоконкурентный, как в яве и дотнете >10 лет назад были
Андрей
параллельный, но не псевдоконкурентный ?
A64m
ну да
Ilya
Параллельный наверное в смысле забивания всех ядер компа
A64m
параллельный, значит что сборщик собирает в несколько потоков псевдоконкурентный значит, что мир останавливается не на все время сборки старого поколения, часть сборки (значительная) и мутатор работают одновременно
Yura
Кто-то видел библиотеки которые реализуют TCP fast open ? moesocks я уже нашёл
IC
Зачем нужен анаморфизм если есть прямая рекурсия?
A64m
конечно, псевдоконкурентные
Сергей
Интересно, предвитится ли такое у нас.
A64m
ну, я цитировал выше намеки как раз на такое, по всей видимости
A64m
другое дело, что я бы особо не рассчитывал
Евгений
Интересно, а eta лучше собирает мусор, чем аналогичный ghc?
A64m
в чем-то лучше, в чем-то хуже
A64m
явовский сборщик в смысле пауз может быть лучше, но для нормальной работы ленивого ФЯ нужны специальные фичи ГЦ
A64m
А какие именно?
https://osa1.net/posts/2018-03-16-gc-optimizations.html 2 и 3
A64m
кметт любит рассказывать историю, что если отключить 3-ю, гхц не может собрать гхц
Maxim
вот вам забавная странность
Maxim
GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help Prelude> newtype Test = Test { some :: Int } Prelude> foo test{ some = 5 } = undefined <interactive>:2:5: error: Parse error in pattern: test {some = 5} Prelude> foo test{ .. } = undefined <interactive>:3:5: error: You cannot use `..' in a record update Prelude>
Cheese
всё правильно
Cheese
второе сообщение не самое очевидное, да
Maxim
про то и речь
Maxim
ошибка есть, а сообщение дурацкое
Anonymous
@ybogomolov будет жить. Поприветствуем!
Yuriy
Хм. Отличный способ защиты от ботов. Всем привет! ) В хаскеле я начинающий, поэтому буду либо в ридонли, либо задавать достаточно наивные вопросы. Но если смогу быть чем-то полезен, постараюсь делать посильный вклад.