Skip to content

Instantly share code, notes, and snippets.

Created October 7, 2013 19:22
Show Gist options
  • Save anonymous/6873422 to your computer and use it in GitHub Desktop.
Save anonymous/6873422 to your computer and use it in GitHub Desktop.
Comparison of the straightforward embedding of a basic tenet of category theory in Scala vs Haskell.
yonedaLemma = Iso (flip fmap) ($ id)
def yonedaLemma[F[_]:Functor, A]: F[A] <=> (({type λ[α] = A => α })#λ ~> F) =
new (F[A] <=> (({type λ[α] = A => α })#λ ~> F)) {
def to(fa: F[A]) = new (({type λ[α] = A => α })#λ ~> F) {
def apply[R](f: A => R) = Functor[F].map(fa)(f)
}
def from(f: (({type λ[α] = A => α })#λ ~> F)) = f(a => a)
}
@nafg
Copy link

nafg commented Sep 11, 2017

How is the affected by recent scala, typelevel scala, or dotty features?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment