Apa aturan yang ada tentang fungsi a -> () yang dievaluasi di Haskell?

Sama seperti judulnya: jaminan apa yang ada untuk unit pengembalian fungsi Haskell yang akan dievaluasi? Orang akan berpikir bahwa tidak perlu menjalankan evaluasi apa pun dalam kasus seperti itu, kompilator dapat mengganti semua panggilan seperti itu dengan ()nilai langsung kecuali jika ada...