コンパイラが最適化するのに役立ちますか、それとも型シグネチャを追加するだけの余分な作業ですか? たとえば、次のようなことがよくあります。
foo :: a -> b
foo x = bar x
where bar x = undefined
それよりも:
foo :: a -> b
foo x = bar x
where bar :: a -> b
bar x = undefined
トップレベルの型シグネチャを省略した場合、GHC は警告を表示します。したがって、警告が表示されなければ、自分のプログラムが正しいと確信できます。ただし、where 句で署名を省略しても、警告は発行されません。