@haskellru

Страница 864 из 1551
ParkeT
21.02.2018
15:53:06
теперь это канал про racket?
Ну, тут люди знающие. Подумал, что может кто подскажет, почему так.

Leonid
21.02.2018
15:56:04
смущает меня тип IO (Either Error ()), зато удобно в API. что делать?

A64m
21.02.2018
15:59:02
А что там было не так?
да какая-то смешная ошибка из тех что кметт не делает, inlineable вместо inline в инстансах вроде. Это подробно разбиралось в хаскельгиттере

Антон
21.02.2018
16:16:54
смущает меня тип IO (Either Error ()), зато удобно в API. что делать?
Переписать на трансформерах, очевидно

Google
Leonid
21.02.2018
16:17:45
Снойман всех убедил что ExceptT Error IO () не кошерно, и за такое будут порицать

Pineapple
21.02.2018
16:19:46
Так это же одно и то же. А вот MonadWhatever m ⇒ ExceptT Error m () наш раввин одобряет

Leonid
21.02.2018
16:20:44
Но я хочу там тупо IO

Pineapple
21.02.2018
16:21:04
Ну пусть будет IO раз удобно

Yuriy
21.02.2018
17:03:33
он писал, что не надо ждать, что все ошибки будет только в Except

Leonid
21.02.2018
17:04:48
ну незнаю, все пишут теперь "ой фуууу, ExceptT e IO a!!!! Лохи!"

Yuriy
21.02.2018
17:04:49
это не значит, что все ошибки теперь надо бросать исключениями

Denis
21.02.2018
17:07:09
вот где мне не нравился никогда ExceptT e IO a, так это в серванте

сейчас хоть hoist сделали и можно не колхозить натуральные трансформации

Yuriy
21.02.2018
17:43:32
имеешь в виду, что MonadError m, MonadIO m было бы лучше?

Александр
21.02.2018
19:25:22
Только что, ребята, я сделал работающий STM на фри монадах.



Google
Александр
21.02.2018
19:28:56
Сурс здесь, но я его сейчас на отдельное репо вынесу: https://github.com/graninas/Haskell-Algorithms/tree/master/Tests/STM/stm-free

Теперь официально: https://github.com/graninas/stm-free

Характеристики этого решения я, конечно, еще не знаю, и там есть неоптимальные вещи. Но это крайне простая реализация

Aleksey
22.02.2018
05:38:32
Кто знает, что за other-modules: Paths_bar добавляет hpack?

по факту это .stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/test/autogen/Paths_bar.hs

Это вообще легально?

Что-то я не замечал такого за hpack'ом ранее...

Хмм. Проверил такое много где...

Artyom
22.02.2018
05:45:47
легально

Aleksey
22.02.2018
05:45:54
В одном проекте с tasty-golden подобным образом ещё и Golden в other-modules добавляется

Ну я понял, что легально. А зачем?

И если я не буду хпачить, то cabal сам неявно это всё подцепит?

Artyom
22.02.2018
05:48:03
Ну я понял, что легально. А зачем?
это штука, которая даёт тебе обращаться к файлам, которые ты засунул в свой пакет вроде бы поле data-files в кабале, но я не уверен

модуль генерится кабалом в любом случае

просто юзеры его забывают добавлять в other modules, когда используют, а потом у них ошибки линковки появляются

так что hpack делает это за тебя на всякий случай

Aleksey
22.02.2018
05:49:41
Т.о. hpack меня защищает от меня-дурака? Ну я рад :)

Спасибо! Буду теперь спокоен :)

Кстати, открытие дня для меня: в hpack можно сделать один executable: main: Main.hs и он автоматически получит имя, как у пакета! Удобненько! Теперь минимальный работающий package.yaml выглядит так dependencies: - base executable: main: Main.hs

Google
Alexander
22.02.2018
06:59:48
Это вообще легально?
кабал всегда его генерит, полезный модуль

Aleksey
22.02.2018
07:00:38
Я просто сам не дописывал его в .cabal, вот и удивился

Даня
22.02.2018
09:41:17
подскажите пожалуйста, если кто в курсе, как использовать изоморфизм из Lens, если хочешь ограничиться microlens?

из документации это не особенно ясно

Leonid
22.02.2018
09:46:49
Скопипастить себе из lens?

Сами Iso не требуют ничего кроме профункторов вроде. Вот комбинаторы требуют

from, например

Artyom
22.02.2018
09:53:58
изоморфизм можно использовать как обычную линзу, тут все просто а вот инвертировать изоморфизм, используя только microlens, уже сложнее вообще, раз появилась зависимость от lens, зачем юзать microlens?

Leonid
22.02.2018
09:55:18
Может хочется предоставить API с изоморфизмами без лишних зависимострей

Artyom
22.02.2018
09:55:48
а, то есть сделать изоморфизм, а не использовать

возможно, стоит пойти и сделать все-таки microlens-pro, а не то раз десятый уже вижу этот запрос ? хотя, конечно, лучше бы кто-нибудь за меня сделал ? коммит-права с радостью дам

Leonid
22.02.2018
09:57:13
Ну или пользовать кусочек. Для from достаточно скопипастить 10 строк

Даня
22.02.2018
10:08:59
@lonokhov, @lightgreen, спасибо!

