caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Brian Rogoff <bpr@best.com>
To: Patrick M Doane <patrick@watson.org>
Cc: John Max Skaller <skaller@ozemail.com.au>,
	Jun Furuse <Jun.Furuse@inria.fr>,
	caml-list@inria.fr
Subject: Re: "Re: [Caml-list] A G'Caml question" + additional info
Date: Sat, 30 Jun 2001 13:59:05 -0700 (PDT)	[thread overview]
Message-ID: <Pine.BSF.4.21.0106301328440.2975-100000@shell5.ba.best.com> (raw)
In-Reply-To: <Pine.BSF.3.96.1010630113150.62324A-100000@fledge.watson.org>

On Sat, 30 Jun 2001, Patrick M Doane wrote:
> On Sat, 30 Jun 2001, John Max Skaller wrote:
> > 	G'caml makes it easier to write readable algorithms,
> > and to do 'cut and paste' genericity. But it can't do what
> > you can do in C++. 
> I agree.  Although I'm not advocating that it do everything you can do in
> C++.

Less talk, more coding examples please. GCaml polymorphism is remarkably
easy to use. A while ago, when there was some discussion of overloading
on the list, Pierre Weis mentioned that he'd like a style of overloading
that would allow us to overload array access, string access, and hashtbl
access. How easy is that? Well, it writes itself from that sentence

generic get = case
  | string -> int -> char  => String.get
  | $a array -> int -> $a  => Array.get
  | $a list -> int -> $a => List.nth
  | ($a,$b) Hashtbl.t -> $a -> $b => Hashtbl.find 
  | ($a -> $b) -> $a -> $b => fun f -> f;;

OK, I'd like a bit of syntax sugar to make this .(), but that generic does
the trick, and then some (it works with a single argument function too). 

This extensional polymorphism is beautiful, as well as practical. One of
the nice things about the STL is the way that it allows you to write the
algorithms independently of the containers, using the iterator interfaces. 
You can write functions over generics like "get" to achieve the same
effect in GCaml. 

> > > The proposed 'include' feature makes it much easier to
> > > extend generic values, but doesn't help with derived generics. 

How doesn't it help? 

> > 	Objects can help, but really that isn't the answer.
> > The answer is more like: what can we do to make C++ like
> > generics properly parametric?
> > 
> > 	It is possible to make STL like algorithms in Ocaml now.
> > The problem is that you have to pass in a LOT of data, such as
> > functions to deref and increment the iterator.
> 
> I think that one can implement much of the STL algorithms in the Caml
> object system (avoiding the need to pass lots of data). 

While I think the STL is a fine design for a language like C++, I'm not
sure that STL emulation is high on my list of criteria for an OCaml 
overloading extension. 

Once that include feature is in *and* it is integrated with the rest of
the type system (modules and signatures, classes, polymorphic variants,
etc.) we'll have an enormous amount of power. 

-- Brian


-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


  reply	other threads:[~2001-06-30 21:00 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3B3D503C.E91DDE34@ozemail.com.au>
2001-06-30 16:01 ` Patrick M Doane
2001-06-30 20:59   ` Brian Rogoff [this message]
2001-07-01  5:32     ` Patrick M Doane
2001-07-02 15:55       ` Brian Rogoff
2001-07-10 18:08         ` Patrick M Doane
2001-07-16 18:24 John R Harrison
  -- strict thread matches above, loose matches on Subject: below --
2001-07-11 14:30 Krishnaswami, Neel
2001-07-11 16:22 ` Brian Rogoff
2001-07-11 16:35   ` Bruce Hoult
2001-07-11 19:12     ` Markus Mottl
2001-07-12  3:15   ` Patrick M Doane
2001-07-10 18:21 Krishnaswami, Neel
2001-07-11  6:09 ` Sven
     [not found] <3B3BB6EC.3DEB6CBF@ozemail.com.au>
2001-06-29  4:18 ` Patrick M Doane
2001-06-20  3:16 [Caml-list] A G'Caml question Brian Rogoff
2001-06-25 17:11 ` "Re: [Caml-list] A G'Caml question" + additional info Jun Furuse
2001-06-28  2:21   ` Patrick M Doane
2001-06-28  4:40     ` Brian Rogoff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.BSF.4.21.0106301328440.2975-100000@shell5.ba.best.com \
    --to=bpr@best.com \
    --cc=Jun.Furuse@inria.fr \
    --cc=caml-list@inria.fr \
    --cc=patrick@watson.org \
    --cc=skaller@ozemail.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).