Монада ввода-вывода технически неверна?

На вики Haskell есть следующий пример условного использования монады ввода / вывода (см. Здесь) . when :: Bool -> IO () -> IO () when condition action world = if condition then action world else ((), world) Обратите внимание, что в этом примере определение IO aиспользуется, RealWorld ->...