From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 68326BC68 for ; Fri, 29 Sep 2006 09:53:38 +0200 (CEST) Received: from smtp3-g19.free.fr (smtp3-g19.free.fr [212.27.42.29]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id k8T7rbAo032479 for ; Fri, 29 Sep 2006 09:53:38 +0200 Received: from [192.168.0.121] (did75-6-82-226-95-82.fbx.proxad.net [82.226.95.82]) by smtp3-g19.free.fr (Postfix) with ESMTP id C316C4967B for ; Fri, 29 Sep 2006 09:53:37 +0200 (CEST) Message-ID: <451CD121.3070502@ccr.jussieu.fr> Date: Fri, 29 Sep 2006 09:54:09 +0200 From: Francois Colonna Reply-To: colonna@ccr.jussieu.fr User-Agent: Thunderbird 1.5.0.7 (X11/20060915) MIME-Version: 1.0 To: caml-list@yquem.inria.fr Subject: no error with ocamlc, a syntax error with ocaml Content-Type: multipart/mixed; boundary="------------050009060006020301040306" X-Miltered: at concorde with ID 451CD102.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; ocamlc:01 syntax:01 ocaml:01 ocaml:01 compilation:01 ocamlc:01 syntax:01 val:01 val:01 functions:01 jussieu:01 int:01 int:01 define:01 newline:02 X-Attachments: name="tuvuw_from_data_error.ml" name="tuvuw_from_data_error.ml" This is a multi-part message in MIME format. --------------050009060006020301040306 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hello, the small ocaml program attached gives no errors at compilation ocamlc -c tuvuw_from_data_error.ml and this syntax error at execution: ocaml < tuvuw_from_data_error.ml Objective Caml version 3.09.2 # * * val s_d1 : string = "1" # val s_d2 : string = "2" # val s_d3 : string = "3" # val s_d4 : string = "4" # val s_d5 : string = "5" # val d1 : int = 1 # val d2 : int = 2 # val d3 : int = 3 # val d4 : int = 4 # val d5 : int = 5 print_string (" w d5 = ") ;t = print_int (w_from_data ( d5 ) ) ;> print_newline () ;t -> int = val t : int * int -> int = print_string (" v d3 d4 d5 = ") ;ta : int -> int = print_int (v_from_data ( d3, d4, d5 ) ) ;= print_newline () ;_data : int * int * int -> int = val t_from_data : int * int * int * int * int -> int = print_string (" u d1 d2 = ") ; for data : d1 = 1 d2 = 2 d3 = 3 d4 = 4 d5 = 5 print_int (u_from_data ( d1, d2 ) ) ; print_newline () ;3 d4 d5 = 22 unit = () # Syntax error # By the way, why is the output mixed up ? Thanks François Colonna --------------050009060006020301040306 Content-Type: text/plain; name="tuvuw_from_data_error.ml" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="tuvuw_from_data_error.ml" (** * trying to implement cascade *) let s_d1 = "1" ;; let s_d2 = "2" ;; let s_d3 = "3" ;; let s_d4 = "4" ;; let s_d5 = "5" ;; let d1 = int_of_string (s_d1) ;; let d2 = int_of_string (s_d2) ;; let d3 = int_of_string (s_d3) ;; let d4 = int_of_string (s_d4) ;; let d5 = int_of_string (s_d5) ;; (** * define functions as function of their sons *) let w (a_a) = a_a + 3 ;; let u (a_a, b_a) = a_a + b_a + 1;; let v (a_a, b_a) = a_a + b_a + 2 ;; let t (a_a, b_a) = a_a + b_a ;; (** * express each function as a function of its data * using the functon of its sons *) let w_from_data ( a_a ) = w ( a_a ) ;; let u_from_data ( a_a, b_a ) = u ( a_a, b_a ) ;; let v_from_data ( a_a, b_a, c_a ) = v ( u_from_data ( a_a, b_a), w_from_data ( c_a) ) ;; let t_from_data ( a_a, b_a, c_a, d_a, e_a ) = t ( u_from_data (a_a, b_a), v_from_data (c_a, d_a, e_a) ) ;; (** * execution *) print_string (" for data : ") ; print_string (" d1 = ") ; print_int d1 ; print_string (" d2 = ") ; print_int d2 ; print_string (" d3 = ") ; print_int d3 ; print_string (" d4 = ") ; print_int d4 ; print_string (" d5 = ") ; print_int d5 ; print_newline () ; ;; print_string (" t d1 d2 d3 d4 d5 = ") ; print_int (t_from_data ( d1, d2, d3, d4, d5 ) ) ; print_newline () ; ;; print_string (" w d5 = ") ; print_int (w_from_data ( d5 ) ) ; print_newline () ; print_string (" v d3 d4 d5 = ") ; print_int (v_from_data ( d3, d4, d5 ) ) ; print_newline () ; print_string (" u d1 d2 = ") ; print_int (u_from_data ( d1, d2 ) ) ; print_newline () ; --------------050009060006020301040306--