背景

テスト環境はGHC7.8.3です。
以下の情報は4 Declarations and Bindingsを参照しています。

Haskellにはpattern bindingとfunction bindingという2種類の束縛があります。この内、pattern bindingは

 p | gs1 = e1
   | gs2 = e2
…
   | gsm = em
where { decls }

という一般形を持ちます。またsimple pattern bindingとはp = eの形のpattern bindingのことです。

ところでMonomorphism Restrictionという仕組みがあります。これは大雑把に言うと、型変数の一部を具体的な型で置き換えてしまうものです。文書にはfunction bindingと型シグネチャを伴うsimple pattern bindingのみMRの影響を受けないと書かれています。またnon-simple pattern bindingの場合、型シグネチャのあるなしに関わらず制約のある型変数を単相的にしてしまうとも書かれています(従ってMRにより具体的な型を持つ)。
そこでこの仕様をテストすることにしました。non-simple pattern bindingを
(一般形) - (simple pattern binding) = ガードとwhere付きのpattern binding
であると考え、次のようなコードを試してみました。

h :: Num a => [a] -> a
h | guard = sum
  | otherwise = sum
  where guard = False

型シグネチャを付けたり外したりしたのですが、simple pattern bindingと同じ振舞いをするようです。

一方、Stack Overflowの回答では(x:xs) = f something(f, g) = ((+), (-))をnon-simple pattern bindingとしています。左辺が単一の変数名からなる時、simple pattern bindingであるとの記述もあります。
私の捉え方だと、これはsimple pattern bindingです(pを任意のパターンだと読んだこと、及び一般形だろうがsimpleだろうが左辺は同じメタ変数pを使って表現されていることから)。ただ、後者のfgNum a => a -> a -> aという型シグネチャをつけてロードしたところ、エラーを吐いたのでMRの仕様と整合していると言えます。

質問

私の考え方のどこが間違っているのでしょうか、またnon-simple pattern bindingの形はどんなものでしょうか。