Skip to content

Instantly share code, notes, and snippets.

@jdegoes
Created February 26, 2014 23:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jdegoes/9240971 to your computer and use it in GitHub Desktop.
Save jdegoes/9240971 to your computer and use it in GitHub Desktop.
Basic patterns
type Pattern[A, B] = A => Option[B]
def some[A, B](p: Pattern[A, B]): Pattern[Option[A], B] = _.flatMap(p)
def none[A, B]: Pattern[A, B] = Function.const(None)
def k[A](v0: A): Pattern[A, A] = v => if (v == v0) Some(v0) else None
def or[A, B](p1: Pattern[A, B], p2: Pattern[A, B]): Pattern[A, B] =
v => p1(v).orElse(p2(v))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment