add tuple2 and .>>.
new internal design
add match_ function
add getPosition function
sealed
use free monad
use FSharpFunc.Adapt
currying