/scala-evolution

The Evolution of a Scala Programmer

Primary LanguageScala

scala-evolution

Blog post: https://medium.com/@olxc/the-evolution-of-a-scala-programmer-1b7a709fb71f

Inspired by The Evolution of a Haskell Programmer

17 different ways to write a program that calculates factorial based on user input.

  • akkadev: using Akka framework (https://akka.io).
  • almostfp: a person making his first attemps in FP.
  • apofutuhylo: using apomorphism, futumorphism and hylomorphism recursion schemes.
  • beginner: a person making his first steps in Scala.
  • cake: Scala's Cake pattern.
  • fixcombinator: factorial using Y-combinator.
  • freemonad: program as ADTs interpreted into a target monad.
  • freemonadfreek: similar to freemonad but using freek library for reduce lifting boilerplate.
  • javadev: *cough*
  • johndegoes: concurrent factorial and effects composition using ZIO (https://zio.dev).
  • paramorphism: factorial using paramorphism recursion scheme.
  • peanoadt: factorial encoded in peano numbers as ADTs.
  • peanotypes: type level version of peanoadt.
  • shapeless: type level factorial using Shapeless (https://github.com/milessabin/shapeless).
  • spakdev: spark developer take on the factorial problem.
  • taglessfinal: tagless final encoding for effects composition.
  • trampoline: factorial using trampolining technique.