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

GADT для полиморфного списка
Я разбираю несколько операторов формы v1 = expression1 v2 = expression2 ... Я использую State Monad, и мое состояние должно быть парой (String, Expr a), я действительно настаиваю на том, чтобы выражения были типизированы. Я попытался...
592 просмотров
schedule 24.04.2022

конструктор haskell GADTs
У меня есть следующие data Expr = Condition v | And Expr Expr | Or Expr Expr и меня просят рассмотреть следующую нетипизированную версию, чтобы завершить: data Expr e where Я не уверен, что мне написать для...
372 просмотров
schedule 08.02.2022

Объяснение нетипизированных терминов
У меня есть продолжение от uni для моей темы Haskell, где мне дали следующее: data Expr = Con Value | And Expr Expr data Value = IntValue Int | BoolValue Bool est :: Expr -> Val est (Con v) = v est (And x y) = case...
293 просмотров
schedule 21.10.2022

Преобразование списков, типы элементов которых параметризованы их индексами с кодировкой типов
Я пытаюсь реализовать типобезопасную биномиальную кучу . Для этого у меня есть два типа данных, типы элементов которых параметризованы их индексами с кодировкой типов: data Zero data Succ a = Succ {-| A GADT representation of lists with...
115 просмотров

Что ближе всего к Haskell GADT и классам типов в F#?
F# — это ML с ООП. Что ближе всего к обобщенным алгебраическим типам данных и классам типов Haskell?
2290 просмотров
schedule 11.07.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

OCaml — GADT — логическое выражение
Я задавался вопросом, есть ли какой-то способ получить это: type binary_operator = And | Or;; type canonical;; type not_canonical;; type 'canonical boolean_expression = | Var : int -> not_canonical boolean_expression | Not : 'canonical...
928 просмотров
schedule 30.10.2022

Проблемы с типами данных
Я создал очень простой пример проблемы, с которой я столкнулся, используя GADT и DataKind. Мое реальное приложение, очевидно, сложнее, но это ясно отражает суть моей ситуации. Я пытаюсь создать функцию, которая может возвращать любое из значений...
538 просмотров
schedule 30.04.2022

Как я могу заставить GHC генерировать экземпляры Data.Typeable для GADT с Typeable в контексте?
Предположим, у меня есть следующий код: {-# LANGUAGE GADTs, DeriveDataTypeable, StandaloneDeriving #-} import Data.Typeable class Eq t => OnlyEq t class (Eq t, Typeable t) => BothEqAndTypeable t data Wrapper a where Wrap ::...
929 просмотров
schedule 30.03.2023

Понимание ограничений поддержки Scala GADT
Ошибка в Test.test кажется неоправданной: sealed trait A[-K, +V] case class B[+V]() extends A[Option[Unit], V] case class Test[U]() { def test[V](t: A[Option[U], V]) = t match { case B() => null // constructor cannot be instantiated to...
3368 просмотров
schedule 06.06.2023

Типовое приведение GADT
Допустим, я пишу DSL и хочу иметь поддержку как поддержки фантомных типов, так и плохо типизированных выражений. Мои типы значений могут быть {-# LANGUAGE GADTs, DataKinds #-} data Ty = Num | Bool deriving (Typeable) data Val a where VNum ::...
287 просмотров
schedule 26.02.2024

Понижение функций до встроенного языка
Как я могу понизить функцию Haskell до встроенного языка максимально безопасным способом. В частности, предположим, что у меня есть тип значения, например data Type t where Num :: Type Int Bool :: Type Bool data Ty = TNum | TBool deriving...
140 просмотров
schedule 05.03.2023

Haskell: перекрывающиеся экземпляры пары с одинаковой специализацией пары
(Используйте комментарии для упрощения копирования и вставки) --Say I have the following monad: {-# LANGUAGE GADTs, FlexibleInstances #-} data Instruction b where Write :: a -> Instruction () Write2 :: (a,a) -> Instruction () Read ::...
145 просмотров
schedule 06.06.2023

GHC жалуется на неисчерпывающие шаблоны, которые применяются средством проверки типов.
У меня есть следующий код {-# LANGUAGE DataKinds, GADTs, TypeOperators #-} data Vect v a where Nil :: Vect '[] a Vec :: a -> Vect v a -> Vect (() ': v) a instance Eq a => Eq (Vect v a) where (==) Nil Nil =...
410 просмотров

Haskell, GADT и -fwarn-incomplete-patterns [дубликаты]
Я пытаюсь понять концепцию GADT с помощью Haskell и пытаюсь следовать сценарию Peano Number, {-# LANGUAGE GADTs, KindSignatures, DataKinds #-} module Data.GADTTest where data Height = Zero | Inc Height deriving (Show, Eq) data TestGADT :: Height...
296 просмотров
schedule 07.09.2022

Нет примеров для (Показать), возникающих в результате использования `X '
С этим кодом {-# LANGUAGE GADTs #-} data X a where X :: (Show a, Num a) => a -> X a instance Show (X a) where show (X x) = "X " ++ show x instance Num (X a) where fromInteger x = X $ fromInteger x Я получаю...
875 просмотров
schedule 29.05.2022

Докажите, что ограничение выполняется для компонента продукта из того факта, что оно выполняется для продукта.
У меня есть класс C с экземплярами для одного типа и для кортежей. class C a instance C Int instance (C a, C b) => C (a, b) Использование обычного Dict GADT для фиксации ограничений {-# LANGUAGE GADTs #-} {-# LANGUAGE...
109 просмотров
schedule 20.09.2022

Проблемы с рефакторингом текущих типов (возможно, связанных с GADT / Type Families)
У меня есть такие типы: -- There are codes newtype ICode = ICode { fromICode :: String } newtype RCode = RCode { fromRCode :: String } data DCode = DCode1 | DCode2 | DCode3 -- There are locations described by type and code. -- Current...
124 просмотров
schedule 11.09.2023

Вывод типа с помощью GADT — a0 неприкосновенен
Допустим, у меня есть эта программа {-# LANGUAGE GADTs #-} data My a where A :: Int -> My Int B :: Char -> My Char main :: IO () main = do let x = undefined :: My a case x of A v -> print v -- print x...
887 просмотров
schedule 27.02.2023

Хорошая печать с бесплатными монадами и GADT
Рассмотрим функтор выражения, определенный следующим GADT: {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} import Control.Monad.Free data ExprF :: * -> * where Term :: Foo a -> (a -> r) -> ExprF r instance Functor ExprF...
470 просмотров
schedule 02.05.2022