To make 'Traversable' usable with lists, remove 'undefined's and make a generic constrained 'Functor' instance.
Removed Hask 'sequence' from constraint 'Prelude'.

Update examples, too.
Added 'MonadPlus' etc. classes.
Added 'forM' and 'forM_'.
Added conditionals ('choose', 'ifThenElse', and 'when').
Generalised 'traverse_', 'mapM_', 'forM_'.

Previously, these were basically '(a -> f ()) -> [a] -> f ()', but the standard library has in fact '(a -> f b) -> [a] -> f ()', discarding the 'b'.
Added backward-compatibilty example.

It is a pre-existing program, modified only in its import list. Does not compile yet, hopefully just because some category arrows are ambiguous.
Indeed very tiny changes were enough to get the program to compile.

Main cause of trouble is '$', which is now generic to any 'Function' category. But as it can generally be replaced with parens easily, this is not too much of an issue.

Unfortunately, the program does not work quite correctly yet...
Remarkably enough: there was a bug in 'when'!

The previous implementation for the False-case, @join . fmap pureUnit@, was of course equivalent to the True-one (which is just 'id').

Hask example now works fine!