相关疑难解决方法(0)

对DataKinds扩展感到困惑

我从Haskell中的基本类型级编程学习Haskell的类型编程,但是当它引入DataKinds扩展时,这个例子似乎有些令人困惑:

{-# LANGUAGE DataKinds #-}
data Nat = Zero | Succ Nat
Run Code Online (Sandbox Code Playgroud)

现在,Nat升职Kind,没关系.但如何ZeroSucc

我尝试从GHCi获取一些信息,所以我键入:

:kind Zero
Run Code Online (Sandbox Code Playgroud)

它给

Zero :: Nat
Run Code Online (Sandbox Code Playgroud)

没关系,Zero是一种类型Nat,对吗?我尝试:

:type Zero
Run Code Online (Sandbox Code Playgroud)

它仍然给出:

Zero :: Nat
Run Code Online (Sandbox Code Playgroud)

这意味着Zero有类型Nat,这是不可能的,因为Nat是一种不是类型,对吗?难道Nat是这两个类型和种类?

而其他令人困惑的事情是,上面的博客也提到,在创建Nat种类时,有两种新类型:'Zero并且'Succ是自动创建的.当我再次从GHCi尝试时:

:kind 'Zero
Run Code Online (Sandbox Code Playgroud)

'Zero :: Nat
Run Code Online (Sandbox Code Playgroud)

:type 'Zero
Run Code Online (Sandbox Code Playgroud)

 Syntax error on 'Zero
Run Code Online (Sandbox Code Playgroud)

好的,它证明这'Zero是一种类型.但是创造'Zero和' …

haskell types data-kinds

5
推荐指数
2
解决办法
244
查看次数

标签 统计

data-kinds ×1

haskell ×1

types ×1