
Alexander
20.09.2018
11:09:31
а тут обойдёмся без оффтопа, спасибо

Victor
20.09.2018
11:09:56
Ок )

Alexander
20.09.2018
11:10:44

Aleksey
20.09.2018
11:15:29
А кто как решает проблему error "FIXME: implement later" ?

Google

Aleksey
20.09.2018
11:15:50
постоянно забываю воткнуть реализацию а компилятор никак не предупреждает
можно конечно ревью, но хочется автоматически

Andrey
20.09.2018
11:16:14
undefined + -Wall

Aleksey
20.09.2018
11:16:34
Wall воткнут
а он внезапно ругается на undifined но не ругается на error ?

Alexander
20.09.2018
11:16:57
{-# DEPRECATED fixme "is not allowed in production #-}
тогда сборка с -О0 или ghci будет работать

Dmitry
20.09.2018
11:17:26

Aleksey
20.09.2018
11:17:47

Alexander
20.09.2018
11:18:04

Aleksey
20.09.2018
11:18:14
прикольно

Anatolii
20.09.2018
11:18:26
можно оставлять "_"

Aleksey
20.09.2018
11:18:40
вот бы эту функцию еще в отдельном пакете найти

Google

Alexander
20.09.2018
11:18:49
или 1 на поиск?

Dmitry
20.09.2018
11:20:45

Alexander
20.09.2018
11:25:03
у меня где-то (!) не могу найти валялась структура с O(1) доступом, но О(n) модификацией
ну и boxed только
меня в рассылке наругали что мол с ленивостью давай лучше дерево
это там где функция baal была для генерации меняющих тип линз
потому что иначе ее не назовешь
и я думаю я его пару раз вызвал
надо будет найти и побенчмаркать
хотя может и не надо
но она была по типу рекордов с полями на уровне типов и.е. не то, что typemap

Aleksey
20.09.2018
11:29:11

Aleksey
20.09.2018
11:30:05
не комильфо в целой прелюдии такое

Alexander
20.09.2018
11:30:49

A64m
20.09.2018
11:33:27
с ключем каким-то будет собираться

Aleksey
20.09.2018
11:38:21
лучше тогда WARNING прагму юзать
депрекейшн не для этого всё же

Alexander
20.09.2018
11:40:05
да, можно warning
хотя стоп, я не уверен, что у warning и deprecation одно и тоже поведение везде

Google

Aleksey
20.09.2018
11:41:24
В доке написано, то это одно и то же

Alexander
20.09.2018
11:41:40
ну ок

Aleksey
20.09.2018
11:41:57
> Causes a warning to be emitted when a module, function or type with a WARNING or DEPRECATED pragma is used.
это про -Wdeprecations

Alexander
20.09.2018
11:42:12
точнее чуть побольше действий
fixme = id
{-# NOINLINE fixme #-}
{-# RULE do/fixme forall a . fixme a = warning a #-}
warning = id
{-# WARNING warning "..." #-}
что-то такое
assert наоборот

Dmitry
20.09.2018
11:43:37

Alexander
20.09.2018
11:46:22
там кстати через smallarray это получше
хотя не помню поверх чего у меня было

A64m
20.09.2018
11:52:34
в виниле теперь тоже есть вариант на массивах

Alexander
20.09.2018
12:52:18
@chshersh спасибо кстати за ссылку на пакет, я чего-то про него и забыл сильно и похоже в некоторых местах я его с удовольствием заюзаю
а может просто typeremap использую, если у него есть бесплатное сужение
т.е. из R [A,B,C] мы можем получить R [A,C] бесплатно

Denis
20.09.2018
12:53:43
есть еще type-row или как-то так

Alexander
20.09.2018
12:54:08
ну я помню дизайн typeremap он мне понравился (я бы делал так же)

Denis
20.09.2018
12:54:16
https://github.com/target/row-types

Alexander
20.09.2018
12:54:43
а что там было с экстеншеном компилятора?
не, это не то, что мне нужно

Google

A64m
20.09.2018
12:55:14
с плагином?

Alexander
20.09.2018
12:55:18
ага

Denis
20.09.2018
12:55:43
СRex?
или как его там

Alexander
20.09.2018
12:55:48
мне ж нужна функция R -> Maybe t

Denis
20.09.2018
12:56:02

Alexander
20.09.2018
12:56:10
ну или t In tt => R tt -> t
имя структуры whatever it is

Denis
20.09.2018
12:57:02
типа опциональный деструктор?

A64m
20.09.2018
12:57:31
СRex?
речь про https://ghc.haskell.org/trac/ghc/wiki/Plugins/TypeChecker/RowTypes/Coxswain видимо

Admin
ERROR: S client not available

A64m
20.09.2018
12:58:00
там особо и не доделано, ну и на гитхабе где-то год активности не видно

Denis
20.09.2018
12:58:03
а я про https://wiki.haskell.org/CTRex говорил походу

A64m
20.09.2018
13:02:00
чет у меня никак руки не дойдут бенчмарк разных рекордов сделать, я уже и парсер для -v выхлопа накостылил

Denis
20.09.2018
13:04:06

A64m
20.09.2018
13:11:41
не вижу самого главного показателя, на скольки полях гхц загибается

Denis
20.09.2018
13:12:28

A64m
20.09.2018
13:13:43
я ничего не люблю

Alexander
20.09.2018
13:15:09
@xgrommx мне важны не имена полей, а типы
т.е. тип это имя поля

Google

Denis
20.09.2018
13:15:39
что-то типа typelevel list?

Alexander
20.09.2018
13:15:40
это сильно уменьшает интерфейс и упрощает жизнь
обычный гетерогенный список
с typelevel информацией о том, что там лежит
что там *точно* лежит
т.е. мне норм если там будет лежать больше, чем я мне надо, просто я не смогу это достать

Denis
20.09.2018
13:17:46
это какой-то opened type sum?

Alexander
20.09.2018
13:18:06
да

Denis
20.09.2018
13:18:29

Alexander
20.09.2018
13:20:36
> project :: forall e r v. e :< r => Sum r v -> Maybe (e v)
wtf>
?
нет опять же это оверкил для задачи
так же пакеты инстансы которых я не могу увидеть до конца при масштабе 10% в браузере это не интересно
пакет норм, но для другого
опять же он не плоский
т.е. мне нужен более менее безопасный стораж поверх массивов с индексированием по типам, logN меня устраивает

Denis
20.09.2018
13:25:04
мб что-то такое?
https://github.com/i-am-tom/learn-me-a-haskell#oneof
но это вроде обычный Union
там еще есть
HList
Bag
HTree

Alexander
20.09.2018
13:25:28
а почему бы мне не использовать typeremap?
HList HTree не плоские
Bag тупо совсем не то

Denis
20.09.2018
13:28:32
@qnikst
есть еще
http://hackage.haskell.org/package/union
https://hackage.haskell.org/package/open-union
но в одном из них винил

Alexander
20.09.2018
13:28:46
да я в курсе
ты так говоришь, как будто я этих пакетов не видел