haskell - 这个数据是什么......试图完成的地方? ( haskell )

标签 haskell

在random-fu包中,有这个data宣言:

data Multinomial p a where
    Multinomial :: [p] -> a -> Multinomial p [a]

我知道这是一个 GADT,但它试图完成什么?是否限制pa , 等等?

最佳答案

它改变了构造函数的返回类型。如果它是这样定义的

data Multinomial p a = Multinomial [p] a

我们的构造函数将具有类型
Multinomial :: [p] -> a -> Multinomial p a

GADT 将构造函数的结果类型中的第二个类型参数更改为 [a] .

关于haskell - 这个数据是什么......试图完成的地方? ( haskell ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297824/

相关文章:

haskell - 在 OCaml 中派生实现

list - 列表的标准定义

haskell - 非法嵌套类型族应用程序(使用 UndecidableInstances 允许这样做)

haskell - 反射是否有不连贯的风险?

javascript - 折叠中使用的模运算符的单位元

haskell - 在 TemplateHaskell 中,我如何确定导入的模块已被重命名?

c++ - 为什么 Haskell 对于简单的斐波那契比 C++ 更快

haskell - 是否可以在haskell中折叠 <*> ?

haskell - GHC 7.7 中引入的自由覆盖条件破坏了 GHC 7.6 中有效的代码

haskell : force evaluation/avoid garbage collecting when composing functions