diff --git a/build.sbt b/build.sbt index e0078963c4fbed682e0a56579191e4580115fd1c..679206fb94104033f799e53bdce288d9a5e10db7 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,7 @@ name := "short-exercises" organization := "de.uniwue.fp" version := "0.1-SNAPSHOT" -scalaVersion := "2.12.8" +scalaVersion := "2.13.1" scalacOptions ++= Seq( "-deprecation", @@ -9,29 +9,22 @@ scalacOptions ++= Seq( "-feature", "-unchecked", "-Xlint", - "-Yno-adapted-args", - "-Ywarn-dead-code", - "-Ywarn-numeric-widen", - "-Ywarn-value-discard", - "-Ypartial-unification", - "-Xfuture", - "-Ywarn-unused-import", - "-Ywarn-unused:implicits", - "-Ywarn-unused:locals", - "-Ywarn-unused:params", - "-Ywarn-unused:patvars", - "-Ywarn-unused:privates", + "-Wdead-code", + "-Wnumeric-widen", + "-Wvalue-discard", + "-Wunused:patvars,privates,locals,params,-imports", "-Ypatmat-exhaust-depth", "40", "-language:higherKinds", + "-language:implicitConversions", ) resolvers += Resolver.sonatypeRepo("releases") -addCompilerPlugin("org.spire-math" %% "kind-projector" % "0.9.3") +addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.0" cross CrossVersion.full) // Disallow some language construcs // your bonus exercises will have to compile with these options -addCompilerPlugin("org.wartremover" %% "wartremover" % "2.4.1") +addCompilerPlugin("org.wartremover" %% "wartremover" % "2.4.2") scalacOptions ++= Seq( "-P:wartremover:traverser:org.wartremover.warts.AsInstanceOf", "-P:wartremover:traverser:org.wartremover.warts.IsInstanceOf", @@ -43,5 +36,5 @@ scalacOptions ++= Seq( "-P:wartremover:traverser:org.wartremover.warts.While", ) -libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.5" -libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test" +libraryDependencies += "org.scalactic" %% "scalactic" % "3.1.1" +libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1" % "test" diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..6624da70bf7d766a89dd9999acc2201572d7c225 --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.3.5 diff --git a/src/main/scala/applicative/Applicative.scala b/src/main/scala/applicative/Applicative.scala index 10a35fe163247eb6fe152ad3bb4c0a20b1042525..31faa13d1144ba2c82c881a6efb88a4413622bec 100644 --- a/src/main/scala/applicative/Applicative.scala +++ b/src/main/scala/applicative/Applicative.scala @@ -1,7 +1,5 @@ package applicative -import scala.language.higherKinds - trait Applicative[F[_]] { def pure[A](a: A): F[A] diff --git a/src/main/scala/applicative/Monad.scala b/src/main/scala/applicative/Monad.scala index d01043db9d0c9fc51ffdb2d81abd2d69e9cbdf8b..b14f6e8ee762d0d69d36765dc55f558c54ce7cb8 100644 --- a/src/main/scala/applicative/Monad.scala +++ b/src/main/scala/applicative/Monad.scala @@ -1,7 +1,5 @@ package applicative -import scala.language.higherKinds - trait Monad[F[_]] extends Applicative[F] { def flatMap[A, B](fa: F[A])(f: A => F[B]): F[B] = flatten(map(fa)(f)) diff --git a/src/main/scala/monads/MonadFunctor.scala b/src/main/scala/monads/MonadFunctor.scala index d8e4e41e3f7306c15df274d0b999c58e6e31be78..9c3f78cff737f42161656844419b373ddf01fe2e 100644 --- a/src/main/scala/monads/MonadFunctor.scala +++ b/src/main/scala/monads/MonadFunctor.scala @@ -1,5 +1,4 @@ package monads -import scala.language.higherKinds trait Monad[F[_]] { def pure[A](a: A): F[A] diff --git a/src/main/scala/parsers/lib/ParserOps.scala b/src/main/scala/parsers/lib/ParserOps.scala index 0fd27ec9ad32dcf36583b880605d11a8d937857e..f019baea63b6f64feba37299bc7654135d73c0d2 100644 --- a/src/main/scala/parsers/lib/ParserOps.scala +++ b/src/main/scala/parsers/lib/ParserOps.scala @@ -1,7 +1,5 @@ package parsers.lib -import scala.language.implicitConversions - trait ParserOps[A] { val self: Parser[A] diff --git a/src/main/scala/typeclasses/FunctorOption.scala b/src/main/scala/typeclasses/FunctorOption.scala index 1c1e778c524302fc2db61b24a9e2aa903b472dd4..131cf431878772b7d0f69d23bef7243e30391208 100644 --- a/src/main/scala/typeclasses/FunctorOption.scala +++ b/src/main/scala/typeclasses/FunctorOption.scala @@ -1,7 +1,5 @@ package typeclasses -import scala.language.higherKinds - object FunctorOption { trait Functor[F[_]] { def map[A, B](fa: F[A])(f: A => B): F[B] diff --git a/src/main/scala/util/package.scala b/src/main/scala/util/package.scala index 81f7365163f8ecacac41a0224f197d1b4c263863..d002876f0539bc641ba0e5d9288dc39fbb2de812 100644 --- a/src/main/scala/util/package.scala +++ b/src/main/scala/util/package.scala @@ -1,7 +1,5 @@ import applicative.Monad -import scala.language.higherKinds - package object util { implicit class MonadOps[F[_] : Monad, A](fa: F[A]) { def flatMap[B](f: A => F[B]): F[B] = implicitly[Monad[F]].flatMap(fa)(f)