なぜGHCiのは、ここで必要なコンテキストの制約を追加ん:GHCIはいつ必要なコンテキストを推測しませんか?
> let f = fmap show
> :t f
f :: (Functor f, Show a) => f a -> f String
しかし、ここにいませんの?
> :t over
over :: Lens s t a b -> (a -> b) -> s -> t
> :t _all'
_all' :: (Applicative f, Eq a) => a -> (a -> f a) -> [a] -> f [a]
> :t over (_all' 2)
<interactive>:1:7: error:
• Could not deduce (Applicative f) arising from a use of ‘_all'’
これら2つのケースに大きな違いはありますか?
['lens'](https://hackage.haskell.org/package/レンズ-4.15.4/docs/Control-レンズ - Setter.html#v:over)ライブラリつまり、 'Lens'は' forall f 'なので、あなたのバージョンは動作しません。ファンクターf => ..'と '_all '2 :: forall f。申請f => ..';言い換えれば、 'over'は' Functor'のために働く関数を要求していますが、 'Applicative'のためだけに機能する関数を提供しています(これは' Functor'が 'Applicative ')。 – user2407038
@ user2407038これは答えです。 – Zeta
右辺の式でのみ明示的な署名が利用可能であると、推論者が左辺の適切な制約を導き出す前に型チェッカを操作するのに十分です。私はそれが必要であるか付随的であるかを理解していないので、これをコメントとして投稿しています。 – sevo