40得票3回答
在Haskell中,"kind *"是什么意思?

在Haskell中,(值级)表达式被归类为类型,可以使用::表示,例如:3 :: Int,"Hello" :: String,(+ 1) :: Num a => a -> a。同样,类型也被归类为种类。在GHCi中,您可以使用命令:kind或:k来检查类型表达式的种类。 >...

26得票1回答
基于超级简单的例子解释ConstraintKinds

什么是约束类型? 在实践中,为什么有人会使用它? 它有什么好处? 能否给出一个简单的代码示例来阐明前两个问题的答案? 举例来说,为什么在这个代码中要使用它?

23得票2回答
类型级别的未定义

通常在我使用 Haskell 编写代码时,我会用类型注释和 undefined 来占位。foo :: String -> Int foo = undefined 我是否可以使用类型级别的 "undefined" 以类似的方式进行使用? (最好与一种注释一起使用)type Foo :: ...

16得票1回答
类型理论中的Kind和Rank有何区别?

我很难理解Higher Kind和Higher Rank类型的区别。Kind相当简单(感谢Haskell文献),我曾经认为Rank在讨论类型时类似于Kind,但显然不是这样!我阅读了维基百科文章但没有找到答案。所以有人可以请解释一下什么是等级?什么是Higher Rank?Higher Ran...

12得票1回答
在Haskell中,是否有可能获取类型构造函数的种类(Kind)?

我正在使用Data.Typeable,并且特别想能够生成特定种类的正确类型(比如说*)。我遇到的问题是,TypeRep允许我们执行以下操作(在GHC 7.8中使用):let maybeType = typeRep (Proxy :: Proxy Maybe) let maybeCon = fs...

12得票2回答
我能将这个 newtype 实现为其他类型的组合吗?

我写了一个新类型Const3,它与Const非常相似,但包含了三个给定类型参数中的第一个:newtype Const3 a b c = Const3 { getConst3 :: a } 我可以为这个新类型定义非常多有用的实例,但我必须全部自己完成。然而,我在类型级别上应用的函数类似于这个函数...

12得票2回答
如何在Haskell中将元组作为此类的实例?

我一直在阅读《学习 Haskell 时希望我知道的事情》这本书,我停在了这个例子上:class Bifunctor p where bimap :: (a -> b) -> (c -> d) -> p a c -> p b d first ::...

9得票2回答
什么是类型签名中的约束?

如果我检查Maybe的kind,我会得到以下结果: λ> :k Maybe Maybe :: * -> * 现在,如果我检查Monad的类型,我会得到这个结果: λ> :k Monad Monad :: (* -> *) -> Constraint 什...

9得票3回答
表达无穷多种类型

在Haskell中表达无限类型时: f x = x x -- This doesn't type check 你可以使用newtype来实现: newtype Inf = Inf { runInf :: Inf -> * } f x = x (Inf x) 是否有一种类似于...

7得票2回答
多态类型应用是否具有单射性?

多种类型应用是否是单射的? 当我们启用PolyKinds时,我们是否知道f a ~ g b意味着f ~ g和a ~ b? 动机 当试图回答另一个问题时,我将问题简化到只有在启用PolyKinds时才会收到以下错误。 Could not deduce (c1 ~ c) from the ...