式の簡約の仕方や順番について質問です

次のようなデータ型と関数があるとします

data A = A Int
f :: a -> b -> ・・・ -> A Int
g :: A Int -> Int -> b
g (A x) y = [関数 g の計算]

関数 f はいくつかの引数を使って A Int 型の値を計算します

関数 g は A Int 型と Int 型の値を使って適当な b 型の値を計算します
第2引数が 0 以外の場合、x を使って b 型の値を計算しますが、
第2引数が 0 の場合、b 型の値を計算するのに x は全く利用しません

ここで、次のような式の場合、

x = g (f ・・・) 0

g (f ・・・) 0 を [関数 g の計算] に簡約し始める前に、
g の第2引数を (A x) にパターンマッチさせる為に、
先に f ・・・ を (A x) の形になるまで簡約されるのでしょうか

それとも、まず g (f ・・・) 0 が [関数 g の計算] の形に簡約され、
[関数 g の計算] の中で (A x) の x が必要になってから、
それから (f ・・・) が (A x) の形になるまで簡約されるのでしょうか
もしそうなら、上記の式の場合は第2引数が 0 なので (f ・・・) は簡約されませんよね

今回の場合は、遅延パターンマッチではないので前者の簡約順になる
と私は思っているのですが合ってますか、それとも、どちらも間違いですか