( print : utiliser dump : 'a -> string
de la librairie OCaml Batteries Included
https://github.com/ocaml-batteries-team/batteries-included/blob/master/src/batPervasives.ml )
Il faudra surement modifier ~/.ocamlinit
pour démarrer Batteries à chaque fois.
$ ocaml
let print x = Printf.printf "%s" (dump x); print_newline ();;
Exemples
# let print x = Printf.printf "%s" (dump x); print_newline ();;
val print : 'a -> unit = <fun>
# print 2;;
2
- : unit = ()
# print "ok";;
"ok"
- : unit = ()
# print [1; 2];;
[1; 2]
- : unit = ()
# print (3, 4);;
(3, 4)
- : unit = ()
# print 2 3 4;;
Error: This function has type 'a -> unit
It is applied to too many arguments; maybe you forgot a `;'.
#
Types récursifs
On pourrait vouloir écrire une version qui prend un nombre arbitraire d'arguments : a priori il faut accepter les types récursifs, c'est dangereux Stackoverflow Inria
$ ocaml -rectypes
# let rec print x = Printf.printf "%s" (dump x); print_newline (); print;;
val print : 'b -> 'a as 'a = <fun>
# print 2 3 4;;
2
3
4
- : int -> 'a as 'a = <fun>