type-families

Я пытаюсь сделать что-то похожее на расширенный трюк перекрытия, чтобы определить экземпляр с перекрывающимся поведением. Я пытаюсь вывести экземпляр для кортежа, который будет использовать экземпляр для поля fst, если оно существует, в противном случае используйте экземпляр для поля snd, если оно существует...

Я пытаюсь заполнить дыру в следующем фрагменте import Data.Proxy import GHC.TypeLits import Data.Type.Equality import Data.Type.Bool import Unsafe.Coerce ifThenElse :: forall (a :: Nat) (b :: Nat) x l r. (KnownNat a, KnownNat b, x ~ If (a==b) l r) => Proxy a -> Proxy b -> Either (x :~: l) (x :~...

Я могу отделить функции от нулевых значений с помощью семейства типов, например: type family Funs (ts :: [*]) :: [*] where Funs '[ ] = '[ ] Funs ((a -> b): ts) = (a -> b): Funs ts Funs (k: ts) = Funs ts Я хотел бы разделить типы, удовлетворяющие ограничению, например Show. Попытка по а...

Мне нужна "универсальная" структура картографических данных, которая может быть эффективно специализирована путем предоставления пользовательских экземпляров, как в разделе руководства GHC по семействам типов. {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE Undecidab...

Я думаю, что мой вопрос довольно прост для понимания из простого кода, но, с другой стороны, я не уверен в ответе! Интуитивно, то, что я хочу сделать, это дать список типов [*] и некоторый зависимый тип Foo, генерирующий тип [Foo *]. То есть я хочу "сопоставить" зависимый тип с базовым типом. Во-первых, я ра...

Вступление: Проверяя "постоянную"библиотеку сноймана , я обнаружил, что мне нужна помощь ghci (или другого инструмента) в выяснении вещей. Ghci :info, похоже, не так хорошо работает с семействами типов и семействами данных, как с "простыми" типами: > :info Maybe data Maybe a = Nothing | Just a --...

В образовательных целях я пытался реконструировать пример из книги "тип-управляемое развитие с Идрисом" (а именно RemoveElem.idr ) в Haskell посредством использования различных языковых расширений и синглетных типов. Суть его заключается в функции, которая удаляет элемент из непустого вектора, получив доказа...

может ли шаблон Haskell узнать имена и / или объявления связанных синонимов типов, объявленных в классе типов? Я ожидал reify будет делать то, что я хочу, но он, кажется, не предоставляет всю необходимую информацию. Он работает для получения сигнатур типа функции: % ghci GHCi, version 7.8.3: http://www.has...