豊福です。

池上さん
> これは、 Haskell の型推論システムが完璧でないことに
> 起因しています。
> 
> matchingLength :: Eq a => [a] -> [a] -> Int
> matchingLength = (length .) . filter . (flip elem)
> 
> のように、型を記述すれば通ると思います。
  ...
> 参考:
>   http://www.haskell.org/onlinereport/decls.html#4.5.5
>   The monomorphism restriction

  うーーん、内容はまだ理解できていませんが下記の制限ですか。
型を記述したらうまくいきました。ありがとうございます。


| 単相性制限
| 
| 規則 1. 
| 与えられた宣言が制限を受けないというのは以下の場合であり、
| その場合にかぎる。
| 
| (a): そのグループ内の変数それぞれが関数束縛あるいは単純パターン
|   束縛により束縛されている。且つ
| 
| (b): 通常の多相性に関する Hindley-Milner 制限は、その環境で
|   束縛されていない型変数のみが一般化できるというものである。
|   これに、そのグループに対する一般化の段階では被制限宣言グ
|   ループの被制限型変数は一般化できないというのが加わる。
| 
| 規則 2. 
| あるモジュール全体に対する型推論が完了した時点で、まだ、単相型
| 変数であるものはすべて、曖昧であると考え、これは default の規則
| を使って特定の型に解決する。
---
                        豊福
                        nobu_toyofuku / nifty.com


--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/