diff options
author | Louis Pilfold <louis@lpil.uk> | 2020-05-24 22:53:24 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2020-05-26 19:19:29 +0100 |
commit | bac2d26f56770aa3612b87f358528e2e2daeda9e (patch) | |
tree | ccd1b808acdde8be4c10bc00fba4d47324cf7c14 | |
parent | ddd89605d1c665cb5482a9cce174b9463c7188bc (diff) | |
download | gleam_stdlib-bac2d26f56770aa3612b87f358528e2e2daeda9e.tar.gz gleam_stdlib-bac2d26f56770aa3612b87f358528e2e2daeda9e.zip |
io.{prinln, debug}
-rw-r--r-- | CHANGELOG.md | 5 | ||||
-rw-r--r-- | src/gleam/io.gleam | 48 |
2 files changed, 47 insertions, 6 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 90221f6..73d2461 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## Unreleased - Created the `set` module with the `new`, `insert`, and `contains` functions. -- Created the `io` module with the `print` function. +- Created the `io` module with the `print`, `println`, and `debug` functions. - Created the `queue` module with the `new`, `from_list`, `to_list`, `is_empty`, `length`, `push_back`, `push_front`, `pop_back`, `pop_front`, `reverse`, `is_logically_equal`, and `is_equal` functions. @@ -18,7 +18,8 @@ `pop_grapheme` and `to_graphemes' functions. - `uri` module created with `parse`, `parse_query`, `path_segments`, `query_to_string` and `to_string`. -- The `dynamic` module gains the `map`, `opaque_list`, `tuple2`, and `tuple2_of` functions. +- The `dynamic` module gains the `map`, `opaque_list`, `tuple2`, and + `tuple2_of` functions. - The `list` module gains the `filter_map` function. - The `list.contains` label `has` has been changed to `any`. diff --git a/src/gleam/io.gleam b/src/gleam/io.gleam index f4c1ad5..9fef99a 100644 --- a/src/gleam/io.gleam +++ b/src/gleam/io.gleam @@ -1,6 +1,6 @@ external type DoNotLeak -external fn erl_print(String) -> DoNotLeak = +external fn erl_print(String, List(a)) -> DoNotLeak = "io" "fwrite" /// Writes a string to standard output. @@ -8,10 +8,50 @@ external fn erl_print(String) -> DoNotLeak = /// ## Example /// /// > io.print("Hi mum") +/// // -> Hi mum /// Nil -/// //=> Hi mum -/// +/// pub fn print(string: String) -> Nil { - erl_print(string) + erl_print(string, []) + Nil +} + +/// Writes a string to standard output, appending a newline to the end. +/// +/// ## Example +/// +/// > io.println("Hi mum") +/// // -> Hi mum +/// Nil +/// +pub fn println(string: String) -> Nil { + erl_print("~ts\n", [string]) + Nil +} + +/// Print a value to standard output using Erlang syntax. +/// +/// The value is returned after being printed so it can be used in pipelines. +/// +/// ## Example +/// +/// > io.debug("Hi mum") +/// // -> <<"Hi mum">> +/// "Hi mum" +/// +/// > io.debug(Ok(1)) +/// // -> {ok, 1} +/// Ok(1) +/// +/// > import list +/// > [1, 2] +/// > |> list.map(fn(x) { x + 1 }) +/// > |> io.debug +/// > |> list.map(fn(x) { x * 2 }) +/// // -> [2, 3] +/// [4, 6] +/// +pub fn debug(term: anything) -> Nil { + erl_print("~tp\n", [term]) Nil } |