data-kinds相关内容

Haskell 的 DataKinds 扩展是什么?

我试图找到对 DataKinds 扩展的解释,这对我来说很有意义,因为我只阅读了Learn You a Haskell.有没有一个标准来源可以让我对我所学到的一点点有意义? 编辑:例如文档说 使用 -XDataKinds,GHC 会自动提升每种合适的数据类型是一种,它的(值)构造函数是类型构造函数.以下类型 并给出例子 data Nat = Ze |苏纳特 产生以下种类和类型 ..
发布时间:2021-12-14 12:30:28 其他开发

使用DataKinds的FromJSON实例

尝试使用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 ..
发布时间:2021-05-13 20:41:32 其他开发

对DataKinds扩展感到困惑

我从 Haskell中的基本类型级别编程学习了Haskell的类型编程. >,但是当它引入DataKinds扩展名时,该示例似乎有些令人困惑: {-# LANGUAGE DataKinds #-} data Nat = Zero | Succ Nat 现在,Nat被提升为Kind,没关系.但是Zero和Succ呢? 我尝试从GHCi获取一些信息,所以我输入: :kind Ze ..
发布时间:2020-11-22 07:22:42 其他开发

DataKind联盟

我不确定这是否是正确的术语,但是是否可以声明接受数据类型“联合"的函数类型? 例如,我知道我可以执行以下操作: {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} ... data Shape' = Circle' | Square' | Triangle' data Shape :: Sha ..
发布时间:2020-11-22 07:00:45 其他开发

给定输入的构造代理类型

考虑到下面的代码在类型中查找 Data.HashMap 中的特定于类型的信息,是否可以定义一个新函数 getMapVal2 如注释中所述,以构建给定类型的 TypeKey 参数。 { - #LANGUAGE TypeFamilies# - } { - #LANGUAGE DeriveGeneric# - } { - # #语言DataKinds# - } import Da ..
发布时间:2018-06-05 11:40:53 其他开发

返回类型,作为术语或值计算的结果

我试图很好地掌握Kinds,Types和amp;术语(或值,不确定哪个是正确的)以及用于操纵它们的GHC扩展。我明白我们可以使用TypeFamilies来使用Types编写函数,现在我们还可以在一定程度上使用DataKinds,PolyKinds等操作Kinds。我已经阅读过这篇关于Singleton Types的论文,尽管我还没有完全理解它,但它似乎很有趣。这一切都让我产生疑惑,是否有办法创建一 ..
发布时间:2018-06-05 11:28:35 其他开发

DataKinds和类型实例

下面的例子是我现实生活中问题的简化版本。它似乎在某种程度上与从DataKinds受限存在类型中检索信息,但我无法完全得到我正在寻找的答案。 假设我们有一个有限的,提升的DataKind K 类型 A 和 B ,以及一个多元主角代理 $ b $ $ p $ {code> { - #LANGUAGE DataKinds,PolyKinds,GADTs,FlexibleInstances ,Fle ..
发布时间:2018-06-05 11:05:58 其他开发

我可以提供类型检查器的GHC 7.6中关于感应自然的证明吗?

GHC 7.6.1提供了用于编程的新功能,包括数据类型提升。以那里的类型级自然和矢量为例,我希望能够在依赖于算术基本法则的矢量上编写函数。 不幸的是,即使我想要的法律通常很容易通过案例分析和归纳证明归纳自然法,但我无法说服这种类型检查法。作为一个简单的例子,类型检查下面的天真的反向函数需要证明 n + Su Ze〜Su n 。 有什么方法可以提供这种证据,或者我现在真的处于全面依赖类型 ..
发布时间:2018-06-04 16:03:39 其他开发

阴阳拼图哈斯克尔版:种类不兼容错误

我要实现的阴阳难题在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 = ..
发布时间:2018-06-04 15:58:25 其他开发

DataKinds遇到问题

我创建了一个非常简单的使用GADT和DataKinds的问题示例。我的真实应用显然更复杂,但这清楚地表明了我的情况的本质。我试图创建一个函数,可以返回任何类型的值(T1,T2)的测试。有没有办法做到这一点,还是我进入依赖类型的领域?这里的问题看起来很相似,但我无法从他们那里找到(或理解)我的问题的答案。我刚刚开始了解这些GHC扩展。谢谢。 类似问题1 类似的问题2 { - #L ..
发布时间:2018-06-04 15:39:33 其他开发

GADT中的任何`DataKind`列表

免责声明 GADTs& DataKinds对我来说是未开发的领域,所以它们的一些限制和功能对我而言是未知的。 问题 因此,我正在为JavaScript代码发射器编写一个AST,并且我已经确定了表达式之间的一个边界情况,那就是它们可以是参考或不参与。所以我使用GADTS和datakinds来输入JavaScript表达语义的这个方面。 AST看起来像这样。 表达式的子集AST ..
发布时间:2018-06-04 15:32:03 其他开发

带有DataKinds的类型级别地图

我有一个通用模式,其中有一个类型为 [*] 的列表,并且我想应用类型为 * - > * 给列表中的每个元素。例如,我想将类型[Int,Double,Integer] 更改为'[可能是Int,也许是Double,也许是整数] 。 这是我尝试实现一个类型级别 map 。 { - #LANGUAGE TypeFamilies,MultiParamTypeClasses,FlexibleIn ..
发布时间:2018-06-04 15:31:04 其他开发

理解HList的这个定义

我对Haskell比较新,我试图理解 HList 。 数据实例HList'[] = HNil newtype实例HList(x':xs)= HCons1(x,HList xs) 模式HCons x xs = HCons1(x,xs) pre> 我有几个具体问题: 什么是我看到了'[] 和(x':xs)语法?它几乎看起来像是在可变参数类型参数上的模式匹配, ..
发布时间:2018-06-04 14:59:52 其他开发