Ron?,
If you don?t want to upgrade to version 5.7, you can work around the problem like this:
val oldMaxInlineSize = !PolyML.Compiler.maxInlineSize; val _ = PolyML.Compiler.maxInlineSize := 1; fun ints(n) = Link(n + 1, ints); val _ = PolyML.Compiler.maxInlineSize := oldMaxInlineSize;
Aside to David: it can take quite a while for new releases to Poly/ML to make it into the various package managers that people like to use. E.g., MacPorts is still on version 5.5.2.
Regards,
Rob.
On 5 Jul 2017, at 08:37, David Matthews <David.Matthews at prolingua.co.uk> wrote:
I think you must be using an older version of Poly/ML. There was a bug in 5.6 and earlier versions that caused the optimiser to loop but that has been fixed in the current version, 5.7.
Regards, David
On 04/07/2017 17:40, Ron? Gon?alves wrote:
Actually, I have mistyped the definition of chain before. I am sorry. The definitions are: datatype chain = Link of int * (int -> chain); fun ints(n) = Link(n + 1, ints); And for these definitions, Poly/ML does not work, but SML/NJ does. Best regards, Ron? Gon?alves. 2017-07-04 13:37 GMT-03:00 Ron? Gon?alves <ronignc at gmail.com>:
Hello, everyone!
I am reading The Little MLer from Matthias Felleisen and Daniel Friedman using Poly/ML interpreter.
In chapter 7, whe have some sort of stream implementation:
datatype chain = Link of datatype chain = Link of int * (int -> chain); fun ints(n) = Link(n + 1, ints);
When I try to define the function ints in Poly/ML 5.6 interpreter, it does not work, it runs forever. But when I write the same code in SML/NJ v110.78 interpreter, things work. Is this difference in their behaviors a bug or is it normal or expected?
Best regards,
Ron? Gon?alves.
polyml mailing list polyml at inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
polyml mailing list polyml at inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml