Вопросы по теме 'deriving'
Как деривация работает в Haskell?
Алгебраические типы данных (ADT) в Haskell могут автоматически становиться экземплярами некоторых классов типов (например, Show , Eq ) путем получения от них.
data Maybe a = Nothing | Just a
deriving (Eq, Ord)
У меня вопрос:...
48677 просмотров
schedule
26.04.2022
Как получить уравнение для 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 просмотров
schedule
22.06.2023
Обобщенное получение 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 просмотров
schedule
20.03.2023
Есть ли способ сократить это производное предложение?
Есть ли способ написать следующее:
{-# 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 просмотров
schedule
31.07.2022
Как переопределить/предоставить пользовательские экземпляры с помощью 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 просмотров
schedule
23.12.2023
Получение 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