Cli*_*ton 3 haskell type-families data-kinds
我知道我可以提升Bool到这样的水平,Bool可能在哪里True或False:
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}
type family TF t :: Bool
type instance TF Int = True
type instance TF Bool = False
Run Code Online (Sandbox Code Playgroud)
我想要推广(),当然只有一个价值().但这似乎不起作用:
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}
type family TF t :: ()
type instance TF Int = ()
type instance TF Bool = ()
Run Code Online (Sandbox Code Playgroud)
我想我可以使用Bool和True,但是有一种值得提升的类型吗?
尝试使用'()而不是()在类型级别:
type family ToNull t :: ()
type instance ToNull Int = '()
type instance ToNull Bool = '()
Run Code Online (Sandbox Code Playgroud)
此外True,False实际上是'True和'False类型级别的缩写.
问题是()范围有四个:
()的那种*()()从1提升的那种'()种()从2促进,其具有类型同义词()默认如果没有有时可选的单引号,则1和4是不明确的.
您可以查看GHC的用户指南了解详情:7.9.数据类型推广
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |