Is a widget a monad? Anyway, the examples in this tutorial are another proof that Haskell is the best imperative language!
Widget is not quite a Monad, in this instance it's a newtype around a pointer and classes that mimic GTK's own class hierarchy.
It really is a great imperative langue! The IO monad is basically a better C, if you know how to wield the FFI.