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