f _ = 1
f undefined - ок, undefined не вычисляется
f $! undefined - упадет, $! вычисляет конструктор undefined, и падает
f (a, b) = 1
f undefined - упдает, потому f пытается вычислить undefined до кортежа
f $! undefined - упадет, потому что $! вычисляет undefined
f (undefined, undefined) - не упадает, потому что f матчит кортеж, а что внутри не важно
f $! (undefined, undefined) - не упадет, $! вычисляет конструктор, f матчит кортеж, все ок, что внутри не важно