gpt4 book ai didi

haskell - 只有一个值可提升到种类级别的数据类型

转载 作者:行者123 更新时间:2023-12-01 10:35:45 26 4
gpt4 key购买 nike

我知道我可以将 Bool 提升到这样的级别,其中 Bool 可能是 TrueFalse:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}

type family TF t :: Bool
type instance TF Int = True
type instance TF Bool = False

我想改为提升 (),它当然只有一个值 ()。但这似乎不起作用:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}

type family TF t :: ()
type instance TF Int = ()
type instance TF Bool = ()

我想我可以只使用 BoolTrue,但是有没有可以提升到 kind 级别的单值类型?

最佳答案

尝试使用 '()而不是 ()在类型级别:

type family ToNull t :: ()
type instance ToNull Int = '()
type instance ToNull Bool = '()

还有 TrueFalse实际上是 'True 的简写和 'False在类型级别。

问题是有四个 ()在范围内:

  1. 普通型()实物*
  2. 1 的唯一构造函数,也是 ()
  3. 种类()从 1 晋升
  4. 类型'()实物()从 2 提升而来,它具有类型同义词 ()默认

没有有时可选的单引号,1 和 4 是不明确的。

详情可以查看GHC的使用指南:7.9. Datatype promotion

关于haskell - 只有一个值可提升到种类级别的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682969/

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