[mercury-users] Typeclass constraint on type declaration

Vladimir Gubarkov xonixx at gmail.com
Mon Feb 7 12:11:22 AEDT 2011

Hi, dear ALL

I've found some thead about that (dated 1999)


But despite the statement of usefullness of this feature:


Seems, it's still not implemented.

I've wrote simple piece of code:

:- module tc1.

:- interface.

:- import_module io.

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

:- implementation.

:- import_module int.

:- typeclass a(T) where [
func aaa(T) = T

:- instance a(int) where [
aaa(E) = E

:- type q(T) ---> q(T) <= a(T).

:- func z(q(T)) = T.
z(q(T)) = aaa(T).

main --> print(z(q(123))).

As you can see, it fails to compile:

D:\TEST\mercury>mmc.bat --make --infer-all tc1
Making Mercury\ints\tc1.int
tc1.m:021: In definition of type `tc1.q'/1:
tc1.m:021:   error: undefined type `a'/1.
`Mercury\ints\tc1.int' not written.
** Error making `Mercury\ints\tc1.int'.

Have you considered this feature useless/hard to implement?

Sincerely yours,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurylang.org/archives/users/attachments/20110207/a18fd2f4/attachment.html>

More information about the users mailing list