caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Nicolas Cannasse" <warplayer@free.fr>
To: <brogoff@speakeasy.net>, "Richard Jones" <rich@annexia.org>
Cc: "David Brown" <caml-list@davidb.org>, "Vovka" <jove@newmail.ru>,
	<caml-list@inria.fr>
Subject: Re: [Caml-list] static class member....
Date: Wed, 6 Aug 2003 20:14:47 +0200	[thread overview]
Message-ID: <005b01c35c46$a466ea20$2b00a8c0@warp> (raw)
In-Reply-To: <20030806174330.GA30804@redhat.com>

> > Yes, it says in the language introduction (the part on objects)
> >
> > Let-bindings within class definitions are evaluated before the object
> > is constructed
>
> Well I take it back. And I must admit that I always have used
> let-bindings as if they are local to the instance.
>
> The question though is why does my example work? Is this a bug
> in the compiler?

It's not a bug.
You can see your class as function to get a better idea of what's happenning
:

let foo =
    let x = ref 0 in
    (fun () -> !x)

against :

let foo () =
    let x = ref 0 in
    !x

To answer to the original post about class static, there is no concept of
static class variables in Ocaml , but you can still write accessors to a
variable declared outside the class scope :

let counter = ref 0

class foo =
    object
        method incr = incr counter
        method print = Printf.printf "counter = %d\n" !counter
    end

Nicolas Cannasse

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


  parent reply	other threads:[~2003-08-06 18:14 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-06 12:35 [Caml-list] Unix.kill on Win32 James Scott
2003-08-06 12:57 ` [Caml-list] static class member Vovka
2003-08-06 14:45   ` Richard Jones
2003-08-06 14:51     ` David Brown
2003-08-06 15:10       ` Richard Jones
2003-08-06 16:12         ` brogoff
2003-08-06 17:43           ` Richard Jones
2003-08-06 18:11             ` David Brown
2003-08-06 18:30               ` William Lovas
2003-08-06 18:14             ` Nicolas Cannasse [this message]
2003-08-07  0:12           ` Jacques Garrigue
2003-08-07  5:20           ` james woodyatt
2003-08-07 17:02             ` brogoff
2003-08-07 21:53             ` John Max Skaller
2003-08-06 16:24         ` David Brown
2003-08-07  0:21 ` [Caml-list] Unix.kill on Win32 Jacques Garrigue
2003-08-07  0:41   ` Jacques Garrigue
2003-08-08 14:38 [Caml-list] static class member Arturo Borquez

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='005b01c35c46$a466ea20$2b00a8c0@warp' \
    --to=warplayer@free.fr \
    --cc=brogoff@speakeasy.net \
    --cc=caml-list@davidb.org \
    --cc=caml-list@inria.fr \
    --cc=jove@newmail.ru \
    --cc=rich@annexia.org \
    /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).