кана
окей, а убрать ошибку тут в принципе возможно?
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
вроде нет
A64m
во втором случае False участвует в выборе инстанса
Alexander
угу
Alexander
в первом проверка идет после выбора инстанса
кана
ух, ладно, мутил долго и много, на сегодня сдаюсь
Dmitry
https://gist.github.com/kana-sama/6ac112aff933a34ea12c4878a80755fd
переписал вчерашние рекорды, теперь:
a) вся работа с ними изначально через линзы
b) они не статичны, то есть можно менять линзами типы полей
c) красивые лейблы для линз
все бы круто, но они не работают) Там оверлапинг инстанов для генерации линз, которого быть не должно вообще. Тыкал на шару OVERLAPS/PABLE/PING, не помогло, мануал тоже почитал, не помогло (то есть они говорят как правильно расставить приоритет, но там оверлапинг в принципе не должен был появиться). Может кто помочь? Для кода нужны только lens, ошибка возникает в самом конце (в месте использования), инстансы так же выделил комментариями
Я автоматически делаю HasLensB (b::Bool) .... where flensB .... Потом flens = flensB @(x == y) и два инстанса HasLensB ('True | 'False) .... Надеюсь, что это в тему и решает проблему.
кана
вот ща так пытался делать, ошибка не исчезла
Alexander
что у нас из memotrie хорошего есть?
Зигохистоморфный
Alexander
идеально если с поддержкой lru
Alexander
были ещё
Alexander
коноловоский нужно оптимизировать
Alexander
иначе он не клёвый
Alexander
т.е. с теор точки зрения он клёвый конечно
Alexander
хотя в моём случае можно и свою мапу положить
кана
Dmitry
надеялся обойтись одним классом HasLensB, но не получилось. Пришлось использовать еще HasLens
кана
Dmitry
Там рядом другой gist лежит на ту же тему, 4-месячной давности ;-)
Dmitry
тоже здесь спрашивали...
21it
привет!
пишет кто-нибудь юнит-тесты с использованием библиотеки tasty?
21it
мне надо как-то протестировать там функцию которая возвращает значение в обёртке IO
21it
чёт не могу найти как это правильно сделать
Cheese
Cheese
21it
на одном значении
21it
вот пример
21it
https://github.com/timCF/happeteer/blob/771d568d9774364f8328ba55ca2d937e0594cabb/test/HappeteerTest.hs
21it
вроде написано правильно но тест не компилится
Cheese
подключить tasty-hunit, взять оттуда testCase
Cheese
Maxim
хм, а можете по-простому объяснить в чем принципиальное отличие The Elm Architecture от FRP?
извиняюсь, если вопрос звучит глупо
Cheese
Andrey
а можно объявлять временные типы данных в where внутри функции?