stackoverflowに関する質問に答えたところ、GHCi(インタラクティブ)がletステートメントで制限が強すぎるタイプを割り当てていることに気付きました。つまり、コードが与えられると、
import Control.Arrow
f = maximum &&& id >>> fst &&& (\(m,l) -> length $ filter (==m) l)
( https://stackoverflow.com/questions/6281813/maximum-of-list-and-count-of-repeat-maximum-number/6283594#6283594への私の回答のように)f
、これをghciに入力すると、次のタイプ情報が得られます
Prelude Control.Arrow> :t f
f :: [()] -> ((), Int)
一方、式のタイプを要求するだけで、正しい結果、つまり。が得られますOrd a => [a] -> (a, Int)
。ghc7.0.3を使用しています。