以下のようにレコード構文(Record Syntax)にて独自の名前付きフィールド(Named Fields)らを定義し、フィールド(Field)の一部を利用する場合に、より簡潔な方法はありませんでしょうか?

下記のコードでいえば fNumField Foo{hoge = x} = x ^ 2 の部分が粗雑に感じます。

data Foo = Foo{ bar :: String , hoge::Integer} deriving (Show)

main = do
    print $ fNumField a
    where
        fNumField Foo{hoge = x} = x ^ 2
        a = Foo{ bar = "piyo", hoge = 575 }

※ (別の質問の方がいいのかもしれませんが) F# や OCamlのような言語と違い「名前付きフィールド」が Haskell には似合わないような気がしています。通常はどうかくものなのでしょうか?

※ 「命名規則や用語がHaskell的に変だ!」という場合もぜひ、コメントや編集などでフィードバックお願いします!

追記 : 2015-01-26

回答を参考に修正してみました。

data Foo = Foo{ bar :: String , hoge::Integer} deriving (Show)

main = print $ hoge a ^ 2
    where
        a = Foo{ bar = "piyo", hoge = 575 }

※ hoge の定義がかぶった場合はコンパイル時に Multiple declarations などと怒られてしまったので、使いどころが難しく感じました。