BindRec
scalaz.Bindを継承した型クラスです。scalaz.Freeやscalaz.FreeTで使います。
移植元のpurescriptにおいては、BindRecではなくMonadRecでした。 つまり、BindではなくMonadを継承しています。
https://github.com/purescript/purescript-tailrec/blob/v0.3.1/src/Control/Monad/Rec/Class.purs
class (Monad m) <= MonadRec m where
tailRecM :: forall a b. (a -> m (Either a b)) -> a -> m b
Freeの場合は、runMやfoldMapメソッドはstack safeではありませんが、BindRecを使ったrunRecMやfoldMapRecはstack safeになります。