caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: art yerkes <ayerkes@speakeasy.net>
To: erayo@cs.bilkent.edu.tr
Cc: exa@kablonet.com.tr, gnu04@yahoo.com, caml-list@inria.fr
Subject: Re: [Caml-list] Interface between Ocaml and C++
Date: Tue, 22 Jun 2004 08:36:34 -0500	[thread overview]
Message-ID: <20040622083634.78e2c662.ayerkes@speakeasy.net> (raw)
In-Reply-To: <200406221414.04909.exa@kablonet.com.tr>

On Tue, 22 Jun 2004 14:14:04 +0300
Eray Ozkural <exa@kablonet.com.tr> wrote:

> On Tuesday 22 June 2004 09:41, art yerkes wrote:
> > On Mon, 21 Jun 2004 22:24:07 +0300
> >
> > Eray Ozkural <exa@kablonet.com.tr> wrote:
> > > On Saturday 19 June 2004 10:29, art yerkes wrote:
> > > > The SWIG module for Ocaml has support for a few STL
> > > > types.  If you use those interfaces as a guide, you
> > > > could add support for more if the automatic wrapping
> > > > doesn't suit.
> > > >
> > > > SWIG isn't perfect for everyone but some needs are
> > > > met very well, including using templates.
> > > >
> > > > Look at http://www.swig.org/
> > >
> > > How does it handle convert C++ templates to ocaml code, I wonder. I had a
> > > design in my mind, but it required quite a bit of monkeying around.
> > > What's their solution?
> >
> > The current solution is to specify which specializations of a given
> > template will be needed, after which the specialized template classes are
> > treated as ordinary classes.
> 
> OK. Imagine client ocaml code that uses template class C < T >. I had imagined 
> that the specializations in the ocaml code ( C < int >, C < vector<float> 
> >, ... ) could be determined automatically, after which the specializations 
> are generated in C++ stub code, and linked in... So I guess I had in mind a 
> more generic version of SWIG's approach, however I doubt this won't be a good 
> mapping.... Can you guys imagine any other alternatives, or should we avoid 
> templates in C++ libraries that want an ocaml binding (like KDE) ?

In my experience, the C++ and ocaml type systems are different enough that
determining specializations from caml code won't work well.

Consider that:

std::set<const char *>
std::set<char [18]>
std::set<std::string>

are all different specializations of std::set on various representations of
string in C++.  The syntax to choose among them may not be easy for a user
to write and keep track of.
-- 
Hey, Adam Smith, keep your invisible hands to yourself!

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


  reply	other threads:[~2004-06-22 13:34 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-19  4:56 Gu Nu
2004-06-19  7:29 ` art yerkes
2004-06-21 19:24   ` Eray Ozkural
2004-06-22  6:41     ` art yerkes
2004-06-22 11:14       ` Eray Ozkural
2004-06-22 13:36         ` art yerkes [this message]
2004-06-22 18:44           ` Eray Ozkural
2004-06-22 23:06             ` Brandon J. Van Every

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=20040622083634.78e2c662.ayerkes@speakeasy.net \
    --to=ayerkes@speakeasy.net \
    --cc=caml-list@inria.fr \
    --cc=erayo@cs.bilkent.edu.tr \
    --cc=exa@kablonet.com.tr \
    --cc=gnu04@yahoo.com \
    /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).