Quoting (part 4) The way quoting works is simple and dirty. You want an AST for some code: List.map (fun x -> x+1) [1; 2; 3] So you write that code in magic quotes: <:expr< List.map (fun x -> x+1) [1; 2; 3] >> Then you run it through a pre-processor. The pre-processor substitutes the AST of the quoted code. The compiler never sees the magic quotes. It is as though you wrote the AST there instead.