Haskell がセクション、複数の引数を取る関数、および部分的に適用される複数の関数の優先順位をどのように決定するかを説明してください。式全体が複数の引数を取る場合、どの部分関数にどの引数が適用されるかを理解するのが難しい場合があります。
ここに関数の例をいくつか示しますが、別の例の方がよりわかりやすいと思います。最初の 1 つは、「エフェクトを使用したアプリケーション プログラミング」の記事からの抜粋です。
sequence :: [IO a] → IO [a]
sequence [] = return []
sequence (c : cs) = return (:) `ap` c `ap` sequence cs
(.) (.)
(.) (.) (.)
そのような式をラムダ式の形式に変換するツールはありますか?