mltaylor.ml

   1: (******************************************************************************
   2:  * Calcul de l'expansion de Taylor d'un lambda-terme, programme principal
   3:  *****************************************************************************)
   4: 
   5: open Lambda;;
   6: open Diff;;
   7: open Taylor;;
   8: 
   9: let args_list = [];;
  10: let usage_msg = "
  11: Usage: mltaylor t [t0]
  12: 
  13: Appelé avec un seul argument, rend la forme normale de t.
  14: Avec deux arguments t0 est un linéarisé de la forme normale de t ; rend le
  15: linéarisé correspondant de t.
  16: ";;
  17: 
  18: let input_term = ref Star;;
  19: let got_term = ref false;;
  20: let input_diff = ref DiffStar;;
  21: let got_diff = ref false;;
  22: 
  23: if Array.length Sys.argv <= 1 or Array.length Sys.argv > 3
  24: then
  25:   begin
  26:     prerr_endline usage_msg;
  27:     exit 1
  28:   end;
  29: 
  30: (
  31:   try
  32:     input_term := lambda_of_string Sys.argv.(1);
  33:     got_term := true
  34:   with
  35:       Stream.Error(s) ->
  36:         begin
  37:           prerr_endline ("Syntax error in term: " ^ s);
  38:           exit 1
  39:         end
  40: );
  41: 
  42: (
  43:   if Array.length Sys.argv = 3
  44:   then try
  45:     input_diff := diff_of_string Sys.argv.(2);
  46:     got_diff := true
  47:   with
  48:       Stream.Error(s) ->
  49:         begin
  50:           prerr_endline ("Syntax error in diff term: " ^ s);
  51:           exit 1
  52:         end
  53: );
  54: 
  55: (
  56:   if not !got_diff
  57:   then
  58:     try
  59:       let normal = normalize !input_term
  60:       in
  61:         print_endline (string_of_lambda normal)
  62:     with Failure(s) ->
  63:       prerr_endline ("Exec error: " ^ s);
  64:       exit 1
  65:   else
  66:     try
  67:       let taylor = diff_of_term !input_term !input_diff
  68:       in
  69:         print_endline (string_of_diff taylor)
  70:     with Failure(s) ->
  71:       prerr_endline ("Exec error: " ^s);
  72:       exit 1
  73: );
  74: 
  75: exit 0
  76: ;;

This document was generated using caml2html