The patch attached below almost does it. Example code still fails, e.g. this bit --- let (xf,yf) = match _factor '((x to int),(y to int)) with C_list [ C_int a ; C_int b ] -> a,b | _ -> raise BadReturn --- results in this error --- File "example_prog.ml", line 19, characters 20-27: Parse error: "with" expected after [sequence] (in [expr]) File "example_prog.ml", line 1, characters 0-1: Error: Preprocessor error --- I'll see if I can figure it out. --- http://wagerlabs.com | @wagerlabs | http://www.linkedin.com/in/joelreymont