Control.Monad.guard使うならMonadPlus
とりあえず、インスタンスにする型がMonadでもある時にguardを使うかどうか考えてみて
言い換えれば計算の途中に特定の条件で計算を打ち切るようなことを期待する場合ね
そんなのあきらかにねーよってんならMonoidでいいと思うよ