On 09/03/07, skaller wrote: > > Pattern matches in Ocaml now allow alternatives within > a branch subject to a restriction that all alternatives > supply the same set of pattern variables (and of the same type). > > This is useful but still quite restrictive, for example: > > | A (i,j) | B i with j = 1 -> i + j I think this is a good idea. This form looks more general: > > | in A (h,k) let i = h and k = k > | in B s let i = s + 1 let k = i > But I find this too complicated (for a programmer to memorize the syntax, write it and someone else read it). You could simply say: | A (h as i, k as k) | B s with i = s + 1 and k = i I know that this would introduce some problems (not equal variable in both branches, but this could easily be solved (the compiler only complaining when a non-common variable is actually used (in this example, h and s)). - Tom