import Data.Vect MkBig : Nat -> Type MkBig Z = Int MkBig (S k) = ((n ** Vect n Int), MkBig k) bigEx : (n : Nat) -> MkBig n bigEx Z = 94 bigEx (S k) = ((2 ** [0,0]), bigEx k) data VWrap : Type -> Type where MkVWrap : (0 n : Nat) -> Vect n a -> VWrap a export MkBig' : Nat -> Type MkBig' Z = Int MkBig' (S k) = (VWrap Int, MkBig' k) namespace Foo public export bigEx' : (n : Nat) -> MkBig' n bigEx' Z = 94 bigEx' (S k) = (MkVWrap 1 [0], bigEx' k) eqBigs : bigEx 1000000 = bigEx 1000000 eqBigs = Refl eqBigs' : bigEx' 800000 = bigEx' 800000 eqBigs' = Refl