Eff alternatives and similar packages
Based on the "Extensions" category.
Alternatively, view Eff alternatives based on common mentions on social networks and blogs.
-
scala.meta
Library to read, analyze, transform and generate Scala programs -
Enumeratum
A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations. -
Scala-Logging
Convenient and performant logging library for Scala wrapping SLF4J. -
tinylog
tinylog is a lightweight logging framework for Java, Kotlin, Scala, and Android -
Scala Graph
Graph for Scala is intended to provide basic graph functionality seamlessly fitting into the Scala Collection Library. Like the well known members of scala.collection, Graph for Scala is an in-memory graph library aiming at editing and traversing graphs, finding cycles etc. in a user-friendly way. -
scribe
The fastest logging library in the world. Built from scratch in Scala and programmatically configurable. -
Each
A macro library that converts native imperative syntax to scalaz's monadic expressions -
Rapture
a collection of libraries for common, everyday programming tasks (I/O, JSON, i18n, etc.) -
Stateless Future
Asynchronous programming in fully featured Scala syntax. -
Scala Blitz
Scala framework for efficient sequential and data-parallel collections - -
Records for Scala
Labeled records for Scala based on structural refinement types and macros. -
Play monadic actions
A simple scala DSL to allow clean and monadic style for Play! Actions -
enableIf.scala
A library that toggles Scala code at compile-time, like #if in C/C++ -
Freasy Monad
Easy way to create Free Monad using Scala macros with first-class Intellij support. -
Lamma
Lamma schedule generator for Scala is a professional schedule generation library for periodic schedules like fixed income coupon payment, equity deravitive fixing date generation etc. -
wvlet-log
A library for enhancing your application logs with colors and source code locations. -
Freedsl
Practical effect composition library based on abstract wrapping type and the free monad -
Resolvable
A library to optimize fetching immutable data structures from several endpoints in several formats.
Free Global Payroll designed for tech teams
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Eff or a related project?
README
eff
Extensible effects are an alternative to monad transformers for computing with effects in a functional way. This library is based on the "free-er" monad and extensible effects described in Oleg Kiselyov in Freer monads, more extensible effects.
You can learn more in the User Guide:
- your first effects
- included effects:
Reader
,Writer
,Eval
,State
,... - create your own effects
- use Member implicits
- working with different effect stacks
- a tutorial similar to the cats' tutorial for Free monads
You can also check out this presentation at flatMap Oslo 2016 (slides).
Installation
Eff is published for Scala 2.12, 2.13 and 3. eff
core is available for the JVM, ScalaJS and scala-native. Sbt dependency:
// check maven badge above for latest version
libraryDependencies += "org.atnos" %% "eff" % "6.0.1"
// to write types like Reader[String, *]
libraryDependencies ++= {
if (scalaBinaryVersion.value == "3") {
Nil
} else {
Seq(compilerPlugin("org.typelevel" %% "kind-projector" % "0.13.2" cross CrossVersion.full))
}
}
scalacOptions ++= {
if (scalaBinaryVersion.value == "3") {
Seq("-Ykind-projector")
} else {
Nil
}
}
// to get types like Reader[String, *] (with more than one type parameter) correctly inferred for scala 2.12.x
scalacOptions ++= {
if (scalaBinaryVersion.value == "2.12") {
Seq("-Ypartial-unification")
} else {
Nil
}
}
Contributing
eff is a Typelevel project. This means we embrace pure, typeful, functional programming, and provide a safe and friendly environment for teaching, learning, and contributing as described in the Scala Code of Conduct.
Feel free to open an issue if you notice a bug, have an idea for a feature, or have a question about the code. Pull requests are also gladly accepted.
Extensions
Modules in this repository
- [scalaz](./scalaz)
- [monix](./monix)
- [doobie](./doobie)
- [twitter](./twitter) (deprecated)
External
- eff-zio eff extension for ZIO effects.