我是Haskell的新手,所以我可能錯過了一些明顯的東西,但是這裏似乎存在什麼問題? 單例庫爲import Data.Singletons.TypeRepStar中的種類*提供Sing實例。 的Sing數據系列定義如下.. data family Sing (a :: k)
和*實例定義爲.. data instance Sing (a :: *) where
STypeRep ::
我玩弄單身的專業化: {-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
module Data.Test where
data SingBool (b :: Bool) where
STrue :: SingBool 'True
SFalse ::
我正嘗試使用GADT和singletons庫構建正則表達式解析程序。我發現了一個奇怪的錯誤消息: Couldn't match type ‘Integer’ with ‘Nat’
Expected type: DemoteRep 'KProxy
Actual type: Nat
In the first argument of ‘toSing’, namely ‘b_
考慮這樣的情況: class T[A0, B0](val a: A0, val b: B0)
class A
class B(val a: A) {
b =>
implicit def t: T[a.type, b.type] = new T(a, b)
}
val b = new B(new A)
val t1 = implicitly[T[b.a.type, b.
我知道,Haskell有paramaterized數據類型類型: data Maybe a = Nothing | Just a
但是,有沒有辦法來限制排序是a可以表示類型?特別是,我想創建一個類型 data Tag a = Tag a
這樣a可以採取要麼TagPrimitive或類型TagComplex(但是,我不希望它是可能的,a是類型類型,例如,Integer或String或在我的程