Resultados de la búsqueda a petición "gadt"

2 la respuesta

OCaml errores de recursión polimórficos

Dados los siguientes tipos: type _ task = | Success : 'a -> 'a task | Fail : 'a -> 'a task | Binding : (('a task -> unit) -> unit) -> 'a task | AndThen : ('a -> 'b task) * 'a task -> 'b task | OnError : ('a -> 'b task) * 'a task -> 'b task type ...

1 la respuesta

GADT's: ¿aplicaciones y utilidad?

Estoy cubriendo los GADT usando learnyouahaskell y estoy interesado en sus posibles usos. Entiendo que su característica principal es permitir la configuración de tipo explícito. Como: data Users a where GetUserName :: Int -> Users String ...

3 la respuesta

Funciones para tipos de datos polimórficos

datosFoo a se define como: data Foo a where Foo :: (Typeable a, Show a) => a -> Foo a -- perhaps more constructors instance Show a => Show (Foo a) where show (Foo a) = show acon algunas instancias: fiveFoo :: Foo Int fiveFoo = Foo 5 falseFoo :: ...

1 la respuesta

Coincidencia de patrones en la teoría del tipo observacional

Al final de la sección "5. OTT completo" deHacia la teoría del tipo de observación [http://strictlypositive.org/ott.pdf]Los autores muestran cómo definir los tipos de datos indexados coercibles bajo constructores en OTT. La idea es básicamente ...

2 la respuesta

Total de colas persistentes en tiempo real

Okasaki describe colas persistentes en tiempo real que se pueden realizar en Haskell utilizando el tipo data Queue a = forall x . Queue { front :: [a] , rear :: [a] , schedule :: [x] } donde las rotaciones incrementales mantienen la ...

2 la respuesta

Crear expresión GADT en OCaml

Ahí está mi expresión GADT de juguete: type _ expr = | Num : int -> int expr | Add : int expr * int expr -> int expr | Sub : int expr * int expr -> int expr | Mul : int expr * int expr -> int expr | Div : int expr * int expr -> int expr | Lt : ...

1 la respuesta

Inferencia de tipos con GADT: a0 es intocable

Digamos que tengo este programa {-# 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 xCompila bien. Pero cuando comento en elprint x, ...

1 la respuesta

Lista de cualquier `DataKind` en GADT

Descargo de responsabilidadLos GADT y DataKinds son un territorio inexplorado para mí, por lo que algunas de sus limitaciones y capacidades son desconocidas para mí. La preguntaAsí que estoy escribiendo un AST para un emisor de código ...

1 la respuesta

makeLenses para GADTs (Haskell)

¿Hay un equivalente demakeLenses para GADTs? Si tengo un simpleGADT me gusta: data D a b where D :: (Ord a, Ord b) => !a -> !b -> D a b¿Hay alguna forma de generar lentes automáticamente pasando un constructor y una lista de nombres de campo?

1 la respuesta

¿Cómo se pueden implementar los agujeros y los contextos para los tipos de tipo superior en una biblioteca uniplate de estilo de lente?

András Kovács propuso esta preguntaen respuesta a una respuesta a una pregunta anterior. [https://stackoverflow.com/questions/25355570/simplifying-a-gadt-with-uniplate/25389564#comment39600628_25389564] En una biblioteca uniplate estilo lente ...