This repository was archived by the owner on Nov 29, 2020. It is now read-only.
- Notifications
You must be signed in to change notification settings - Fork10
A compiler plugin that will improve on the scala compiler on the assumption that the user is using the Scalazzi-safe subset of Scala.
License
NotificationsYou must be signed in to change notification settings
scalaz/scalaz-plugin
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A compiler plugin that improves on the scala compiler on the assumption that the user is using the Scalazzi-safe subset of Scala.
- Sufficiency checker.Example.
- Non-ambigious typeclass resolution.Example.
- Orphan instance checker.Someexamples.
- Polymorphic function optimization.
Seetest/files for more examples. We would like to get a lot more things done eventually, see open issues.
- 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
orwait
in pure code. - No
.getClass
.
We are more interested inScalazzi+, 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}
About
A compiler plugin that will improve on the scala compiler on the assumption that the user is using the Scalazzi-safe subset of Scala.
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published