Skip to content

Instantly share code, notes, and snippets.

@Softsapiens
Forked from mpilquist/predef.scala
Created December 16, 2019 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Softsapiens/505ec0e23bb5e68d4a714216111db90f to your computer and use it in GitHub Desktop.
Save Softsapiens/505ec0e23bb5e68d4a714216111db90f to your computer and use it in GitHub Desktop.
Ammonite REPL predef for use with fs2
// Save as ~/.ammonite/predef.sc
// To use fs2 from ammonite repl, type `load.fs2` from repl prompt.
// You'll get all fs2 & cats imports, ContextShift and Timer instances
// for IO, and a globalBlocker
import $plugin.$ivy.`org.typelevel:::kind-projector:0.11.0`
if (!repl.compiler.settings.isScala213)
repl.load.apply("interp.configureCompiler(_.settings.YpartialUnification.value = true)")
interp.configureCompiler(_.settings.Ydelambdafy.tryToSetColon(List("inline")))
object load {
def fs2Version(version: String) = {
repl.load.apply(s"""
import $$ivy.`co.fs2::fs2-io:$version`, fs2._, fs2.concurrent._, cats._, cats.implicits._, cats.effect._, cats.effect.implicits._, scala.concurrent.duration._
implicit val ioContextShift: ContextShift[IO] = IO.contextShift(scala.concurrent.ExecutionContext.Implicits.global)
implicit val ioTimer: Timer[IO] = IO.timer(scala.concurrent.ExecutionContext.Implicits.global)
""")
if (!version.startsWith("1")) repl.load.apply("""
val globalBlocker: Blocker = cats.effect.Blocker.liftExecutionContext(scala.concurrent.ExecutionContext.Implicits.global)
""")
}
def fs2 = fs2Version("2.0.1")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment