caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Design question: functors or functions?
@ 2003-01-14 21:57 Brian Hurt
  2003-01-15  1:05 ` james woodyatt
  0 siblings, 1 reply; 2+ messages in thread
From: Brian Hurt @ 2003-01-14 21:57 UTC (permalink / raw)
  To: Ocaml Mailing List


I have a design question for the list at large.  I have a library I'm in
the process of cleaning up and finalizing, written in Ocaml.  This is a
library implementing priority search queues- effectively balanced trees,
except I need both a way to compare keys and a way to compare the
priorities of the data items.  Currently, the mli file reads in part:

type ('key, 'data) psq_t

val init: keycmp:('key -> 'key -> int) -> pricmp:('data -> 'data -> int)
   -> ('key, 'data) psq_t

and the implementation stashes the functions keycmp and pricmp in the 
datastructure itself.  The question I have is wether I should instead be 
using a functor.  The reason I haven't is that I find the functor 
interface to be somewhat unwieldy, although maybe I just haven't gotten 
used to it yet.

Suggestions are welcome, indeed sought.

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] 2+ messages in thread

* Re: [Caml-list] Design question: functors or functions?
  2003-01-14 21:57 [Caml-list] Design question: functors or functions? Brian Hurt
@ 2003-01-15  1:05 ` james woodyatt
  0 siblings, 0 replies; 2+ messages in thread
From: james woodyatt @ 2003-01-15  1:05 UTC (permalink / raw)
  To: Brian Hurt; +Cc: The Trade

On Tuesday, Jan 14, 2003, at 13:57 US/Pacific, Brian Hurt wrote:
> [...]  The question I have is wether I should instead be
> using a functor.  The reason I haven't is that I find the functor
> interface to be somewhat unwieldy, although maybe I just haven't gotten
> used to it yet. [...]

I have a similar set of functional data structures, e.g. red-black 
tree, skew-binary heap, catenable deque, etc., and I chose to use a 
functor for transforming modules that define a key type and an 
associated comparator function into modules that define the associated 
data structure.

The reason: functions that take more than one instance of the data 
structure often depend on both instances using the same ordering 
function on the key type.  The traditional way to get that is either 
with functors or with classes.  My general philosophy is to prefer the 
lighter weight functors over classes, except when I really need 
inheritance or the easier method invocation syntax is a clear win.


-- 
j h woodyatt <jhw@wetware.com>

-------------------
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] 2+ messages in thread

end of thread, other threads:[~2003-01-15  1:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-14 21:57 [Caml-list] Design question: functors or functions? Brian Hurt
2003-01-15  1:05 ` james woodyatt

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).