Add coursier.util.Monad

This commit is contained in:
Alexandre Archambault 2018-02-27 22:54:48 +01:00
parent a83df3e1c8
commit 5e1eeef757
10 changed files with 31 additions and 16 deletions

View File

@ -1,9 +1,9 @@
package coursier
import coursier.util.EitherT
import coursier.util.{EitherT, Monad}
import scala.language.higherKinds
import scalaz.{Monad, Nondeterminism}
import scalaz.Nondeterminism
object Fetch {

View File

@ -3,9 +3,8 @@ package coursier.core
import coursier.Fetch
import scala.language.higherKinds
import scalaz.Monad
import coursier.core.compatibility.encodeURIComponent
import coursier.util.EitherT
import coursier.util.{EitherT, Monad}
trait Repository extends Product with Serializable {
def find[F[_]](

View File

@ -1,9 +1,10 @@
package coursier
package core
import coursier.util.Monad
import scala.annotation.tailrec
import scala.language.higherKinds
import scalaz.Monad
sealed abstract class ResolutionProcess {

View File

@ -2,10 +2,9 @@ package coursier.ivy
import coursier.Fetch
import coursier.core._
import coursier.util.{EitherT, WebPage}
import coursier.util.{EitherT, Monad, WebPage}
import scala.language.higherKinds
import scalaz.Monad
final case class IvyRepository(
pattern: Pattern,

View File

@ -3,10 +3,9 @@ package coursier.maven
import coursier.Fetch
import coursier.core._
import coursier.core.compatibility.encodeURIComponent
import coursier.util.{EitherT, WebPage}
import coursier.util.{EitherT, Monad, WebPage}
import scala.language.higherKinds
import scalaz.Monad
object MavenRepository {
val SnapshotTimestamp = "(.*-)?[0-9]{8}\\.[0-9]{6}-[0-9]+".r

View File

@ -1,7 +1,6 @@
package coursier.util
import scala.language.higherKinds
import scalaz.Monad
final case class EitherT[F[_], L, R](run: F[Either[L, R]]) {

View File

@ -0,0 +1,21 @@
package coursier.util
import scala.language.higherKinds
trait Monad[F[_]] {
def point[A](a: A): F[A]
def bind[A, B](elem: F[A])(f: A => F[B]): F[B]
def map[A, B](elem: F[A])(f: A => B): F[B] =
bind(elem)(a => point(f(a)))
}
object Monad {
implicit def fromScalaz[F[_]](implicit M: scalaz.Monad[F]): Monad[F] =
new Monad[F] {
def point[A](a: A) = M.pure(a)
def bind[A, B](elem: F[A])(f: A => F[B]) = M.bind(elem)(f)
}
}

View File

@ -3,10 +3,9 @@ package coursier
import java.io.{File, FileNotFoundException, IOException}
import java.net.{HttpURLConnection, URL, URLConnection}
import coursier.util.EitherT
import coursier.util.{EitherT, Monad}
import scala.language.higherKinds
import scalaz.Monad
object FallbackDependenciesRepository {

View File

@ -1,9 +1,8 @@
package coursier
import coursier.util.EitherT
import coursier.util.{EitherT, Monad}
import scala.language.higherKinds
import scalaz.Monad
final case class InterProjectRepository(projects: Seq[Project]) extends Repository {

View File

@ -2,10 +2,9 @@ package coursier
package test
import coursier.core._
import coursier.util.EitherT
import coursier.util.{EitherT, Monad}
import scala.language.higherKinds
import scalaz.Monad
final case class TestRepository(projects: Map[(Module, String), Project]) extends Repository {
val source = new core.Artifact.Source {