X-Git-Url: https://scm.cri.minesparis.psl.eu/git/Faustine.git/blobdiff_plain/f59ac471aa5a080301d70e7d7e1e81f34151ba2f..8c48d01c4b78dba6159c13438b06cb7e07a1f338:/interpretor/basic.ml

diff --git a/interpretor/basic.ml b/interpretor/basic.ml
index 3131231..1e56142 100644
--- a/interpretor/basic.ml
+++ b/interpretor/basic.ml
@@ -85,14 +85,31 @@ let basic_to_float_array : basic -> float array =
 	|_ -> [| (basic_to_float v)|];;
 
 
-let basic_to_string : basic -> string = 
+let rec basic_to_string : basic -> string = 
   fun (v : basic) ->
         match v with
-	|N i1 -> "N " ^ (string_of_int i1)
-	|R f1 -> "R " ^ (string_of_float f1)
-	|Vec vec -> "Vec"
-	|Zero -> "Zero"	
-	|Error -> "Error";;
+	|N i1 -> string_of_int i1
+	|R f1 -> string_of_float f1
+	|Vec vec -> 
+	    let basics : basic array = 
+	      Array.init vec#size vec#nth in
+	    let strings = Array.to_list 
+		(Array.map basic_to_string basics) in
+	    String.concat "," strings
+	|Zero -> "0"	
+	|Error -> "0";;
+
+let basic_of_float : float -> basic = fun f -> R f;;
+
+let rec basic_of_float_array : float array -> basic = 
+  fun (data : float array) ->
+    let n = Array.length data in
+    if n = 0 then 
+      raise (Convert_Error "basic_of_float_array : empty.")
+    else if n = 1 then basic_of_float data.(0)
+    else 
+      let vec = Array.get (Array.map basic_of_float data) in
+      Vec (new vector n vec);;
 
 (* VALUE OPERATIONS *)