Tengo una función de tipo in_channel -> out_channel -> unit
que dará como resultado un out_channel
. Ahora me gustaría obtener su salida como una cadena. Crear archivos temporales para escribir y leer parece feo, entonces ¿cómo puedo hacer eso? ¿Hay algún otro método para crear out_channel
además de la familia Pervasives.open_out
?En OCaml, ¿cómo puedo crear un out_channel que escribe en una cadena/búfer en lugar de un archivo en el disco
En realidad, esta función implementó una réplica. Lo que realmente necesito es probarlo programáticamente, por lo que me gustaría primero ajustarlo a una función del tipo string -> string
. Para crear el in_channel
, parece que puedo usar Scanf.Scanning.from_string
, pero no sé cómo crear el parámetro out_channel
.
No creo que haya una manera de hacer esto. Sería complicado, porque las cadenas tienen una longitud fija en OCaml. No son realmente adecuados como un lugar expandible para almacenar personajes. Puede usar Printf.sprintf para crear una cadena con los mismos contenidos que Printf.fprintf escribiría en un canal de salida. Pero aparte de eso, es posible que tengas que construir tu propio mecanismo. –