【发布时间】:2021-09-17 19:55:50
【问题描述】:
为什么Nats 的加法、减法和除法有效,而乘法无效?
λ> :set -XDataKinds
λ> :set -XTypeOperators
λ> import GHC.TypeLits
λ> :k! 1 + 2
1 + 2 :: Nat
= 3
λ> :k! 1 - 2
1 - 2 :: Nat
= 1 - 2
λ> :k! 5 `Div` 2
5 `Div` 2 :: Nat
= 2
λ> :k! 1 * 2
<interactive>:1:1: error:
• Expected kind ‘* -> Nat -> k0’, but ‘1’ has kind ‘Nat’
• In the type ‘1 * 2’
【问题讨论】:
-
与
*指的是Type种类。你应该明确使用*所以:k 1 GHC.TypeLits.* 2。
标签: haskell data-kinds