type-families

    1热度

    1回答

    下面的代码不会编译并给出的误差 无法与“C” “C1”匹配类型“C1”是 结合的图案构造的刚性类型的变量: SomeReq :: forall c。康涅狄格州C =>所需物品Ç - > SomeReq, 为“运行” {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ExistentialQuantification #-} module Main wher

    4热度

    1回答

    我正在玩一个可扩展记录库,而且我想要编写一个函数field,根据Symbol密钥是否在密钥列表中,它可以作为Lens或Traversal运行。该类型的家庭给出: type family LensOrTraversal key keys s t a b where LensOrTraversal key '[] s t a b = Traversal s t a b

    0热度

    2回答

    Haskell完全是关于抽象。但是由于所有抽象(多态)数据的共同表示 - 堆中的指针,抽象花费我们额外的CPU周期和额外的内存使用。有一些方法可以使抽象代码更好地满足高性能需求。据我所知,一种方法是专业化 - 基本上额外的代码生成(手动或编译器),是正确的? 让我们假设下面所有的代码是严格 如果我们有一个功能sum(这有助于编译器进行更多的优化?): sum :: (Num a) => a ->

    0热度

    1回答

    我有型家族N元函数从t型n参数o类型的值: type family NAry (n :: Nat) (t :: Type) (o :: Type) = (r :: Type) | r -> n t o where NAry 1 t o = t -> o NAry n t o = t -> (NAry (n - 1) t o) 我觉得这个家庭应该是由射我不能证明GHC: er

    1热度

    1回答

    我有一个类型家庭IfEq (n :: Nat) (m :: Nat) o评估为o或Void取决于n :== m。由于Maybe Void只能通过Nothing inibited我应该能够定义一个函数Maybe (IfEq n m o) -> Maybe o,但我无法弄清楚。 跟进:这可以从Maybe monad推广到更一般的类型吗? (例如,所有MonadPlus S) 编辑:我最初推出我自己的N

    2热度

    1回答

    我试图填补孔下面的代码片段 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, Known

    1热度

    1回答

    GHC用户指南显示了Data instance declarations节上型家庭这个例子: data instance GMap (Either a b) v = GMapEither (GMap a v) (GMap b v) 我使用的Either类型用于每当我们要向左或向右价值,所以我希望GMapEither以某种方式提供任何向左或向右变体,但它似乎总是同时拥有: {-# LANGUAG

    1热度

    2回答

    的概念,定义如下: Inductive eq (A : Type) (x : A) : A → Prop := eq refl : (eq x) x Parameter a b : A. 当我考虑它的实例eq a b之一,我读A -> Prop类型的(eq a)。 那么,我的问题是,(eq a) b如何确定a和b对应于同一个对象的事实? 对我而言,奇怪的是我们没有关于(eq a)究竟做什么

    6热度

    1回答

    使用了一些扩展变量数,我可以做这样的事情: {-# LANGUAGE GADTs #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE DataKinds #-} type family TF (a :: Bool) where TF 'True = Int TF

    3热度

    1回答

    我想要一个'通用'地图数据结构,它可以通过提供自定义实例来高效地进行专门化,就像在the GHC manual section on type families中一样。 {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} module