For the past three years I engineered a back end of a highly distributed system using Java, Groovy, Scala and Erlang @ Proximetry Poland.
During this period I spent most of time in imperative JVM languages but I just liked Erlang's functional approach better.
I liked Erlang but it was lacking the compiler help I find useful and that led me to become Scala programmer recently.
Frege struck me last summer and immediately took first place in my evening coding.
In future I hope to help with Frege language and animate local developers community a little bit.
Frege is a Haskell for JVM. It has most of Haskell lovely features: succinct syntax, functional purity, lazy evaluation, pattern matching, algebraic data types and powerful type system. Frege is JVM language: it translates Haskell like source files into highly annotated Java source code. Frege is interoperable with other JVM languages: one can use existing JVM libraries thanks to 'native' declarations and because it compiles to Java, code written in Frege can be used from other JVM languages as well. This session will be going step by step from downloaded Frege distribution to running JSONLint web service, but in a way allowing explanation of the most important topics for newcomers. Both Frege and generated Java code will be commented wherever possible. Necessary and helpful tooling will be used: REPL for prototyping, 'native-gen' for wrapping libraries and plugins for Gradle, Leiningen and sbt will be covered.Slides