gpt4 book ai didi

haskell - 为什么Type是一种有值的类型?

转载 作者:行者123 更新时间:2023-12-02 10:27:14 26 4
gpt4 key购买 nike

如果我启用 MagicHash,那么我就会有未提升的值,例如类型为 Int#42#

现在如果Type is the kind of types with values ,那么 Int# 的类型应该是 Type,但事实并非如此,因为 TypeTYPE 'LiftedRep< 的同义词Int# 的类型是 TYPE 'IntRep。我们可以在 ghci 中轻松确认这一点,

Prelude> :set -XMagicHash -XKindSignatures
Prelude> :m +Data.Kind GHC.Prim
Prelude Data.Kind GHC.Prim> :k (Int# :: Type)

<interactive>:1:2: error:
• Expecting a lifted type, but ‘Int#’ is unlifted
• In the type ‘(Int# :: Type)’

那么我们是否不将 42# 这样的魔法文字视为值呢?

最佳答案

只需删除类型签名,GHCI 就会很高兴地告诉您:

Prelude Data.Kind GHC.Prim> :k Int#
Int# :: TYPE 'GHC.Types.IntRep

这是一个未提升的 Int,这与我们对名称 Int# 的期望相同。

关于haskell - 为什么Type是一种有值的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58084780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com