Skip to content

Instantly share code, notes, and snippets.

View BigCatAccount's full-sized avatar
😺

Max P. BigCatAccount

😺
View GitHub Profile
@BigCatAccount
BigCatAccount / continuation-monad.scala
Created February 23, 2023 15:40 — forked from nanne007/continuation-monad.scala
Continuation Monad in Scala
case class M[+A](in: (A => Any) => Any);
def unit[A](x: A) = M { k: (A => Any) => k(x) }
def bind[A, B](m: M[A], f: A => M[B]): M[B] =
M { k: (B => Any) =>
m.in { x: A =>
f(x).in(k)
}
}
object Main extends App {
trait Functor[F[_]] {
def map[A, B](fa: F[A])(f: A => B): F[B]
}
sealed trait Nat[A]
final case class Z[A]() extends Nat[A]
final case class S[A](a: A) extends Nat[A]
@BigCatAccount
BigCatAccount / RecursionScheme.scala
Created March 1, 2023 16:05 — forked from zliu41/RecursionScheme.scala
Factorial computation with recursion schemes in Scala
import cats.Functor
import cats.implicits._
import scala.language.higherKinds
sealed trait StackR
final case class DoneR(result: Int = 1) extends StackR
final case class MoreR(acc: StackR, next: Int) extends StackR
sealed trait Stack[A]
@BigCatAccount
BigCatAccount / fpmax.scala
Created March 2, 2023 14:35 — forked from jdegoes/fpmax.scala
FP to the Max — Code Examples
package fpmax
import scala.util.Try
import scala.io.StdIn.readLine
object App0 {
def main: Unit = {
println("What is your name?")
val name = readLine()
object MyIteratee{
sealed trait Input[+E] {
}
object Input {
case class El[+E](e: E) extends Input[E]
case object EOF extends Input[Nothing]
}
trait Iteratee[E, A] {