This site is updated infrequently. For up-to-date information, please visit the new OCaml website at ocaml.org.

Re: reference initialization
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
 Date: 2000-05-14 (21:15) From: Daniel de Rauglaudre Subject: Re: reference initialization
```On Thu, May 11, 2000 at 02:59:16PM -0400, Hongwei Xi wrote:

> I want to combine two arrays into one. Here is the code in OCaml.
>  ...

Simple (library) solution:
=======================
let combine_arrays a b =
let alen = Array.length a in
let blen = Array.length b in
Array.init (alen + blen)
(fun i -> if i < alen then a.(i) else b.(i - alen))
=======================

Simple (custom) solution:
=======================
let combine_arrays a b =
let alen = Array.length a in
let blen = Array.length b in
if alen = 0 && blen = 0 then [| |]
else
let c = Array.make (alen + blen) (if alen = 0 then b.(0) else a.(0)) in
in begin
for i = 0 to alen - 1 do
c.(i) <- a.(i)
done;
for i = 0 to blen -1 do
c.(alen + i) <- b.(i)
done
end
=======================

Dirty solution (don't tell them I told you):
=======================
let combine_arrays a b =
let alen = Array.length a in
let blen = Array.length b in
let c = Array.make (alen + blen) (Obj.magic 0)
in begin
for i = 0 to alen - 1 do
c.(i) <- a.(i)
done;
for i = 0 to blen -1 do
c.(alen + i) <- b.(i)
done
end
=======================

--
Daniel de RAUGLAUDRE
daniel.de_rauglaudre@inria.fr
http://cristal.inria.fr/~ddr/

```