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
- Stephane Glondu
- Ken Rose
- 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: | Brian Hurt <bhurt@s...> |
| Subject: | Re: [Caml-list] How to do this properly with OCaml? |
On Mon, 25 Jul 2005, Stephane Glondu wrote: > 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... Duh! Yeah- thinko there. That's what I meant. > Maybe storing the arr.data's length in the record would be better... Not really. Array.length is a pretty efficient routine- it gets inline to a mov, shift, and mask IIRC. > But skaller already argued that he didn't like this approach. Yep. His argument is "It's impossible to implement cleanly, except for the obvious solution, which I hate." OK, so it's not very efficient for integers. Hey, why stop there? If it's an array of chars or bools, using whole words to store individual members is inefficient! We should only store the bytes or individual bits. For anything much larger than ints, this actually isn't that inefficient. Brian