Prelude> :m + System.IO.Silently Prelude System.IO.Silently> let printFail s = undefined :: IO() Prelude System.IO.Silently> let test1 = print 1 >> silently (print 2) >> print 3 Prelude System.IO.Silently> let test2 = print 1 >> silently (printFail 2) >> print 3 Prelude System.IO.Silently> test1 1 3 Prelude System.IO.Silently> test2 1 *** Exception: Prelude.undefined Prelude System.IO.Silently> print "stdout still works after exceptions" "stdout still works after exceptions"