caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Bug in ocamlc or in ocamlrun.
@ 2006-04-18 23:16 Marc Lasson
  2006-04-18 22:29 ` [Caml-list] " Jonathan Roewen
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Marc Lasson @ 2006-04-18 23:16 UTC (permalink / raw)
  To: caml-list

Hello,

When i compile the following program with ocamlc i get a segmentation fault. 

Is it a bug in the ocaml system ? I did not succeed to isolate it.
                                 ----------------------
module LL (R : sig
 type t
 val add : t -> t -> t
end) =
 struct
   type t = R.t list
   let add = List.map2 (R.add)
 end

module rec M : sig
   type t = P of int | L of LS.t
   val add : t -> t -> t
   val to_string : t -> string
 end = struct
   type param = ()
   type t = P of int
               | L of LS.t
             let add a b = match a, b with
     P a', P b' -> P (a'+b')
   | L a', L b' -> L (LS.add a' b')
   | _ -> failwith "incompatible"

   let rec to_string = function
      P i -> string_of_int i
    | L l -> List.fold_left (fun r x -> r^" "^(to_string x)) "" l
 end
and LS : sig type t = M.t list val add : t -> t -> t end = LL(M)

open M
let p = L [P 1; P 2]
let q = add p p
let () =
 print_endline (to_string p);
 print_endline (to_string q)
                                 ----------------------

If i replace the function LL.add by

 let rec add a b = match a, b with
     [], [] -> []
   | x::a', y::b' -> (R.add x y)::(add a' b')
   | _ -> failwith "add"

the segmentation fault magically disappear.

Hope that helps,
-- 
Marc Lasson.


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

end of thread, other threads:[~2006-04-19 20:24 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-18 23:16 Bug in ocamlc or in ocamlrun Marc Lasson
2006-04-18 22:29 ` [Caml-list] " Jonathan Roewen
2006-04-19  8:45 ` Keiko Nakata
2006-04-19 19:38   ` Marc Lasson
2006-04-19 18:57     ` Remi Vanicat
2006-04-19  9:33 ` Sebastian Egner
2006-04-19  9:44   ` Jonathan Roewen
2006-04-19 10:55     ` Sebastian Egner
2006-04-19 20:24       ` Alain Frisch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).