[mercury-users] parsing a term of a dicriminated union type...

andrea bini andrea.bini at studenti.unimi.it
Wed Oct 3 02:55:38 AEST 2007


Hi all,
I need to parse a term of a discriminated union type that has an existentially quantified type typeclass constrained inside its unique constructor. I get an "Uncaught Mercury exception" executing this simple code:

:- module try_to_parse.

:- interface.
:- import_module io.

:- pred main(io::di, io::uo) is det.

:- implementation.
:- import_module int, list, string.
:- import_module term, term_io, parser.

:- type t1 ---> some [T] c1(T) => class1(T).

:- typeclass class1(T) where [].
:- instance class1(int) where [].

:- pred p1(string::in, t1::out) is semidet.
p1(Str,T1) :- 
	parser.read_term_from_string("",Str,_,RTerm),
	RTerm = term(_, Term),
	term.try_term_to_type(Term, Result),
	Result = ok(T1).

main(!IO) :-
	Str = "c1(5).",
	(	if	p1(Str,T1)
		then io.print(T1,!IO)
		else io.write_string("No",!IO)
	).

On executing I get this error:

Uncaught Mercury exception:
Software Error: ground_pseudo_type_desc_to_type_desc_det: not ground
Stack dump not available in this grade.

My fault or compiler/libraries fault?
I cannot understand what's wrong with my code...
How can I solve this?

I'm sorry if the topic was already discussed.

Thanks!

Cheers,
Andrea Bini
--------------------------------------------------------------------------
mercury-users mailing list
Post messages to:       mercury-users at csse.unimelb.edu.au
Administrative Queries: owner-mercury-users at csse.unimelb.edu.au
Subscriptions:          mercury-users-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the users mailing list