Leonid
22.02.2018
10:12:00
Допустим я хочу подключаемые бекенды для хранения юзеров. Апи вида getUser :: UserId -> m User saveUser :: User -> EitherT UserConflicts m () на даёт транзакции. Можно конечно наделать мелких функций типа markSuccessefulLogin :: UserId -> m () lockOutUser :: UserId -> UTCTime -> m () И наверно оно будет норм, но может такое тоже норм? modifyUser :: UserId -> (User -> Either e User) -> m (Maybe (Either e User)) выглядит ужасно. А если еще приплести возможность UserConflict то совсем тошно. Ну или исключения тогда уж использовать для UserConflict.

Советы?

Aleksey
22.02.2018
10:20:30
MonadThrow и выпилить Maybe (Either e User)

Leonid
22.02.2018
10:23:30
не люблю я исключения, Снойманищина выходит :( modifyUser :: Exception e => MonadThrow m => UserId -> (User -> Either e User) -> m User modifyUser :: Exception e => MonadThrow m => UserId -> (User -> Either e User) -> m (Maybe User) Жалко нет вменяемого синтаксиса для анонимных сумм

Aleksey
22.02.2018
10:24:01
Так у тебя m то всё равно MonadIO небось

Так что исключения хуже не сделают

Leonid
22.02.2018
10:25:01
ну как не сделают, мне во всяких либак с исключениями несколько бесит что приходится ковырять сорцы и искать "А чо оно может кинуть?"

Google
Leonid
22.02.2018
10:25:17
доки врут, типы нет

Хотя да, если чекать конфликты юзернеймов и прочего до модификации то наверно не страшно если оно эксепшеном прилетит в супер редком случае конкуретного изменения

кек https://github.com/commercialhaskell/stack-templates/pull/112

"Со стэком ваши старые туториалы не сломаются!"

Aleksey
22.02.2018
10:51:29
Ну так указывай в туториале явно имя шаблона.

Это как номер снапшота не указать

Хочется предсказуемости - нужно фиксировать всё

Leonid
22.02.2018
10:52:14
я думаю многие даже не думали о шаблонах и их существовании

Я к тому что всё это всегда подавалось под соусам "подумайте о детях". А тут на детей еще и шаблоны вываливать.

Aleksey
22.02.2018
10:54:25
В чем посыл то? В том, что "stack - зло, и Снойман - негодяй"? Со стеком стало проще начинать. hpack ещё больше упрощает конфигурирование, как и готовые шаблоны

Leonid
22.02.2018
10:54:33
А потом новички мучаются почему они делают как им советуют - меняют .cabal и ничего не происходит. И опять же stack.yaml vs package.yaml.

посыл в том что в своём глазу бревна нет

я согласен что со стэком удобнее новичкам, но вот такие внезапные и ничем не оправданные изменения я осуждаю

A64m
22.02.2018
10:56:29
со стеком действительно стало проще. Для начинающих, на виндовс и т.д. Но в 17 году со стеком стало обратно становиться сложнее. Наверное слишком много времени на борьбу с кабалистами стало уходить,

Aleksey
22.02.2018
10:56:54
если это отражено в CHANGELOG, который у stack есть, в отличие от многих пакетов, то норм. В доке это учтут тоже, наверняка

Leonid
22.02.2018
10:57:00
впрочем cabal init мне удобнее чем разбираться с шаблонами. и simple шаблон тоже весьма opinionated

Leonid
22.02.2018
10:58:37
так его ж ревертнули
ну и ладно тогда. просто некоторые видать успели попасть в окно

Google
A64m
22.02.2018
11:00:15
вот когда будет бекпак работать в стеке - тогда будут молодцы. А пока они враги прогресса

Alexander
22.02.2018
11:47:05
количество людей в группах в телеграмме можно использовать в CRDT они образуют semi-lattice, все время растут и не понижаются (на самом деле нет)

Leonid
22.02.2018
11:53:41
А есть живой проект для юникернелов на хаскеле?

Типа мираж ос

Kirill
22.02.2018
11:54:53
The HaLVM is a proud member of the unikernel.org community

Pineapple
22.02.2018
11:55:07
Хотя да, если чекать конфликты юзернеймов и прочего до модификации то наверно не страшно если оно эксепшеном прилетит в супер редком случае конкуретного изменения
Но это повышает вероятность того, что именно этот суперредкий случай не будет обработан корректно. А какая семантика нужна от API?

Leonid
22.02.2018
11:55:39
The HaLVM is a proud member of the unikernel.org community
А его пилят, или PhD уже получен?

Kirill
22.02.2018
11:56:16
ну вроде какое-то время назад реанимировали под эгидой 2-й версии

коммит вон в мастере меньше месяца назад последний

Leonid
22.02.2018
11:56:34
Но это повышает вероятность того, что именно этот суперредкий случай не будет обработан корректно. А какая семантика нужна от API?
Ну если не обработается то не страшно, вернётся 500 и запись в лог будет. А семантика serialized транзакции, для простоты

Kirill
22.02.2018
11:56:40
больше ничего не навру

в майлстоунах уже и 3-я версия есть

Pineapple
22.02.2018
11:57:54
Так если пофиг - бросай исключения

A64m
22.02.2018
11:58:14
на 8.2 пока не перешли

Leonid
22.02.2018
11:59:11
Так если пофиг - бросай исключения
Вот да. Анализ Api через разговор (с собой) в чате помог

A64m
22.02.2018
12:00:41
хотя вот вижу ветка wip-halvm3-base-backpack что-то делают, значит

Pineapple
22.02.2018
12:00:59
Идея для стартапа: чат-бот, которому программисты объясняют свои проблемы

Страница 864 из 1551