Ok. Thank you all. I suspected as much but I wanted to check with someone else. (Adding a note about n+1-st note about Ocaml quirks and moving on.) (* NOTE: This looks bad, but Ocaml (4.06 beta) does not allow me to do any better *) | [Rtag (f1,f2,f3,f4)] -> f1,f2,f3,f4 On 10/19/2017 04:34 PM, Gabriel Scherer wrote: > This is a small hiccup with the OCaml (non-revised) syntax: > > | Foo of bar * baz * blah > > and > > | Foo of (bar * baz * blah) > > are not equivalent, and only the latter allows to do what you want. > > > On Thu, Oct 19, 2017 at 3:38 PM, Matej Košík wrote: >> Hi, >> >> I am trying to do simple pattern matching of these values: >> https://github.com/ocaml/ocaml/blob/trunk/parsing/parsetree.mli#L145 >> >> What I would like to do is: >> >> | [Rtag the_whole_4_tuple] -> >> the_whole_4_tuple >> >> However, when I try to do that, I am getting: >> >> Error: The constructor Rtag expects 4 argument(s), >> but is applied here to 1 argument(s) >> >> This: >> >> | [Rtag (f1,f2,f3,f4)] -> >> f1,f2,f3,f4 >> >> of course works but (regardless of the chosen bound variable names), it looks amateurish. >> >> What's the right way to do this? >> (I would like just to bind a 4-tuple and then return it) >> >> (Apologies in advance for a stupid question.) >> >