了解数据类型。Haskell的数据包
我正在努力理解数据的构造类型。数据包。请考虑下面的会话。code>dataTypeConstrs返回一个了解数据类型。Haskell的数据包,haskell,scrap-your-boilerplate,Haskell,Scrap Your Boilerplate,我正在努力理解数据的构造类型。数据包。请考虑下面的会话。code>dataTypeConstrs返回一个Constr列表,其中包括0参数构造函数和1参数构造函数。由于明显的类型错误,尝试重新创建列表失败。这是GHC关于CONTR价值的特殊行为吗 $ ghci GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help Prelude> :set -XScopedTypeVariables Prelude> :modul
Constr
列表,其中包括0参数构造函数和1参数构造函数。由于明显的类型错误,尝试重新创建列表失败。这是GHC关于CONTR价值的特殊行为吗
$ ghci
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude> :set -XScopedTypeVariables
Prelude> :module +Data.Data
Prelude Data.Data> dataTypeConstrs (dataTypeOf (Nothing :: Maybe ()))
[Nothing,Just]
Prelude Data.Data> :i it
it :: [Constr] -- Defined at <interactive>:4:1
Prelude Data.Data> let i2 :: [Constr] = [Nothing,Just]
<interactive>:6:23:
Couldn't match expected type ‘Constr’ with actual type ‘Maybe a0’
In the expression: Nothing
In the expression: [Nothing, Just]
$ghci
GHCi,7.10.2版:http://www.haskell.org/ghc/ :? 求救
序曲>:set-XScopedTypeVariables
序曲>:模块+数据.Data
前奏曲Data.Data>dataTypeConstrs(dataTypeOf(Nothing::Maybe())
[没什么,只是]
前奏曲数据。数据>:i it
它::[Constr]——定义为:4:1
前奏曲数据。数据>让i2::[Constr]=[没有,只是]
:6:23:
无法将预期类型“Constr”与实际类型“Maybe a0”匹配
在表达中:什么都没有
在表达式中:[没什么,只是]
这不是实际构造函数的列表,而是构造函数表示的列表。它的Show
实例使用快速而松散的输出,这使它看起来像是其他东西
只要假装它是
[ Constr{ name = "Nothing", args = 0, ... }
, Constr{ name = "Just", args = 1, ... }
]
但它是以一种松散的方式显示的
更准确地说,这是内部不透明的构造函数表示。使用
constr*
观察者检查类型为constr
的值,该值不是实际构造函数的列表,而是构造函数表示的列表。它的Show
实例使用快速而松散的输出,这使它看起来像是其他东西
只要假装它是
[ Constr{ name = "Nothing", args = 0, ... }
, Constr{ name = "Just", args = 1, ... }
]
但它是以一种松散的方式显示的
更准确地说,这是内部不透明的构造函数表示。使用
constr*
观察者检查类型constr
有趣问题的值。在查看Data.Data时,我看到有用于创建Constr实例的函数。像MKContr。我猜Show for Constr的实例并没有提供足够的细节来实际构造一个Constr,因为您正在尝试回答12个有趣的问题。在查看Data.Data时,我看到有用于创建Constr实例的函数。像MKContr。我猜Show for Constr的实例没有提供足够的细节来实际构造Constr,因为您正在尝试使用i2Indeed,我错过了Constrinstance Show Constr的Show实例,其中Show=constring
,其中显示了构造函数的名称。只是一个很好的老可怜的节目设计问题,谢谢!实际上,我错过了Constrinstance Show Constr的Show实例,其中Show=constring
显示了构造函数的名称。只是一个很好的老可怜的节目设计问题,谢谢!