кана
окей, а убрать ошибку тут в принципе возможно?
A64m
вернее разрешением оверлапа можно
кана
и как его разрешить? Конкретный инстанс не указать, прагмы эффекта не имеют
A64m
в смысле?
кана
ну сначала я решил (вроде как нужно) добавить шагу рекурсии {-# OVERLAPS -}, не помогло, и я перебрал разные комбинации OVERLAP[S|PABLE|PING] у обоих инстансов в надежде что что-то прокнет, не помогло
A64m
хммммм
кана
даже так, я перебрал все 9 комбинаций, сейчас еще раз сделал это (ух, тык-дривен-девелопмент)
A64m
overlapping должны били сработать, это как раз если лень думать что там кого перекрывает
Зигохистоморфный
тут рекорды не смотрел? https://github.com/target/row-types
кана
там другой подход
кана
там хэшмап полей и отдельные row, у меня список полей и роу завязаны на список полей (зависимы)
кана
первый подход (с отдельной мапой на типах и отдельной структурой для полей) предположительно без всяких unsafe/Any/Dynamic не обойтись, так как связи/зависимости между конкретными полями и их типами нет, нужно хранить ее в рантайме (индекс типа например) и кастить
кана
и типа это не так и плохо, но противоречит моей цели
Alexander
можно через олегинг
Alexander
введением mutiparam type classes и вытаскиванием хвоста в голову
Alexander
не знаю как четкий алгоритм описать
Alexander
смысл в том что разбивается класс на 2 класса оснвоной и воспомогательный
кана
продолжай
Alexander
во вспомогательном параметры это голова и хвост
Alexander
поэтому там можно делать overlap и все чекается
Alexander
но мне приходится каждый раз когда это делаю очередной раз вспоминать как это делается
Alexander
вроде тебе в приват я решение какой-то задачки через этот подход кидал?
кана
ух, выглядит как страншый костыль, типа взять проблему выбора инстанса с компилятора на себя, попробую сделать
Alexander
не помню, кому-то умному, но кто с type level магией начинал
Alexander
давно весьма
кана
да, возможно там про тайп-левел списки что-то было, преобразование его в дерево
Alexander
там вроде похожая фишка использовалась
Зигохистоморфный
а в generic-lens как?
Alexander
не знаю, надо бы посмотреть
Alexander
а то наверняка я новые модные решения успускаю
кана
https://wiki.haskell.org/GHC/AdvancedOverlap - тут есть подобное?
Alexander
1.2 похожее
кана
1.2 похожее
хм, а там без рекурсии, с рекурсией получается, что в вспомогательном классе будет использован основной, то есть взаимная рекурсия, так и задумано?
Alexander
да
Anonymous
Arsen Kondratiev будет жить. Поприветствуем!
кана
а можно как-то увидеть контекст дырки? А именно, какие словарики инстансов доступны?
кана
типа вот я сделал instance A => B x :: B => a x = _x и я хочу увидеть, что в _x у меня доступен словарик A, хотя в общем случае это же не так, хм
A64m
почему не так?
кана
потому что возможно есть другие инстансы B, где нет требования A
кана
ох, сколько же странной магии я уже пилю, и все равно не работает
кана
instance (flag ~ HFalse) => ShowPred a flag особенно вот это мне интересно, это какой-то способ указать дефолтное значение флага
кана
но я не понимаю как оно работает
A64m
вроде нет
A64m
во втором случае False участвует в выборе инстанса
Alexander
угу
Alexander
в первом проверка идет после выбора инстанса
кана
ух, ладно, мутил долго и много, на сегодня сдаюсь
кана
вот ща так пытался делать, ошибка не исчезла
Cheese
а, черт, это же просто instance ShowPred a False
C False даст определить C True в другом месте программы, а x ~ False => C x не даст
Alexander
что у нас из memotrie хорошего есть?
Зигохистоморфный
Alexander
идеально если с поддержкой lru
Alexander
были ещё
Alexander
коноловоский нужно оптимизировать
Alexander
иначе он не клёвый
Alexander
т.е. с теор точки зрения он клёвый конечно
Alexander
хотя в моём случае можно и свою мапу положить
Dmitry
вот ща так пытался делать, ошибка не исчезла
Вот сделал https://gist.github.com/odr/7907998753255ff86b23e816b5d9b621
кана
Dmitry
надеялся обойтись одним классом HasLensB, но не получилось. Пришлось использовать еще HasLens
Dmitry
Там рядом другой gist лежит на ту же тему, 4-месячной давности ;-)
Dmitry
тоже здесь спрашивали...
21it
привет! пишет кто-нибудь юнит-тесты с использованием библиотеки tasty?
21it
мне надо как-то протестировать там функцию которая возвращает значение в обёртке IO
21it
чёт не могу найти как это правильно сделать
21it
на одном значении
21it
вот пример
21it
https://github.com/timCF/happeteer/blob/771d568d9774364f8328ba55ca2d937e0594cabb/test/HappeteerTest.hs
21it
вроде написано правильно но тест не компилится
Cheese
подключить tasty-hunit, взять оттуда testCase
Maxim
хм, а можете по-простому объяснить в чем принципиальное отличие The Elm Architecture от FRP? извиняюсь, если вопрос звучит глупо
Andrey
а можно объявлять временные типы данных в where внутри функции?