Описание тега deriving
В Haskell производный экземпляр - это объявление экземпляра, которое создается автоматически вместе с объявлением данных или нового типа. Тело объявления производного экземпляра синтаксически выводится из определения связанного типа.
1
ответ
Haskell: получение Show для типов Fix
Я пытаюсь реализовать рекурсивный тип данных, используя recursion-schemes, Я хотел бы иметь возможность распечатать его. import Data.Functor.Foldable data T1F a = Foo deriving Show type T1 = Fix T1F data T2 = Bar T1 deriving Show -- error here Сообщ…
21 мар '17 в 18:36
0
ответов
Получите тип данных записи без шаблона haskell
Итак, я немного поигрался с GHC.Generics, которые великолепны, но кажутся ограниченными / сосредоточены в основном на генерации экземпляров. Что я хотел бы сделать, если это возможно, это получить новый тип данных из другого. Допустим, у вас есть сл…
10 мар '14 в 12:15
1
ответ
Почему этому новому типу не дают правильный экземпляр Read?
Я создал newtype псевдоним IP введите от Data.IP: {-# LANGUAGE GeneralizedNewtypeDeriving #-} module IPAddress (IPAddress) where import Data.IP (IP) import Database.PostgreSQL.Simple.ToField newtype IPAddress = IPAddress IP deriving (Read, Show) ins…
03 апр '17 в 01:59
2
ответа
Написание правильного пользовательского экземпляра для чтения
Привет товарищи Хаскеллерс, Я изучаю Haskell с одного месяца и изо всех сил пытаюсь создать пользовательский экземпляр для чтения для личного типа данных. Я следовал этому и соответствующей главе в Learn Yourself a Haskell, вот мой фрагмент кода. da…
23 апр '17 в 11:34
1
ответ
Можно ли сделать инфикс-конструктор данных haskell GADT в производном Show?
Рассмотрим два data декларации: {-# LANGUAGE GADTs #-} data X = Int `Y` Int deriving Show data Z where W :: Int -> Int -> Z deriving Show main = do print (1 `Y` 2) print (3 `W` 4) Запуск вышеуказанной программы производит: 1 `Y` 2 W 3 4 поэтом…
23 июн '17 в 20:08
2
ответа
Получение данных. Комплекс в Хаскеле
У меня есть код, который выглядит примерно так: import Data.Complex data Foo = N Number | C ComplexNum data Number = Int Integer | Real Float | Rational Rational deriving Show data ComplexNum = con1 (Complex Integer) | con2 (Complex Float) | con3 (C…
26 янв '14 в 04:48
2
ответа
Автоматический вывод Data.Vector.Unbox с синонимами связанных типов
У меня есть тип данных newtype Zq q = Zq (IntType q) где 'q' будет экземпляром класса class Foo a where type IntType a и "IntType" - это просто базовое представление (то есть Int, Integral и т. д.), связанное с "q". Я хочу сделать Zq экземпляром Dat…
09 июл '12 в 16:20
0
ответов
Новый тип, производный IsSequence
У меня новый тип X, который в основном список Ints. Я использую ClassyPrelude вместо стандартной Prelude и хочу получить класс IsSequence. Это делает необходимым также выводить множество других классов. Расширение языка GeneralizedNewtypeDeriving до…
11 апр '18 в 13:51
1
ответ
Получение экземпляров по умолчанию с использованием GHC.Generics
У меня есть класс типов Cyclic для которого я хотел бы иметь возможность предоставить общие экземпляры. class Cyclic g where gen :: g rot :: g -> g ord :: g -> Int Учитывая тип суммы нулевых конструкторов, data T3 = A | B | C deriving (Generic…
03 апр '14 в 23:39
2
ответа
Почему Либо получает Шоу, а может и нет?
Документация обоих Either а также Maybe указывают, что у них есть случаи Show, Either определяется как производный Show просто: data Either a b = Left a | Right b deriving (Eq, Ord, Read, Show, Typeable) Еще, Maybe не: data Maybe a = Nothing | Just …
07 янв '15 в 22:10
1
ответ
Деривация экземпляра Typeable с контекстом
Я пишу набор функций для работы с HTTP-запросами и мне нужно создать набор исключений для обработки сбоев. Вот data HStream ty => ErrorResponse ty = ErrorResponse (Response ty) data HStream ty => HttpException ty = WrongURIException String | C…
16 апр '14 в 11:23
0
ответов
Автоматически получить Unbox для нового типа без TH
Итак, у меня есть довольно простой новый тип: newtype SomeID = SomeID Word64 deriving (Show,Eq) И я хотел бы использовать этот тип в распакованном векторе, но при первом осмотре это кажется более сложным, чем вывод... скажем... Storable, И когда я г…
01 сен '16 в 15:29
1
ответ
Как вывести std::vector?
Я хочу класс, полученный из std::vector для моего оператора [] template<class T> class MyVector : public std::vector<T> { public: // ?... const T &operator[](size_t index) const { //... } T &operator[](size_t index) { //... } }; …
05 июл '18 в 15:02
1
ответ
haskell - есть ли способ генерировать "производные" экземпляры для грубо-кортежно-изоморфных типов данных?
Предположим, у меня есть тип данных, как data D a = D a a a и класс типов class C c ... instance (C c1, C c2) => C (c1, c2) Затем я хочу иметь возможность написать data D a = D a a a deriving C и это генерирует экземпляр, instance C ((a, a), a) =…
11 мар '12 в 23:21
1
ответ
Когда мы должны ставить скобки после получения?
Я вижу два выражения data BinTree a = BTNil | BTNode a (BinTree a) (BinTree a) deriving Show data Day = Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday deriving (Enum) Я сбиваю с толку, когда я должен использовать скобки после п…
10 июл '18 в 22:45
1
ответ
Могу ли я считать этот вывод самым левым или / и самым правым?
Например, я хотел бы получить строку 'aabbccdd' из заданного набора продукции: S -> AB | C A -> aAb | ab B -> cBd | cd C -> aCd | aDd D -> bDc | bc Я могу вывести строку из AB, используя самый левый и самый правый вывод. Но как насчет…
19 май '16 в 11:21
3
ответа
Comonads на молнии, как правило
Для любого типа контейнера мы можем сформировать (элементно-ориентированную) молнию и знать, что эта структура является Comonad. Это было недавно подробно изучено в другом вопросе переполнения стека для следующего типа: data Bin a = Branch (Bin a) a…
28 авг '14 в 16:51
1
ответ
Как я могу получить экземпляр данных для GADT в Haskell?
У меня есть GADT, который когда-либо используется только с двумя разными параметрами, ForwardPossible и (): -- | Used when a forward definition is possible. data ForwardPossible = ForwardPossible deriving (Eq, Ord, Typeable, Data, Show) -- | GADT wh…
24 сен '12 в 22:12
1
ответ
Вывод типа и его зависимостей
Я играл с обертками нового типа для своих индексов, чтобы избежать ошибок, и у меня есть такой код: {-# LANGUAGE GeneralizedNewtypeDeriving #-} newtype PersonIdx = PersonIdx Int deriving (Enum, Eq, Integral, Num, Ord, Real, Show) Вывести Integralнуж…
18 янв '10 в 17:28
3
ответа
Есть ли шаблон Haskell / механизм получения для Data.Binary (или друзья?)
Data.Binary документация показывает написание экземпляра от руки. Это можно обойти? Я видел здесь, что есть еще одна библиотека, SerTH, которая имеет механизм получения (на основе Template Haskell), но ссылка на нее кажется неработающей. Кроме того,…
03 янв '12 в 15:39