All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.atnos.eff.syntax.writer.scala Maven / Gradle / Ivy

package org.atnos.eff.syntax

import cats.data.Writer
import org.atnos.eff._

object writer extends writer

trait writer {

  implicit class WriterEffectOps[R <: Effects, A](e: Eff[R, A]) {

    def runWriter[O](implicit member: Member[Writer[O, ?], R]): Eff[member.Out, (A, List[O])] =
      WriterInterpretation.runWriter(e)(member.aux)

    def runWriterLog[O](implicit member: Member[Writer[O, ?], R]): Eff[member.Out, List[O]] =
      runWriter[O](member).map(_._2)

    def runWriterFold[O, B](fold: Fold[O, B])(implicit member: Member[Writer[O, ?], R]): Eff[member.Out, (A, B)] =
      WriterInterpretation.runWriterFold(e)(fold)(member.aux)

  }

}






© 2015 - 2025 Weber Informatics LLC | Privacy Policy