:「複数引数」の機能構成はどのように機能しますか(fmap。fmapなど)?私たちが表現していた場合
(fmap . fmap) function nested_functor
を私は驚くほど
fmap (fmap function) nested_functor
なぜとして振る舞うように見えるけど、それは
fmap (fmap function nested_functor)
のようなものに変換するために期待しますか?
:「複数引数」の機能構成はどのように機能しますか(fmap。fmapなど)?私たちが表現していた場合
(fmap . fmap) function nested_functor
を私は驚くほど
fmap (fmap function) nested_functor
なぜとして振る舞うように見えるけど、それは
fmap (fmap function nested_functor)
のようなものに変換するために期待しますか?
まあ、ちょうど(.)
の定義を見て:
(f . g) x = f (g x)
ので、
(fmap . fmap) function = fmap (fmap function)
本当に方程式を変更しません最後に追加の引数を追加する - ちょうどより多くのことになります特定。
(fmap . fmap) function nested_functor = fmap (fmap function) nested_functor
(NB機能アプリケーションはそうf x y
は(f x) y
を意味し、左結合である。)
ありがとう!私の混乱は、関数のアプリケーションが正しい結合であるかのように、これを考えていることによるものであり、タイプシグネチャの右に関連する混乱( - >)がありました...私は今、宣言は表現自体とは異なる結合性を持っています。 –
@ PedroMorteRoloそれは、そのような対称性の一種です。 'fn''を' fn xy'とし、 'fn :: Int-> Int-> Bool'の対応する型シグネチャにカッコを入れないで' fn'を ' (例えば)。もし彼らが同じ方法で結ばれていれば(それがどのような方法であろうと)、その2つのうちの1つは括約を必要とし、もう1つは嫌いではありません。 –
すべての機能が単一の引数であり、すなわち 'A-> B-> C 'が'と同じです - >( b-> c) 'とする。ここからビルドしてください。 –
...だから 'f x y'は'(f x)y'と同じです。 ( 'f :: a->(b-> c)'、 'x :: a'、' y :: b') –