Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
* Re:  Random.int on non unix platform
@ 1999-05-26 12:07 Damien Doligez
  1999-06-28 22:35 ` Martin Quinson
  0 siblings, 1 reply; 5+ messages in thread
From: Damien Doligez @ 1999-05-26 12:07 UTC (permalink / raw)
  To: caml-list

>From: Martin Quinson <mquinson@zeppelin-cb.de>

>How can I write this without the unix library ?
>
>Random.init (int_of_float (Unix.time ()));;

You can do:

    Random.init (int_of_float (Sys.time ()));;

or you can input a random seed from the user and give it as argument
to Random.init.

-- Damien




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Events, method iterator
  1999-06-28 22:35 ` Martin Quinson
@ 1999-05-30 19:44   ` Ubik
  1999-06-01  9:39     ` Jerome Vouillon
  0 siblings, 1 reply; 5+ messages in thread
From: Ubik @ 1999-05-30 19:44 UTC (permalink / raw)
  To: caml-list

Hi everybody. I premise:
1) I'm a neophyte about caml
2) I can't speak French, so my mails will be mono-lingual.

Now the questions :
a) How can i get the value associated with an event (if an event actually
"carries" a value ...) ?
    i tried to send out a function through an int->int->int channel, i
receive it from the other side with
    an int->int->int event, but i can't apply it ...
b) Is there a way to iterate a method upon a list of objects of some type ?
Suppose i have a hierarchy
    with many overridden methods, and that i use containers of base-type,
like this :
    class shape = object
	method virtual paint : unit
	...
    end
    class circle = object
	inherit shape
	method paint = ...
	...
    end
    ...
    let paintObject x = x#paint

    class container = object
	inherit shape
	val mutable _objs:shape list = []
	method paint = List.iter paintObject _objs
	...
    end
    I have to define a function for every method to iterate, in this way ?
There's no way to define an
    explicit function to send messages to objects ?

Thank you

Emiliano




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Events, method iterator
  1999-05-30 19:44   ` Events, method iterator Ubik
@ 1999-06-01  9:39     ` Jerome Vouillon
  0 siblings, 0 replies; 5+ messages in thread
From: Jerome Vouillon @ 1999-06-01  9:39 UTC (permalink / raw)
  To: Ubik, caml-list

On Sun, May 30, 1999 at 09:44:25PM +0200, Ubik wrote:

> a) How can i get the value associated with an event (if an event actually
> "carries" a value ...) ?
> i tried to send out a function through an int->int->int channel, i
> receive it from the other side with
>     an int->int->int event, but i can't apply it ...

An event is something that may happen on a channel. You have to wait
for it to get a value from the channel. You can either wait for one
event using the function "Event.sync", wait for any of a list of
events with "select" or check if an event has already happen with
"poll".

[...]
>     let paintObject x = x#paint
> 
>     class container = object
> 	inherit shape
> 	val mutable _objs:shape list = []
> 	method paint = List.iter paintObject _objs
> 	...
>     end
>     I have to define a function for every method to iterate, in this way ?
> There's no way to define an
>     explicit function to send messages to objects ?

Yes, you need to define a function each time. But you can do it inline :
   method paint = List.iter (fun x -> x#paint) _objs

-- Jérôme




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Random.int on non unix platform
  1999-05-26 12:07 Random.int on non unix platform Damien Doligez
@ 1999-06-28 22:35 ` Martin Quinson
  1999-05-30 19:44   ` Events, method iterator Ubik
  0 siblings, 1 reply; 5+ messages in thread
From: Martin Quinson @ 1999-06-28 22:35 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml-list

> >From: Martin Quinson <mquinson@zeppelin-cb.de>
> 
> >How can I write this without the unix library ?
> >
> >Random.init (int_of_float (Unix.time ()));;
> 
> You can do:
> 
>     Random.init (int_of_float (Sys.time ()));;
> 
> or you can input a random seed from the user and give it as argument
> to Random.init.


                        (francais en bas)

hmmm. from htmlman/module sys :

> val time: unit -> float
>
>          Return the processor time, in seconds, used by the program since the
> beginning of execution.

So, if this call is at the begining of the programm, it will allways generate 
the same number (or almost). from the random.ml source code :
(* Simple initialisation.  The seed is an integer.
   Two seeds that are close enough will not produce uncorrelated
   pseudo-random sequences.
*)

And I really dislike the second solution...

Maybe would it be possible to make the module Random initialize itself alone 
before the first call, in the next release...


                             [en francais]

J'aimerais initialiser le generateur aléatoire de nombre sans utiliser la 
librairie Unix. Dans d'autres langage, j'ai l'habitude d'utiliser l'heure pour 
ca, mais, apparament, c'est impossible sans la librairie Unix (ce qui n'est 
pas portable, oblige a recompiler le top-level et complique la ligne de 
compilation des compilateurs)

Quant à l'idée de demander une graine à l'utilisateur, je trouve ca un peu 
préhistorique, comme approche. ;)

A mon avis, le plus simple serait encore que le module Random se charge tout 
seul comme un grand de s'initialiser sans demander a l'utilisateur de le faire.
(dans une prochaine version ?)

Merci & thanks,
Martin.




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Random.int on non unix platform
@ 1999-06-27 15:53 Martin Quinson
  0 siblings, 0 replies; 5+ messages in thread
From: Martin Quinson @ 1999-06-27 15:53 UTC (permalink / raw)
  To: caml-list

How can I write this without the unix library ?
 
Random.init (int_of_float (Unix.time ()));;

Thanks, Mt.




^ permalink raw reply	[flat|nested] 5+ messages in thread

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

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-05-26 12:07 Random.int on non unix platform Damien Doligez
1999-06-28 22:35 ` Martin Quinson
1999-05-30 19:44   ` Events, method iterator Ubik
1999-06-01  9:39     ` Jerome Vouillon
1999-06-27 15:53 Random.int on non unix platform Martin Quinson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox