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? |
Brian Hurt wrote:
> let get arr idx =
> if (idx < 0) || (idx > arr.len) then
> invalid_arg "get_arr"
> else
> arr.data.(idx)
> ;;
Maybe:
let get arr idx =
if (idx < 0) || (idx > arr.len) then
invalid_arg "get_arr"
else
match arr.data.(idx) with None -> assert false | Some a -> a
;;
would be better...
> let append arr x = (* add x to the end of arr *)
> if (arr.len == (Array.length arr.data)) then
> begin
> let newarr = Array.make (2*arr.len) None in
> Array.blit arr.data 0 newarr 0 arr.len;
> arr.data <- newarr;
> end;
> arr.data.(arr.len) <- Some(x);
> arr.len <- arr.len + 1;
> ()
> ;;
Maybe storing the arr.data's length in the record would be better...
Of course, all this would be wrapped in a module so that 'a t is an
abstract type.
But skaller already argued that he didn't like this approach.
--
Stephane Glondu.