On 05/01/12 20:03, Ian Zimmerman wrote:

  [17]matica:~$ poly
Poly/ML 5.4.1 Release
fun main () = raise Domain ;
val main = fn: unit ->  'a
PolyML.export ("foo", main);
val it = (): unit

  [19]matica:~$ cc -o foo foo.o -lpolymain -lpolyml
  [20]matica:~$ ./foo
  [21]matica:~$ echo $?
0

I find this quite surprising, am I the only one?

I know that I can easily work around it by including an exception
catching wrapper in main, but it seems to me that wrapper should be in
libpolymain ..

There is also the a similar question about what happens when processing SML scripts on stdIn, e.g. for

  echo "fun f () : unit = raise Domain; f ();" | poly

we still get a successful exit value.

On many occasions when writing make files I would have found it useful to have an exception raised above, to stop processing on an error. I have always simply wrapped with something that prints out the exception and explicitly sets an exit status via OS.Process.exit. (For my make files, the f is PolyML.use.)

Phil
_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to