Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Add more string functions - StringBuilder extension

Abierto
#166 5 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
fsharp
Área
tooling

Línea de trabajo

Comienza con la discusión enlazada en fsprojects/FSharpPlus issue 158 y compara su extensión propuesta de StringBuilder con la implementación de referencia en cannorin/prelude.fs. Revisa el String.fs existente y la organización de las extensiones; después determina si String.build junto con printf y printfn constituyen el alcance acordado; se considera terminado cuando las funciones seleccionadas están disponibles con un comportamiento y una cobertura coincidentes.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Description

https://github.com/fsprojects/FSharpPlus/issues/158#issuecomment-512607693

For the StringBuilder extension, it will be used like below with the String.build function from my String.fs:

let s =
  String.build (fun builder ->
    builder.printfn "%s" "hello"
    builder.printfn "%i%i" 4 2
    ...
  )

The motivation to use this extension is to avoid the repetitive use of ignore caused by the fact StringBuilder's Write and WriteLine returns the StringBuilder for method chaining. Also, sb.WriteLine(sprintf "%i" 42).WriteLine(sprintf "%s" "foo").ToString() looks odd and ugly imo, but this might be just a personal impression.

https://github.com/fsprojects/FSharpPlus/issues/158#issuecomment-512721780

the build and the StringBuilder functions looks nice to me, but let's open another issue for StringBuilder extensions as at the moment we don't have any of them, and it might require more discussion.

Referece implementation:

From cannorin/prelude.fs:


let build (builder: StringBuilder -> unit) =
  let sb = new StringBuilder()
  builder sb
  sb.ToString()

type StringBuilder with
  member inline this.printf format =
    Printf.kprintf (fun s -> this.Append s |> ignore) format

  member inline this.printfn format =
    Printf.kprintf (fun s -> this.AppendLine s |> ignore) format
Lenguaje dominante
F#
Estrellas
941
Forks
106
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de fsprojects/FSharpPlus

Todos los issues de fsprojects/FSharpPlus

Issues similares

Más issues de DevTools

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.