Вопросы по теме 'deriving'

Как деривация работает в Haskell?
Алгебраические типы данных (ADT) в Haskell могут автоматически становиться экземплярами некоторых классов типов (например, Show , Eq ) путем получения от них. data Maybe a = Nothing | Just a deriving (Eq, Ord) У меня вопрос:...
48677 просмотров

Как получить уравнение для GADT с параметром фантомного типа без * kinded
Например, пытаясь скомпилировать следующий код {-# LANGUAGE StandaloneDeriving, KindSignatures, DataKinds, GADTs#-} data ExprTag = Tag1 | Tag2 data Expr (tag :: ExprTag) where Con1 :: Int -> Expr tag Con2 :: Expr tag -> Expr tag Con3...
1482 просмотров
schedule 22.09.2022

Автономное объявление производного объекта в цитате Template Haskell
Почему Template Haskell игнорирует автономное объявление производного объекта в цитате? {-# LANGUAGE TemplateHaskell, StandaloneDeriving #-} data Test a = Test a $([d| deriving instance Show a => Show (Test a); f x = x |]) ghci> :l...
827 просмотров
schedule 19.11.2022

Haskell: получить имя конструктора данных в виде строки
Скажем, у нас есть data D = X Int | Y Int Int | Z String Я хочу иметь функцию getDConst getDConst :: D -> String который возвращает «X», «Y» или «Z» в зависимости от конструктора данных, используемого для его ввода. Есть ли...
2613 просмотров

Обобщенное получение Newtype
Haskell может получить экземпляр для MonadState s в T1 ниже, но не в T2 , который, тем не менее, является очень похожим типом. Каким образом мне следует изменить код для T2 , чтобы экземпляр для MonadState s мог быть получен автоматически?...
2935 просмотров
schedule 20.06.2022

Почему «Или» является производным от «Шоу», а «Может быть» — нет?
Документация по Either и Maybe указывают, что у них есть экземпляры Show . Either определяется как производное от Show , просто: data Either a b = Left a | Right b deriving (Eq, Ord, Read, Show, Typeable) Тем не менее,...
359 просмотров
schedule 25.11.2023

Пользовательское получение (Чтение, Показать) для типа перечисления
Скажем, у меня есть этот тип перечисления: data TVShow = BobsBurgers | MrRobot | BatmanTAS и я хочу определить экземпляры для Read и Show со следующим поведением: show BobsBurgers = "Bob's Burgers" show MrRobot = "Mr. Robot" show...
559 просмотров
schedule 12.01.2023

Есть ли способ получить функции класса Num в собственном типе данных в Haskell?
Скажем, у меня есть объявление типа: data MyType = N Double | C Char | Placeholder Я хочу иметь возможность обрабатывать MyType как Double всякий раз, когда это возможно, со всеми функциями Num, Real, Fractional, приводящими к N (обычный...
742 просмотров
schedule 19.04.2022

Экземпляр класса типа не используется при выводе, содержащем структуру данных
Я пытался использовать в своем коде больше newtype оберток, чтобы создать более различные типы. Я также часто делаю дешевую сериализацию с использованием Read / Show, особенно в виде простой формы строго типизированного файла конфигурации. Я...
64 просмотров
schedule 25.02.2022

Получение расширений с многопараметрическими типами
У меня есть конструктор типа Ast, параметризованный типом идентификатора. Используя расширения DeriveFunctor, DeriveFoldable и DeriveTraversable, можно автоматически создавать соответствующие экземпляры. Теперь я считаю полезным ввести больше...
79 просмотров

Есть ли способ сократить это производное предложение?
Есть ли способ написать следующее: {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveAnyClass #-} data X = A | B | C deriving (Eq, Ord, Show, Read, Data, SymWord, HasKind, SMTValue) Так что предложение deriving можно...
420 просмотров
schedule 08.06.2023

Почему мы не можем получить экземпляры класса Random для перечислений в Haskell?
Я написал это сегодня: data Door = A | B | C deriving (Eq,Bounded,Enum) instance Random Door where randomR (lo,hi) g = (toEnum i, g') where (i,g') = randomR (fromEnum lo, fromEnum hi) g random = randomR (minBound,maxBound) И я подумал,...
255 просмотров
schedule 28.04.2022

Вывести позиционное шоу
Обратите внимание, как T 5 отображается в > newtype T = T { getT :: Int } deriving Show > T 5 T {getT = 5} Есть ли способ получить позиционный вариант Show без синтаксиса записи для типа, который был объявлен с синтаксисом записи?...
160 просмотров

Как переопределить/предоставить пользовательские экземпляры с помощью bs-derived
Используя bs-вывод, я могу вывести, например. show экземпляров с использованием [@deriving show] . Однако неясно, как я буду использовать тот же вывод, но предоставляя собственный экземпляр show для определенного типа данных. Пример:...
24 просмотров
schedule 09.03.2022

Shapeless: в чем разница между этими двумя подходами к созданию экземпляров?
Может ли кто-нибудь объяснить мне, в чем разница между этими двумя подходами для получения экземпляра класса типов (в частности, для Option[A])? 1. trait MyTrait[A] {...} object MyTrait extends LowPriority { // instances for primitives } trait...
83 просмотров

Получение Eq и Show для ADT, содержащего поля, которые не могут иметь Eq или Show
Я хотел бы получить Eq и Show для ADT, содержащего несколько полей. Одним из них является функциональное поле. При выполнении Show я бы хотел, чтобы он отображал что-то фиктивное, например, например. "<function>" ; при...
108 просмотров
schedule 07.06.2023

Как заставить `co-log` `withLog` работать со `Scotty`?
Я уже спрашивал на Reddit , но хотел попросить более широкий круг помощь. Вот репозиторий с кодом, который вы можете запустить для минимального теста: https://github.com/cideM/co_log_issue Если вы запустите stack build , вы получите: •...
106 просмотров
schedule 07.05.2023