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