@@ -15,6 +15,15 @@ data N = Z | S N
15 deriving ( Eq, Ord, Read, Show
15 deriving ( Eq, Ord, Read, Show
16 , Generic, Typeable )
16 , Generic, Typeable )
18+class KnownPeano (p :: N) where
19+ peanoVal :: proxy p -> Integer
21+instance KnownPeano Z where
24+instance (KnownPeano n) => KnownPeano (S n) where
25+ peanoVal _ = succ $ peanoVal (Proxy :: Proxy n)
18type family ToNat (a :: N) :: Nat where
27type family ToNat (a :: N) :: Nat where
19 ToNat Z = 0
28 ToNat Z = 0
20 ToNat (S a) = 1 + (ToNat a)
29 ToNat (S a) = 1 + (ToNat a)