我有以下代码:

{-# 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/

10-13 03:09