6 votes

Écriture d'une fonction de type 'a -> string

Pour des raisons de débogage, j'aimerais avoir une fonction dans OCaml qui convertit en chaîne de caractères de type arbitraire, le débogueur en a actuellement une, mais ce serait cool d'en avoir une.

La bibliothèque sexplib serait parfaite, mais le fait est que je ne peux pas modifier tous les types que je dois ajouter with sexp et je ne peux pas non plus utiliser Camlp4.

Existe-t-il une telle fonction ? (Ce ne sera pas sur le code de production donc j'accepte les solutions sales)

Quelque chose comme la méthode Haskell Show typeclass serait exactement ce que je veux dire.

Merci pour votre temps

5voto

Michael Ekstrand Points 12849

En Std module en Piles incluses fournit un dump qui convertit des types arbitraires en chaînes de caractères lisibles. Elle est quelque peu limitée - comme elle ne connaît pas les types, elle ne peut pas imprimer correctement les constructeurs pour les variantes de types et les remplace par des nombres - mais elle peut tout de même être assez utile. Comme les informations sur les types ne sont pas disponibles au moment de l'exécution, c'est à peu près tout ce que vous pouvez faire de mieux. Le débogueur et le toplevel utilisent les astuces du compilateur pour obtenir de meilleures représentations, mais cela est difficile, voire impossible, à faire dans une bibliothèque générale.

Je crois me souvenir avoir vu quelque part une bibliothèque de vidage plus sophistiquée, mais je ne me souviens pas où.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X