Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Ceri Storey <cez@pkl.net>
To: Warp <warplayer@free.fr>
Cc: OCaml <caml-list@inria.fr>
Subject: Re: [Caml-list] Type hidding
Date: Wed, 16 Jan 2002 23:32:55 +0000	[thread overview]
Message-ID: <20020116233255.GA3044@mandelbrot.house> (raw)
In-Reply-To: <001601c19ec9$bfe251e0$eb00a8c0@warp>

On Wed, Jan 16, 2002 at 09:09:48PM +0100, Warp wrote:
> external set_window_data : wnd:hwnd -> 'a -> unit = "set_window_data"
> external get_window_data : wnd:hwnd -> 'a = "get_window_data"
> 
> I know that's very type-unsafe and all, but i really need the user to be
> able to put any kind of data into it. If you got another idea, please let me
> know.

Could i suggest that you add a type variable to hwnd to make it
type-safe? eg: instead of

type hwnd = ... 
have:
type 'a hwnd = ...

so the functions would have the types:
external set_window_data : wnd:'a hwnd -> 'a -> unit = "set_window_data"
external get_window_data : wnd:'a hwnd -> 'a = "get_window_data"

If hwnd is a pre-existing type (as i suspect it is) then you could
create a type alias that uses phantom types (as far as i understand
them, at least), ie:

type 'a my_hwnd = hwnd

This way you will ensure the same type of data is set / got from the
window. 

> 
> BTW, then with my handle i'm doing that :
>     (set_window_data wnd 0);
>     (print_int (get_window_data wnd));
> 
> but it raises (about the call the get_window_data ) :
>     This expression has type wnd:hwnd -> 'a but is here used with type int

This is an oddity with the use of compulsary labelled arguments, as
introduced in ocaml 3.04. You need to specify the label of the argument
passed, ie:

set_window_data ~wnd:wnd 0; 
print_int (get_window_data ~wnd:wnd);

Hope this helps..
-- 
Ceri Storey <cez@pkl.net> http://pkl.net/~cez/
vi(1)! postfix(7)! pie(5)!
-------------------
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:[~2002-01-16 23:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-16 20:09 Warp
2002-01-16 23:32 ` Ceri Storey [this message]
2002-01-17 10:57 ` Daniel de Rauglaudre
     [not found] <000901c19ecf$b8c93ee0$0b01a8c0@mit.edu>
2002-01-17 17:44 ` Warp
2002-01-18  6:40   ` Jacques Garrigue

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=20020116233255.GA3044@mandelbrot.house \
    --to=cez@pkl.net \
    --cc=caml-list@inria.fr \
    --cc=warplayer@free.fr \
    /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