Skip to content

Instantly share code, notes, and snippets.


Nicolas Francois Koisell

View GitHub Profile
View functor1.scala
def map(fa: Foo[A])(f: A => B): Foo[B] = ???
View explicitRecursion.scala
// A function which calls itself explicitly:
def length[A](list: List[A]) = list match {
case h::t => 1 + length(t)
case Nil => 0
View list.scala
// A type which holds a reference to itself:
sealed abstract class List[+A]
final case class Cons[+A](head: A, tail: List[A]) extends List[A]
final case object Nil extends List[Nothing]
Koisell / foldl.scala
Last active Sep 23, 2019
Medium recursion schemes
View foldl.scala
List(1, 2, 3).foldl(0)(_ + _)
// foldl removes the explicit recursion.
// FOLD, REDUCE, ... already are recursion scheme