Skip to content

Instantly share code, notes, and snippets.

@leobm
Last active December 17, 2024 13:50
Show Gist options
  • Select an option

  • Save leobm/00b15acd9858df05794c396491c2f3f5 to your computer and use it in GitHub Desktop.

Select an option

Save leobm/00b15acd9858df05794c396491c2f3f5 to your computer and use it in GitHub Desktop.

Revisions

  1. leobm revised this gist Dec 17, 2024. No changes.
  2. leobm revised this gist Nov 2, 2023. 1 changed file with 8 additions and 0 deletions.
    8 changes: 8 additions & 0 deletions writer.gleam
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    pub type Writer(a) {
    Writer(target: a, write: fn(Writer(a), String) -> Writer(a))
    }

    pub fn write(writer: Writer(a), str) {
    let assert Writer(_, write) = writer
    write(writer, str)
    }
  3. leobm revised this gist Nov 2, 2023. 1 changed file with 19 additions and 0 deletions.
    19 changes: 19 additions & 0 deletions string_writer.gleam
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    import writer.{Writer}
    import gleam/string_builder.{StringBuilder}
    import gleam/io

    pub fn create() -> Writer(StringBuilder) {
    Writer(
    target: string_builder.from_strings([]),
    write: fn(writer, str) {
    let assert Writer(builder, write) = writer
    let next_builder = string_builder.append(builder, str)
    Writer(next_builder, write)
    },
    )
    }

    pub fn print(writer: Writer(StringBuilder)) {
    let assert Writer(builder, _) = writer
    io.print(string_builder.to_string(builder))
    }
  4. leobm created this gist Nov 2, 2023.
    9 changes: 9 additions & 0 deletions main.gleam
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    import writer
    import string_writer

    pub fn main() {
    string_writer.create()
    |> writer.write("Text1")
    |> writer.write("Text2")
    |> string_writer.print()
    }