Created simple functional pattern matching construct.

Please consider this contribution.
Did you consider a single function of type `F<A, Option<P1<B>>`?