Wie hängt man ein Zeichen an eine Zeichenkette in OCaml an?

9

Es scheint, als ob in der Standardbibliothek des Typs char -> string -> string keine Funktion vorhanden ist, die vor (oder am Ende von) ein char ein string einfügen. Es gibt Problemumgehungen, z.B. mit String.make oder String.blit . Gibt es einen eleganten Weg, dies zu tun?

    
SoftTimur 30.11.2011, 13:47
quelle

3 Antworten

7

String.make und String.blit ist ein guter Weg, dies zu tun, aber sie scheinen unerlässlich zu sein. Persönlich bevorzuge ich es, infix-Funktionen mit Char.escaped und String-Verkettung zu machen:

%Vor%     
pad 30.11.2011, 15:03
quelle
16

Ich würde den Code von @pad verwenden, weil ich Strings möglichst als unveränderbar behandeln möchte. Aber ich würde Char.escaped nicht verwenden; Es ist spezialisiert, wenn Sie die OCaml lexikalische Darstellung eines Charakters wollen. Also, was Sie bekommen, wenn Sie diese Änderung machen:

%Vor%     
Jeffrey Scofield 30.11.2011 16:59
quelle
8

Ich habe die Effizienz verschiedener Ansätze verglichen:

  1. Ich habe einen einfachen Test geschrieben:

    %Vor%
  2. Ich habe es nativ kompiliert (Intel Core 2 Duo).

  3. Ich habe den Test dreimal für jede Option ausgeführt, ihn mit time getaktet und die gemittelte reale Zeit berechnet.

Hier sind die Ergebnisse:

  1. s ^ String.make 1 c : 7.75s ( 100% )

  2. s ^ Char.escaped c : 8.30s ( 107% )

  3. Printf.sprintf "%s%c" s c : 68.57s ( 885% )

Rok Strniša 03.12.2011 21:47
quelle

Tags und Links