From bac2d26f56770aa3612b87f358528e2e2daeda9e Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Sun, 24 May 2020 22:53:24 +0100 Subject: io.{prinln, debug} --- src/gleam/io.gleam | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) (limited to 'src') 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 } -- cgit v1.2.3