Описание тега uniplate

Uniplate - это библиотека для написания простых и кратких общих операций.
2 ответа

Обеспечение того, чтобы тип A haskell содержал член типа B

Давайте посмотрим на следующий код: transformBi (++"asdasd") [1,2,3,4] Понятно, что этот код ничего не делает, но все равно прекрасно компилируется. Я хотел бы создать новую версию transformBi, которая не будет компилироваться, если компилятор может…
1 ответ

Почтовый индекс с списком бул

У меня есть AST представляет программу на Haskell и список bitvector/bool, представляющий наличие аннотаций строгости на Pattern с по порядку. Например, 1000 представляет программу с 4 Pat где первый BangPat, Есть ли способ, которым я могу включать …
02 авг '15 в 19:23
1 ответ

Граф `Pat`s в модуле

Мне нужно посчитать количество Pat в хаскеле Module, Я знаю, что самый простой способ - это сопоставление с образцом на каждом уровне AST, в результате чего получается огромная функция, похожая на весь AST. Я считаю, что есть некоторый способ воспол…
02 авг '15 в 18:22
1 ответ

Общие преобразования на множестве данного типа данных

Если у меня есть тип данных, представляющий подмножество логики высказываний, таких как data Prop = Lit String | Neg Prop | And Prop Prop | Or Prop Prop Есть ли тогда простые способы сделать общие преобразования на [[Prop]]? Например замещать [[And …
14 сен '17 в 20:32
1 ответ

Производный Uniplate с производным

Моя программа широко использует Uniplate.Data, и я хочу улучшить ее производительность. В настоящее время я получаю Data экземпляры автоматически с помощью DeriveDataTypeable Расширение GHC. {-# LANGUAGE DeriveDataTypeable #-} import Data.Data impor…
30 июл '15 в 13:29
1 ответ

Как могут быть реализованы дыры и контексты для типов с более высоким родом в одноплатной библиотеке в стиле линз?

Андраш Ковач предложил этот вопрос в ответ на ответ на предыдущий вопрос. В одноплатной библиотеке в стиле линз для разных видов * -> * на основе класса class Uniplate1 f where uniplate1 :: Applicative m => f a -> (forall b. f b -> m (f …
19 авг '14 в 22:16
1 ответ

Упрощение GADT с Uniplate

Я пытаюсь ответить на этот вопрос, используя uniplateкак я и предлагал, но единственное решение, которое я до сих пор придумала, довольно уродливо. Это кажется довольно распространенной проблемой, поэтому я хотел знать, есть ли более элегантное реше…
18 авг '14 в 02:24
1 ответ

Можно ли использовать universeBi uniplate для получения узлов в первую очередь?

Можно ли использовать Uniplate's universeBiполучить вывод в порядке ширины? Похоже, что результаты возвращаются в первую очередь в глубину. Мне интересно, как я могу использовать uniplate для полученияuniverseBi в широком смысле. Для иллюстрации рас…
10 июл '20 в 02:56