たけをです。

TOYOFUKU Chikanobu wrote on Jan/19/2005(Wed) [17:37:29]
  in "[haskell-jp:542] Ambiguous variable occurrence ">=""

> (>=) :: Int -> Maybe Int -> Bool
> (>=) _ Nothing  = False
> (>=) x (Just y) = x >= y
> 
> と定義しようとしたら Hugs に「Ambiguous variable occurrence ">="」
> と文句を言われました。(>=) ではなく ge などにしたら文句を言われ
> なくなるのですがこれは何が問題なのでしょうか。

 3行目の x >= y に出てくる >= が、自身を再帰的に呼んでいるのか、Prelude
に出てくる 

  (>=) :: Ord a => a -> a -> Bool

なものを期待してるのか、どちらかわからない(両者の定義がぶつかる?)
ということでは。

 試しに3行目を
  (>=) x (Just y) = x == y || x > y

と書き換えたら通りました。

---
IMAI Takeo <usitukai / osk.3web.ne.jp>

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