Comment ajouter un caractère à une chaîne dans OCaml?
Il semble comme si il n'y a pas de fonction dans la bibliothèque standard de type char -> string -> string
insérer un char
devant (ou à la fin d'un string
. Il existe des solutions de contournement, en utilisant par exemple String.make
ou String.blit
. Est-il un moyen élégant pour ce faire?
source d'informationauteur SoftTimur
Vous devez vous connecter pour publier un commentaire.
String.make
etString.blit
est une bonne façon de le faire, mais ils semblent être impératif. Personnellement, je préfère faire de infix fonctions à l'aide deChar.escaped
et la concaténation de chaîne:Le code de @pad est ce que je voudrais utiliser, parce que j'aime traiter les chaînes de caractères comme immuable, si possible. Mais je ne voudrais pas utiliser
Char.escaped
; elle est spécialisée pour quand vous voulez le OCaml représentation lexicale d'un personnage. Alors, voici ce que vous obtenez si vous faites ce changement:J'ai fait une comparaison de l'efficacité de différentes approches:
J'ai écrit un test simple:
J'ai compilé nativement (Intel Core 2 Duo).
J'ai couru le test trois fois pour chaque option, le calendrier avec
time
et le calcul de la moyenne réel temps écoulé.Voici les résultats:
s ^ String.make 1 c
: 7.75 s (100%)s ^ Char.escaped c
: De 8h30 s (107%)Printf.sprintf "%s%c" s c
: 68.57 s (885%)