FSharpPlus
                                
                                 FSharpPlus copied to clipboard
                                
                                    FSharpPlus copied to clipboard
                            
                            
                            
                        Quotation Monad
This will implement #44
A quotation monad allow us to compose functions returning expressions.
At the end of the composition we get a single expression, internally containing markers where an evaluate function needs to run a sub-expression.
Since F# doesn't support the "eval" expression, we can't directly run this expressions in existing quotation evaluators, but we include an Expr.run function which takes any normal quotation evaluator and takes care of handling the internal marker. So, instead of doing evaluator expr we do Expr.run evaluator expr.