Вопросы по теме '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 просмотров
schedule
19.01.2023
Что ближе всего к 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 просмотров
schedule
07.11.2022
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