Haskellで、MonadThrowのthrowMをhspecでテストするときにcatchしたいのですが、いうならばshouldcatchのような関数はありますか?
catch するよりも下記のいずれかの方法で Either に変換するのがおすすめです。 shouldCatch が Hspecにないのもそういう背景でしょう。MonadCatch のインスタンスを加えれば try を使って m (Either SomeException a) に変換できます。まぁ、テストであれば IO の try を使うのでもいいでしょう。Either SomeException も MonadThrow のインスタンスなので、 Either だけでよいのであればそれでも :ok: です。Either SomeException のMonad Transformer版、 CatchT というのもあります。