Описание тега ghc-generics
Поддержка общего программирования в GHC позволяет определять классы с методами, которые не нуждаются в пользовательской спецификации при создании экземпляров: тело метода автоматически выводится GHC. Это похоже на то, что происходит, например, со стандартными классами, такими как Read и Show, но теперь для классов, определяемых пользователем.
2
ответа
Получение экземпляра функтора, а не последнего аргумента типа
Связанный с этим вопросом, который я задал ранее сегодня. У меня есть тип данных AST с большим количеством случаев, который параметризуется типом "аннотации" data Expr ann def var = Plus a Int Int | ... | Times a Int Int deriving (Data, Typeable, Fu…
28 дек '14 в 07:02
0
ответов
Получите тип данных записи без шаблона haskell
Итак, я немного поигрался с GHC.Generics, которые великолепны, но кажутся ограниченными / сосредоточены в основном на генерации экземпляров. Что я хотел бы сделать, если это возможно, это получить новый тип данных из другого. Допустим, у вас есть сл…
10 мар '14 в 12:15
2
ответа
Построение n-арного произведения со всеми значениями простого типа суммы
Я работаю с библиотекой generics-sop. Я хочу написать значение со следующим типом: values :: forall r. IsEnumType r => NP (K r) (Code r) То есть для типов суммы, чьи конструкторы не имеют аргументов (IsEnumType) Я хочу производить н-арый продукт …
09 дек '18 в 12:28
2
ответа
Как создать экземпляр ListIsomorphic для универсальных векторов?
Учитывая следующий класс: class ListIsomorphic l where toList :: l a -> [a] fromList :: [a] -> l a Как я могу написать экземпляр для векторных типов, используя Data.Vector.Generic? Это не работает: instance (V.Vector v a) => ListIsomorphic …
20 авг '15 в 22:39
1
ответ
Бесконечная рекурсия при перечислении всех значений универсального экземпляра
Для другого ответа я написал следующий код, предоставляя по диагонали Universe экземпляры для перечислимых Generic s (он немного обновлен по сравнению с версией, но использует ту же логику): {-# LANGUAGE DeriveGeneric, TypeOperators, ScopedTypeVaria…
08 май '14 в 16:22
1
ответ
Получать Generic и ToJSON одновременно?
У меня есть модуль Foo.hs который содержит определение, которое не выводит Generic: -- Foo.hs data Blather = Blather ... -- Generic not derived here И в другом модуле я хочу получить ToJSON: -- Bar.hs {-# LANGUAGE DeriveGeneric, DeriveAnyClass #-} i…
08 авг '17 в 15:30
2
ответа
Реализовать стиль Applicative с помощью Generics
контекст Если у нас есть data Foo = Foo { x :: Maybe Int, y :: Maybe Text } мы уже можем создать аппликативный стиль в аппликативном контексте (здесь IO) как myfoo :: IO Foo myfoo = Foo <$> getEnvInt "someX" <*> getEnvText "someY" пробле…
24 окт '16 в 08:52
1
ответ
Как создать экземпляр Mk для GHC.Generics.U1?
Я работаю над контентом в блоге. Построение конструкторов данных с помощью GHC Generics. Мой предыдущий вопрос здесь. Публикация имеет следующий код для создания Rep: {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-} {-# LANGUAGE Flexib…
17 фев '16 в 00:26
2
ответа
Преобразовать из типа `T a` в`T b` без шаблона
Итак, у меня есть тип данных AST с большим количеством случаев, который параметризуется типом "аннотации" data Expr a = Plus a Int Int | ... | Times a Int Int У меня есть типы аннотаций S а также Tи некоторые функции f :: S -> T, Я хочу взять Exp…
28 дек '14 в 06:01
1
ответ
Добавление ограничения Show при использовании GHC.Generics
Я использую GHC Generics. Мой вариант использования практически идентичен примеру в вики, за исключением того, что я кодирую и декодирую последовательности генов. Все это работало нормально, пока я не решил сохранить список того, что уже прочитал, ч…
20 июл '15 в 11:59
1
ответ
Использование семейства типов и Generics для поиска значения Id
Этот вопрос относится к этому вопросу, где я хотел избежать шаблон извлечения Id значение из структуры данных, но типобезопасным способом. Я повторю соответствующие детали проблемы здесь: предположим, у вас есть тип Id: newtype Id = Id { _id :: Int …
05 дек '17 в 12:40
0
ответов
Производный тип для Text.PrettyPrint.Doc
У меня есть тип AST, который я хочу вывести как Typeable, так что я могу сделать его общий обход Scrap-your-шаблонный. Тем не менее, дерево снабжено сообщениями в Doc тип библиотеки Text.PrettyPrint из симпатичного пакета. Чтобы получить Typeable, д…
31 дек '14 в 21:43
2
ответа
Как заменить Data.Generics на GHC.Generics?
Так что я использовал syb в течение длительного времени, и часто есть такие функции, как friendlyNames :: Data a => a -> a friendlyNames = everywhere (mkT (\(Name x _) -> Name x NameS)) Что эквивалентно этому при использовании GHC.Generics,…
08 сен '16 в 15:43
1
ответ
Преимущества SYB (откажитесь от ваших шаблонов) перед GHC Generics
Есть ли какие-либо задачи, которые возможны только с SYB, или намного проще с ним, по сравнению с GHC Generics?
12 ноя '14 в 18:05
1
ответ
Нет экземпляра для (Generic (f a)), возникающего в результате использования `from'
У меня проблемы с поиском подходящих ограничений типа для следующего кода {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE FlexibleContexts #-} import GHC.Generics data Value = One | Two d…
31 янв '15 в 18:37
1
ответ
Понимание того, как построить GHC.Generics Rep и преобразовать обратно в значения
Я пытаюсь узнать о том, как использовать GHC.Generics, Увлекательная тема, но пугающая. Читая запись в блоге " 24 дня расширений GHC: DeriveGeneric", я узнал, как получить значение и перемещаться по нему. Rep, Хорошо. Тем не менее, читая запись в бл…
15 фев '16 в 21:19
0
ответов
Извлечение идентификатора с помощью GHC.Generics
Как извлечь идентификатор (в данном случае целое число) из структуры, используя GHC.Generics? у меня есть Id тип: newtype Id = Id { _id :: Int } и много типов, которые используют этот тип: data VarId = VarId Name Id SortId data FuncId = FuncId Name …
23 ноя '17 в 10:48
0
ответов
Восстановите определения типов, используя GHC.Generics
Вчера я попытался ответить на этот вопрос о представлении для типа данных. используя GHC.Generics. Я мог бы восстановить определения типов для примера задачи, приведенной, например, для: data Artist = Artist Text Genre data Genre = Jazz | Metal с пр…
29 мар '14 в 16:05
1
ответ
"packageName" с GHC.Generics
У меня есть класс, который предоставляет глобально уникальный идентификатор для типов: class Named a where nameOf :: a -> (String,String,String) -- (Package, Module, Identifier) default nameOf :: (Generic a, Named' (Rep a)) => a -> (String,…
26 янв '15 в 21:27
1
ответ
Извлечение функции записи в универсальной СОП
В Sum of Products подход, как можно получить функцию записи? Пример кода ниже с типом записи (ghc 7.10.3): {-# LANGUAGE DeriveGeneric #-} import qualified GHC.Generics as GHC import Generics.SOP data Rec = Rec { frec :: Int, srec :: Maybe String} de…
28 мар '16 в 00:42