(** * 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 () ;