我有以下代码:
{-# 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
的两个参数的类型。但是我不明白
:: Nat
之后的最终(a :: Nat) (b :: Nat)
是什么意思。任何见解,不胜感激。 最佳答案
最后的:: Nat
指示类型级别的函数返回Nat
。
关于haskell - 了解类型家庭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57319008/