I have a program that causes an InternalError in Poly/ML 5.2 on
FreeBSD (but not MLton or SML/NJ). I haven't been able to test it
under Linux.

It can be reduced to these declarations:
    type int = Int.int;

    signature SIG =
    sig
      datatype t1 = T1 of int
      datatype t2 = T2 of { f : t1 }
    end;

    functor Fun () : SIG =
    struct
      datatype t1 = T1 of int
      datatype t2 = T2 of { f : t1 }
    end;

    structure Str1 = Fun () (*;*)
    structure Str2 : SIG = struct open Str1 end;

    fun g (Str2.T2 {f}) = (f=f);

They compile if any of various changes are made: such as adding the
semi-colon suggested above, removing the type int declaration, trying
to shortcut Str2, removing the T1 label.

Unfortunately, the corresponding changes are either difficult to make
in the original program or do not seem to fix the problem.

Sorry I haven't yet had time to look at Poly/ML myself. If a solution
isn't readily suggested, I'll try to look harder over the weekend.

Tim.

Attachment: pgpXqE4YQ3gRE.pgp
Description: PGP signature

_______________________________________________
polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to