Dmitry
Dmitry
Это если ты не шибко математик
Dmitry
Но Хаскель модно и без ТК
Dmitry
И даже можно
Pavel
не, не шибко. спасибо
Pavel
@A64m_qb0 @graninas про ленивость понял, спасибо
Alexander
а если я хочу что-то типа Once для определенного типа операций, то мне нужно что-то похожее делать
Alexander
у меня есть AST я могу его оптимизировать, при этом optimize . optimize = optimize
Alexander
хочется не перепрогонять оптимизации на поддеревьях где оно уже сделано
Alexander
делать Optimized !s s/ optimized x = Optimized x (optimize x) ?
A64m
для сжатия каких-то матрешек с исключением повторных проверок где они убраны делают же что-то вроде
Complete a | Partial (Partial a)
Alexander
ну у меня тот же тип
Alexander
а ли Partial a = Complete | Partial (Partial a) ?
A64m
да
A64m
там параметра, конечно. два может быть
A64m
но не обязательно
Alexander
Compete a конечно же
A64m
Complete a
Alexander
мне второй конструктор не нравится
кана
Alexander
возможно много
Alexander
причем в разных местах
Alexander
причем в одной точне может сразу много уровней к AST добавиться, так что нельзя делать shallow функцию для оптимизации
Alexander
(но проще всего забить и вызывать 1 раз)
Alexander
я сейчас так сделаю, но мне кажется это не все случаи покроет
кана
кана
а то не понятно, зачем все же эта рекурсия в типе
A64m
а, забыл написать, что комитетчики приняли
https://github.com/ghc-proposals/ghc-proposals/pull/112
кана
вот типа простой аст с одной оптимизацией (которую по факту можно сделать за один раз, если сделать правую рекурсию, но пример синтетический)
куда тот тип нужно запихнуть?
кана
я думал, что в каждую ноду, тогда нужно делать аст через Fix ExprF и параморфизмы начать писать (чтобы нижние ноды видеть)
Зигохистоморфный
Ilya
да, выглядит как комонада какая-то
Похоже ты прав насчёт комонад, должны подойти. Правда, придется поменять типы, чтобы был осмысленный extract, но так даже лучше выходит.
Зигохистоморфный
это уже говорит о duplicate -> Crowd (Crowd Int)
так что да, тут комонада пойдет
Зигохистоморфный
твой new наверное это duplicate
Зигохистоморфный
из комонады
кана
ну так-то не важно, обобщать до комонады или нет
кана
там суть в том, что нужно будет генерики использовать
кана
чтобы по всем полям пробегаться
Зигохистоморфный
или тарелки всякие)
кана
а плейты не на генериках?
Ilya
Опыта нет линзах:)
Ilya
А комонады простые и понятные
кана
ну типа я к тому, что сам тайпкласс и слово "комонада" ничего не решит тебе, это просто рамки, которые дадут тебе несколько фич, если ты в них влежешь
кана
для генерации кода все равно нужны генерики, ведь ты не знаешь поля
Зигохистоморфный
да думаю, если тебе надо поведения комонады, то мб лучше проанатировать свой адт косвободной?
Зигохистоморфный
Alexander
Alexander
это ещё хитрый map по нему
Зигохистоморфный
Зигохистоморфный
map f . duplicate = extend
Alexander
там не map, там mapAccumulate
Alexander
ты когда делаешь duplicate ты вместо n дырок делаешь одну
Alexander
как бы data Three a b c duplicate' :: Three a b c -> (Three (Three x b c) (Three a x c) (Three a b x)
Зигохистоморфный
это сценалий для Cofree, я же написал, что можно аннотировать Cofree
Alexander
наркоманы, нет бы руками написать
Зигохистоморфный
зачем? если есть абстракция над обобщением всех коданных?
Alexander
быстрее бы вышло
Alexander
осбенно обидно будет если изначально алгоритм не тот
Alexander
т.е. обобщать круто, когда ты сравнимое время на это тратишь, или вечером балуешься
Alexander
или если там много таких структурок
Alexander
не обобщающихся
Evgeny
Привет. Пытаюсь собрать проект ghcjs + miso с помощью stack.
Возникает следующая проблема. Когда miso - единственная зависимость, указанная в dependencies в package.yaml, то всё собирается. Когда добавляю туда aeson - всё по-прежнему собирается. Но, когда в stack.yaml в extra-deps указываю конкретную версию aeson, получаю такую ошибку:
The following package identifiers were not found in your indices: ghcjs-base-0.2.0.0
В чём тут может быть дело?
A64m
наверное в том, что он аесон не той версии, от которой гхцжс зависит?
Anonymous
К вопросу о ТК и Х:
https://en.m.wikibooks.org/wiki/Haskell/Category_theory
полюбопытствуйте
Зигохистоморфный
ахах
наша Ж?
https://github.com/leftaroundabout/explicit-constraint-lens/blob/master/Lens/Explicit.hs#L65
Cheese
ух ты
type AGetter 𝑠 𝑡 𝑎 𝑏 = Ж.Optic Ж.GetterTrait 𝑠 𝑡 𝑎 𝑏
Зигохистоморфный
а вообще мне не понятен этот модуль, зачем такие линзы?
Aliester
оптик ж сеттер, окаянный
Aleksei (astynax)
Жоптик какой-то
Aleksei (astynax)
(простите)
Зигохистоморфный
Ж.Optic
Зигохистоморфный
Ж.unto :D
Зигохистоморфный
Ж.Iso <- Жиза :D
Anonymous
ну кто -нибудь, пошутите уже про _|_
Alexander
<ленивая шутка про _|_>
Aleksei (astynax)
Мы же не виноваты, что автор кода по ссылке выше кириллический алиас для модуля использовал и получилось смешно