Documentation

Given two shell commands as arguments, execute the former. The
latter is then executed if the former failed because the executable
wasn't found (code 127), wasn't executable (code 126) or some other
exception occurred. Other failures (such as the user holding ^C)
do not cause the second command to be tried.

Monads

The firstJustIO is a slight modification to firstJustM: the entries in the
list must be IO monad operations and the firstJustIO will silently turn any
monad call that throws an exception into Nothing, basically causing it to be
ignored.