了解类型家庭
Understanding type family
我有以下代码:
{-# LANGUAGE TypeFamilies #-}
type family Times (a :: Nat) (b :: Nat) :: Nat where
Times Z n = Z
Times (S m) n = Plus n (Times m n)
我知道类型族允许您在类型级别编写函数。但是,对于上面的代码,我知道 (a :: Nat) (b :: Nat)
是传递给函数 Times
.
的两个参数的类型
不过我不明白(a :: Nat) (b :: Nat)
后面的:: Nat
是什么意思。任何见解表示赞赏。
最后的:: Nat
表示类型级函数returns一个Nat
.
我有以下代码:
{-# LANGUAGE TypeFamilies #-}
type family Times (a :: Nat) (b :: Nat) :: Nat where
Times Z n = Z
Times (S m) n = Plus n (Times m n)
我知道类型族允许您在类型级别编写函数。但是,对于上面的代码,我知道 (a :: Nat) (b :: Nat)
是传递给函数 Times
.
不过我不明白(a :: Nat) (b :: Nat)
后面的:: Nat
是什么意思。任何见解表示赞赏。
最后的:: Nat
表示类型级函数returns一个Nat
.