BindRec

scalaz.Bindを継承した型クラスです。scalaz.Freescalaz.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の場合は、runMfoldMapメソッドはstack safeではありませんが、BindRecを使ったrunRecMfoldMapRecはstack safeになります。

results matching ""

    No results matching ""