data-kinds相关内容
我试图找到对 DataKinds 扩展的解释,这对我来说很有意义,因为我只阅读了Learn You a Haskell.有没有一个标准来源可以让我对我所学到的一点点有意义? 编辑:例如文档说 使用 -XDataKinds,GHC 会自动提升每种合适的数据类型是一种,它的(值)构造函数是类型构造函数.以下类型 并给出例子 data Nat = Ze |苏纳特 产生以下种类和类型
..
尝试使用TypeLits对数据类型进行JSON反序列化时,我陷入了以下问题: 无法将类型"n"与"2"匹配"n"是一个刚性类型变量,受在test.hs:14:10的实例声明预期的类型:aeson-0.11.2.1:Data.Aeson.Types.Internal.Parser(X n)实际类型:aeson-0.11.2.1:Data.Aeson.Types.Internal.Parser(X
..
说我有以下内容: data Type = StringType | IntType | FloatType data Op = Add Type | Subtract Type 我想限制Subtract下的可能类型,以使其仅允许int或float.换句话说, patternMatch :: Op -> () patternMatch (Add StringTy
..
我从 Haskell中的基本类型级别编程学习了Haskell的类型编程. >,但是当它引入DataKinds扩展名时,该示例似乎有些令人困惑: {-# LANGUAGE DataKinds #-} data Nat = Zero | Succ Nat 现在,Nat被提升为Kind,没关系.但是Zero和Succ呢? 我尝试从GHCi获取一些信息,所以我输入: :kind Ze
..
我不确定这是否是正确的术语,但是是否可以声明接受数据类型“联合"的函数类型? 例如,我知道我可以执行以下操作: {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} ... data Shape' = Circle' | Square' | Triangle' data Shape :: Sha
..
这个问题实际上是由于尝试将几个数学组实现为类型而引起的. 循环组没有问题(在其他地方定义的Data.Group实例): newtype Cyclic (n :: Nat) = Cyclic {cIndex :: Integer} deriving (Eq, Ord) cyclic :: forall n. KnownNat n => Integer -> Cyclic n cycli
..
考虑到下面的代码在类型中查找 Data.HashMap 中的特定于类型的信息,是否可以定义一个新函数 getMapVal2 如注释中所述,以构建给定类型的 TypeKey 参数。 { - #LANGUAGE TypeFamilies# - } { - #LANGUAGE DeriveGeneric# - } { - # #语言DataKinds# - } import Da
..
我试图很好地掌握Kinds,Types和amp;术语(或值,不确定哪个是正确的)以及用于操纵它们的GHC扩展。我明白我们可以使用TypeFamilies来使用Types编写函数,现在我们还可以在一定程度上使用DataKinds,PolyKinds等操作Kinds。我已经阅读过这篇关于Singleton Types的论文,尽管我还没有完全理解它,但它似乎很有趣。这一切都让我产生疑惑,是否有办法创建一
..
在一个使用模板haskell的haskell项目中,我试图生成一个具有类型注解的表达式作为幻像类型。 一个简单的例子就是一个情况与 DataKinds 和 KindSignatures 类似: { - #LANGUAGE DataKinds,KindSignatures# - } data Foo = A | B 数据GenMe(w :: Foo)= GenMe Int
..
我不知道我没有注意到这一点,但数据构造函数和函数定义都不能使用 * 以外的类型,它的变体 * - > * 等等,由于( - >)的亲笔签名,甚至在 -XPolyKinds 以下是我尝试过的代码: { - #LANGUAGE DataKinds# - } { - #LANGUAGE KindSignatures# - } 数据Nat = S Nat | Z data
..
下面的例子是我现实生活中问题的简化版本。它似乎在某种程度上与从DataKinds受限存在类型中检索信息,但我无法完全得到我正在寻找的答案。 假设我们有一个有限的,提升的DataKind K 类型 A 和 B ,以及一个多元主角代理 $ b $ $ p $ {code> { - #LANGUAGE DataKinds,PolyKinds,GADTs,FlexibleInstances ,Fle
..
我一直在教自己关于类型级编程,并想写一个简单的自然数加法类型函数。我的第一个版本工作如下: pre code $ Z data S 类型One = SZ 类型Two = S(SZ) 类型系列Plus mn :: * 类型实例Plus Z n = n 类型实例Plus(S m)n = S(Plus mn) 所以在GHCi中我可以这样做: ghci> :t un
..
如果我的数据类型受限于 DataKind { - #LANGUAGE DataKinds# - } data K = A | B data Ty(a :: K)= Ty {...} 以及一个存在类型,它忘记了类型中的 K 的确切选择......但是可以在传入的字典中记住它。 class AK(t :: K)其中k :: Ty t - > K
..
GHC 7.6.1提供了用于编程的新功能,包括数据类型提升。以那里的类型级自然和矢量为例,我希望能够在依赖于算术基本法则的矢量上编写函数。 不幸的是,即使我想要的法律通常很容易通过案例分析和归纳证明归纳自然法,但我无法说服这种类型检查法。作为一个简单的例子,类型检查下面的天真的反向函数需要证明 n + Su Ze〜Su n 。 有什么方法可以提供这种证据,或者我现在真的处于全面依赖类型
..
我要实现的阴阳难题在Haskell。这是我的尝试(unsucceful): - 使用的数据类型是递归的,所以我们必须定义一个newtype b $ b newtype Cl m = Cl {goOn :: MonadCont m => Cl m - > m(Cl m)} yinyang ::(MonadIO m,MonadCont m)=> m(Cl m) yinyang =
..
我试图找到DataKinds扩展的解释,这对我来说只有阅读学习你一个Haskell 才有意义。是否有一个标准的源代码可以帮助我理解我所学到的知识? 编辑:例如
..
我创建了一个非常简单的使用GADT和DataKinds的问题示例。我的真实应用显然更复杂,但这清楚地表明了我的情况的本质。我试图创建一个函数,可以返回任何类型的值(T1,T2)的测试。有没有办法做到这一点,还是我进入依赖类型的领域?这里的问题看起来很相似,但我无法从他们那里找到(或理解)我的问题的答案。我刚刚开始了解这些GHC扩展。谢谢。 类似问题1 类似的问题2 { - #L
..
免责声明 GADTs& DataKinds对我来说是未开发的领域,所以它们的一些限制和功能对我而言是未知的。 问题 因此,我正在为JavaScript代码发射器编写一个AST,并且我已经确定了表达式之间的一个边界情况,那就是它们可以是参考或不参与。所以我使用GADTS和datakinds来输入JavaScript表达语义的这个方面。 AST看起来像这样。 表达式的子集AST
..
我有一个通用模式,其中有一个类型为 [*] 的列表,并且我想应用类型为 * - > * 给列表中的每个元素。例如,我想将类型[Int,Double,Integer] 更改为'[可能是Int,也许是Double,也许是整数] 。 这是我尝试实现一个类型级别 map 。 { - #LANGUAGE TypeFamilies,MultiParamTypeClasses,FlexibleIn
..
我对Haskell比较新,我试图理解 HList 。 数据实例HList'[] = HNil newtype实例HList(x':xs)= HCons1(x,HList xs) 模式HCons x xs = HCons1(x,xs) pre> 我有几个具体问题: 什么是我看到了'[] 和(x':xs)语法?它几乎看起来像是在可变参数类型参数上的模式匹配,
..