我正在尝试理解haskell类型文字的用法。特别是,我以为我会编写一个函数来显示自定义类型的类型文字
newtype Fixed (p :: Nat) a = Fixed a
instance (KnownNat p) => Show (Fixed p a) where
show _ = show $ natVal (Proxy::Proxy p)
然而,ghc(7.8)无法推断出KnownNat n0,这意味着我不会像我认为的那样限制事物。任何人都可以提出错误的建议吗?
答案 0 :(得分:7)
GHC需要-XScopedTypeVariables
才能确认p
的{{1}}与您的类型签名的Proxy p
相同。
p