Hello,
Perhaps this is something to do with my failure to understand unix pipes, but the following confuses me...
I open poly from a shell and I type the following:
fun loopy () = let val sopt = TextIO.inputLine(TextIO.stdIn); in case sopt of SOME s => (print s; loopy ()) | NONE => () end; PolyML.export ("foo", loopy); OS.Process.exit OS.Process.success;
then I make this into a nice program call foo with:
cc -o foo foo.o -L${POLYLIB} -lpolymain -lpolyml
(${POLYLIB} is the local location of my poly libs)
That does what I expect it to, it echos.
However, the following misbehaves:
echo 'fun loopy () = let val sopt = TextIO.inputLine(TextIO.stdIn); in case sopt of SOME s => (print s; loopy ()) | NONE => () end; PolyML.export ("foo", loopy); OS.Process.exit OS.Process.success;' | poly
Somehow the "OS.Process.exit OS.Process.success;" becomes the first input whenever I foo...
Is this my confusion, or is it really misbehaving?
(PolyML5.2, Ubuntu 8.04)
cheers, lucas