Почему так редко используются сигнатуры типов в предложениях where?

Помогает ли это компилятору в оптимизации, или это просто лишняя работа по добавлению дополнительных сигнатур типов? Например, часто можно увидеть:

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.

20
задан ehird 16 May 2012 в 00:51
поделиться