Browse thread
How to do this properly with OCaml?
-
Thomas Fischbacher
- Christophe Dehlinger
- Berke Durak
- Michel Quercia
- Eric Cooper
-
Michael Alexander Hamburg
-
Xavier Leroy
- Berke Durak
- Michael Alexander Hamburg
- Thomas Fischbacher
- Alex Baretta
- skaller
- Thomas Fischbacher
-
Xavier Leroy
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Stephane Glondu <Stephane.Glondu@c...> |
| Subject: | Re: [Caml-list] How to do this properly with OCaml? |
On Saturday 23 July 2005 11:27, Berke Durak wrote:
> That was my point. You could cleanly initialize your heap with that
> "any" value.
I was thinking about sth you could adjust to your purpose:
module type HEAP = sig
type 'a t
val create : int -> 'a t
val set : 'a t -> int -> 'a -> unit
val get : 'a t -> int -> 'a
end
module Heap : HEAP = struct
type 'a cell = Fill of 'a array | Empty of int
type 'a t = 'a cell ref
let create n = ref (Empty n)
let set h i e = match !h with
Empty n -> h := Fill (Array.create n e)
| Fill a -> a.(i) <- e
let get h n = match !h with
Empty _ -> raise Not_found
| Fill a -> a.(n)
end
No Obj.magic here. Does this suit you?
Stephane Glondu.