我希望我的術語是正確的。 我要做到以下幾點: data Hide a = ∀ b. (A.ToJSON (a b), A.ToJSON b) ⇒ Hide (a b)
mapHide ∷ (∀ c. (A.ToJSON (b c), A.ToJSON c) ⇒ a c → b c) → Hide a → Hide b
mapHide f (Hide a) = (Hide $ f a)
不
在由SPJ this紙,第3頁和圖4上,它是寫: class Mutation m where
type Ref m :: * -> *
newRef :: a -> m (Ref m a)
readRef :: Ref m a -> m a
writeRef :: Ref m a -> a -> m()
instance Mutation IO whe
我明白(->) a是一種* -> *高階類型,當應用於類型參數b給a -> b 我可以寫一個類型的一種* -> *,當應用於c會給a -> b -> c類型? 如果不是,爲什麼不呢?也許使用一些語言擴展和forall? 這將讓我寫函子與應用型(和其它類),其中函子結構是「a -> b ->」的實例如下所示: (<*>) :: Applicative t => t (c -> d) -> t c -