In pattern position you must write patterns, not expressions; this is a different syntaxic class that, in particular, doesn't have any Module.foo syntax. Writing bound variable in pattern position and hoping that it will do an equality test is a classic mistake. Even if you did "open Sys;;" then match on "sigterm", it wouldn't do what you want. A correct way to do it: | pid, Unix.WSIGNALED sig when sig = Sys.sigterm -> ... On Thu, Nov 18, 2010 at 3:59 PM, Philippe Strauss wrote: > Hello caml'ers > > This one is short, I'm writting a signal handler: > > 205: let sig_exit () = > 206: Unix.kill !chpid Sys.sigterm ; > 207: match (Unix.waitpid [] !chpid) with > 208: | pid, Unix.WSIGNALED (Sys.sigterm) -> log `LOG_NOTICE "child > terminated by parent" > 209: | pid, pstat -> log `LOG_ERR "child asked to terminate by parent, > but unexpected process status received" > > and compilation chokes on: > > philou@air:~/mysrc/deconvolution/jackond$ make > ocamlfind opt -thread -package > unix,threads,netsys,netstring,netplex,rpc,equeue,jack,str,syslog -c > patcher.ml -o patcher.cmx > File "patcher.ml", line 208, characters 28-35: > Error: Syntax error > make: *** [patcher.cmx] Error 2 > > replacing Sys.sigterm by -11 or signumber, it compiles fine. > > I don't get it. > > It's using ocaml 3.12 of godi, on osx 10.6.5, x86_64 > > > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs >