Skip to content

Instantly share code, notes, and snippets.

@sir-wabbit
Last active August 16, 2016 02:37
Show Gist options
  • Save sir-wabbit/351ff0734bad80ff070bf747c5728327 to your computer and use it in GitHub Desktop.
Save sir-wabbit/351ff0734bad80ff070bf747c5728327 to your computer and use it in GitHub Desktop.
def point:             ()                => F[Unit]
def pure[A]:           A                 => _       => F[A]
def raiseError[A]:     E                 => _       => F[A]
def zero[A]:           ()                => _       => F[A]
def map[A, B]:         (A => B)          => F[A]    => F[B]
def flatMap[A, B]:     (A => F[B])       => F[A]    => F[B]
def ap[A, B]:          (F[A => B])       => F[A]    => F[B]
def handleErrorWith:   (E => F[A])       => F[A]    => F[A]
def product[A, B]:     F[B]              => F[A]    => F[(A, B)]
def combine[A]:        F[A]              => F[A]    => F[A]
def tailRec[A]:        (A => F[A Xor B]) => F[A]    => F[B]
def contramap[A, B]:   (B => A)          => F[A]    => F[B]
def imap[A, B]:        (A => B, B => A)  => F[A]    => F[B]
def cobind[A, B]:      (F[A] => B)       => F[A]    => F[B]
sealed trait Op[F[_], A, B]
def point:             ()                => F[Unit]
def zero[A]:           ()                => Op[F, Unit, A]
def pure[A]:           A                 => Op[F, Unit, A] = point.map(_ => a)
def raiseError[A]:     E                 => Op[F, Unit, A]
def map[A, B]:         (A => B)          => Op[F, A, B]
def flatMap[A, B]:     (A => F[B])       => Op[F, A, B]
def ap[A, B]:          (F[A => B])       => Op[F, A, B]
def handleErrorWith:   (E => F[A])       => Op[F, A, A]
def product[A, B]:     F[B]              => Op[F, A, (A, B)]
def combine[A]:        F[A]              => Op[F, A, A]
def tailRec[A]:        (A => F[A Xor B]) => Op[F, A, B]
def contramap[A, B]:   (B => A)          => Op[F, A, B]
def imap[A, B]:        (A => B, B => A)  => Op[F, A, B]
def cobind[A, B]:      (F[A] => B)       => Op[F, A, B]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment