向井です。

関数の多重定義は型クラスによってのみ実現されるのではないでしょうか。
したがってこの時、一見同じ名前に見える >= ですが、実は
Prelude.>= :: Ord a => a -> a -> Bool
Main.>= :: Int -> Maybe Int -> Bool
という2つの関数が存在していることになるのだと思います。

ですから >= とだけ記述しても、この段階ではどちらかに決定できず、エラー
になるのだと思います。

Maybe Int は Ord なようなので、第一引数に Just を与えるようにするのが
(あまり綺麗ではないですが)一番楽な解決策なように思います。
もしくは、運用時にモナドを使うとか。

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