Почему отброшенные значения ()вместо ⊥ в Haskell?

Почему в Haskell, когда есть значение, которое будет отброшено, ()используется вместо ?

Примеры (на данный момент не могут думать ни о чем, кроме операций ввода-вывода):

mapM_ :: (Monad m) => (a -> m b) -> [a] -> m ()
foldM_ :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m ()
writeFile :: FilePath -> String -> IO ()

При строгой оценке это имеет смысл, но в Haskell это только увеличивает домен.

Возможно, есть функции "неиспользуемых параметров" d -> a, которые строго относятся к d(. где dявляется параметром неограниченного типа и не появляется свободным вa)? Бывший:seq, const' x y = yпослед. x.

12
задан L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳ 19 June 2012 в 23:55
поделиться