All Projects → scalaz → Scalaz Plugin

scalaz / Scalaz Plugin

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

Programming Languages

scala
5932 projects
scalaz
18 projects

Projects that are alternatives of or similar to Scalaz Plugin

Never
Never: statically typed, embeddable functional programming language.
Stars: ✭ 248 (+226.32%)
Mutual labels:  compilers, functional-programming
Ramtuary
Ramda + Ramda Fantasy + Sanctuary REPL 🌿
Stars: ✭ 72 (-5.26%)
Mutual labels:  functional-programming
Optviewer Demo
Demonstration of LLVM's opt-viewer tool
Stars: ✭ 63 (-17.11%)
Mutual labels:  compilers
Json Decoder
Type safe JSON decoder for TypeScript
Stars: ✭ 67 (-11.84%)
Mutual labels:  functional-programming
Iflux
iflux = immer.js + react.js
Stars: ✭ 64 (-15.79%)
Mutual labels:  functional-programming
Fo
An experimental language which adds functional programming features to Go.
Stars: ✭ 1,158 (+1423.68%)
Mutual labels:  functional-programming
Parser Combinators From Scratch
Code that accompanies the series
Stars: ✭ 56 (-26.32%)
Mutual labels:  functional-programming
Lila
♞ lichess.org: the forever free, adless and open source chess server ♞
Stars: ✭ 10,315 (+13472.37%)
Mutual labels:  functional-programming
Cyclops
An advanced, but easy to use, platform for writing functional applications in Java 8.
Stars: ✭ 1,180 (+1452.63%)
Mutual labels:  functional-programming
Milewski Ctfp Pdf
Bartosz Milewski's 'Category Theory for Programmers' unofficial PDF and LaTeX source
Stars: ✭ 9,037 (+11790.79%)
Mutual labels:  functional-programming
Codeworld
Educational computer programming environment using Haskell
Stars: ✭ 1,142 (+1402.63%)
Mutual labels:  functional-programming
Scallina
A Coq-based synthesis of Scala programs which are correct-by-construction
Stars: ✭ 65 (-14.47%)
Mutual labels:  functional-programming
Parsing With Haskell Parser Combinators
🔍 A step-by-step guide to parsing using Haskell parser combinators.
Stars: ✭ 72 (-5.26%)
Mutual labels:  functional-programming
Mgo
Purely functional genetic algorithms for multi-objective optimisation
Stars: ✭ 63 (-17.11%)
Mutual labels:  functional-programming
Not Awesome Es6 Classes
A curated list of resources on why ES6 (aka ES2015) classes are NOT awesome
Stars: ✭ 1,185 (+1459.21%)
Mutual labels:  functional-programming
Dive into haskell
Dive into Haskell: Examples of all features of this Pure Functional programing language
Stars: ✭ 64 (-15.79%)
Mutual labels:  functional-programming
Lambdatest
Functional testing for Scala.
Stars: ✭ 65 (-14.47%)
Mutual labels:  functional-programming
Llvm Heat Printer
LLVM Profiling Visualization
Stars: ✭ 68 (-10.53%)
Mutual labels:  compilers
Pfun
Functional, composable, asynchronous, type-safe Python.
Stars: ✭ 75 (-1.32%)
Mutual labels:  functional-programming
Request via
RequestVia: A Functional HTTP Client That Wraps Net::HTTP
Stars: ✭ 74 (-2.63%)
Mutual labels:  functional-programming

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].