Scalazzi compiler plugin

Join the chat at https://gitter.im/scalaz/scalaz-plugin

A compiler plugin that improves on the scala compiler on the assumption that the user is using the Scalazzi-safe subset of Scala.

What does this plugin do?

See test/files for more examples. We would like to get a lot more things done eventually, see open issues.

What is Scalazzi

  • No null.
  • No catching exceptions in pure code.
  • No type casing (isInstanceOf).
  • No type casting (asInstanceOf).
  • No side-effects.
  • No equals, toString, hashCode.
  • No notify or wait in pure code.
  • No .getClass.

We are more interested in Scalazzi+, which adds:

  • Only total functions.
  • Eq (used in laws and pattern matching) must satisfy:
    • Identity of indiscernibles (indiscernible values are equal).
    • Indiscernibility of identicals (equal values are indiscernible from each other).

The last requirement might seem a bit cryptic, but it has a wide range of implications, for example:

if (a === b) {
  // now we know that a.type === b.type
}

Other great compiler plugins you should check out

Scalaz Plugin

A compiler plugin that will improve on the scala compiler on the assumption that the user is using the Scalazzi-safe subset of Scala.

Scalaz Plugin Info

⭐ Stars 76
🔗 Source Code github.com
🕒 Last Update a year ago
🕒 Created 4 years ago
🐞 Open Issues 31
➗ Star-Issue Ratio 2
😎 Author scalaz