caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Variant parameterized method?
@ 2003-07-22 20:09 Brian Hurt
  2003-07-22 22:06 ` Jacques Garrigue
  0 siblings, 1 reply; 3+ messages in thread
From: Brian Hurt @ 2003-07-22 20:09 UTC (permalink / raw)
  To: Ocaml Mailing List


What I want to do is write a class interface like:

class virtual ['a] foo :
object
	method virtual doit : 'a
	method map : 'b. ('a -> 'b) -> 'b foo
end

The map function returns a new foo (not necessarily a new member of 
whatever derived from foo class the function is actually being called on) 
parameterized on the variant type.  This would be implemented more or less 
like:

class ['a] mapped_foo f_init e_init =
object
	val f = f_init
	val e = e_init
	method doit = f (e#doit)
	method map g =
		let h x = g (f x) in
		mapped_foo g e
end

The first prototype, when I try to compile it, returns with:

File "foo.mli", line 2, characters 6-100:
The abbreviation foo is used with parameters 'a foo
wich are incompatible with constraints 'b foo

[sic on the wich- minor typo there]. It works just fine if I change map to 
return a 'b list, or 'b array, or 'b Stack.t- it seems to be just 'b foo 
that's a problem.  Am I missing something?  If not, what is the suggested 
way for doing this?  I need map as a member function- it needs to behave 
differently on different types, and as I don't have reflextion, I need it 
to be a member function.  I'd prefer to keep it as a class for taste 
reasons.

Help is appreciated.

Brian


-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-07-22 22:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-22 20:09 [Caml-list] Variant parameterized method? Brian Hurt
2003-07-22 22:06 ` Jacques Garrigue
2003-07-22 22:34   ` Brian Hurt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).