Thank you David, That is very helpful information and maybe good to add to
the Debugger tutorial to help others. If I explicitly add type information
to variables the debugger works.

On Sat, Nov 10, 2018 at 4:00 AM <polyml-requ...@inf.ed.ac.uk> wrote:

> Send polyml mailing list submissions to
>         polyml@inf.ed.ac.uk
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
> or, via email, send a message with subject or body 'help' to
>         polyml-requ...@inf.ed.ac.uk
>
> You can reach the person managing the list at
>         polyml-ow...@inf.ed.ac.uk
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of polyml digest..."
>
>
> Today's Topics:
>
>    1. Re: Debugger (David Matthews)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Fri, 9 Nov 2018 13:13:17 +0000
> From: David Matthews <david.matth...@prolingua.co.uk>
> To: polyml@inf.ed.ac.uk
> Subject: Re: [polyml] Debugger
> Message-ID: <ab525449-d652-c995-211a-675dc3590...@prolingua.co.uk>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> Dave,
> It seems to be a bug with printing the value of a polymorphic equality
> type variable.  "s" has type ''a and that upsets the debugger.  It works
> either if there is a type constraint to force the type of "s" to be int
> list or if "member" is changed so that the equality function is passed
> as an argument and the functions are fully polymorphic.  I need to find
> out why equality types cause problems.
>
> David
>
> On 09/11/2018 05:29, David Topham wrote:
> > I am trying to use the debugger in PolyML but always get errors.  Here is
> > my code:
> >
> > PolyML.Compiler.debug := true;
> > open PolyML.Debug;
> > fun member(x,[]) = false
> >    | member(x,(y::ys)) = if x = y then true else member(x,(ys));
> > member(2,[2,3,4]);  (* expect true  *)
> > member(5,[2,3,4]);  (* expect false  *)
> > fun subset([],s) = true
> >    | subset((x::xs),s) = member(x,s) andalso subset(xs,s);
> > fun equals(s1,s2) = subset(s1,s2) andalso subset(s2,s1);
> > breakIn "subset";
> >
> > subset([],[1,2,3]);   (* expect true  *)
> > subset([2],[1,2,3]);  (* expect true  *)
> >
> > It does break at the debug prompt, but when typing
> >
> > dump();
> >
> > it crashes with:  Function subset:Exception- Cast "toAddress" raised
> >
> > Do you have any suggestions?
> >
> > I am using Debian 9  64-bit and installed using apt-get
> >
> > "polyml is already the newest version (5.6-8)"
> >
> > -Dave
>
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> polyml mailing list
> polyml@inf.ed.ac.uk
> http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
>
> ------------------------------
>
> End of polyml Digest, Vol 152, Issue 3
> **************************************
>
> --
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
>
> --
-Dave
_______________________________________________
polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to