Module

pooka/io

src/pooka/io.pooka

Let the terminal speak, and listen carefully when it falls silent.

Use Erlang standard_io for ordinary output and standard_error for error output. Readers distinguish EOF from an empty line and retain line endings. read_char reads a Unicode code point; read_all preserves every received line.

Pooka
import pooka/io

let assert Ok(_) = io.println("Good evening")

API reference

class

IoError

src/pooka/io.pooka:22
class IoError(message: String)

A io failure carrying the details needed by its caller. Keep this value in Result until a boundary can explain it.

field

message

src/pooka/io.pooka:22
message: String
INFERREDString
constructor

new

src/pooka/io.pooka:22
INFERREDfn(String) -> pooka/io.IoError
function

print

src/pooka/io.pooka:52
print(text: String) -> Result(Nil, IoError)
INFERREDfn(String) -> Result(Nil, pooka/io.IoError)

Write text to stdout without adding a newline.

Pooka
import pooka/io

let assert Ok(_) = io.print("oak")
function

println

src/pooka/io.pooka:63
println(text: String) -> Result(Nil, IoError)
INFERREDfn(String) -> Result(Nil, pooka/io.IoError)

Write text to stdout followed by a newline.

Pooka
import pooka/io

let assert Ok(_) = io.println("oak")
function

eprint

src/pooka/io.pooka:74
eprint(text: String) -> Result(Nil, IoError)
INFERREDfn(String) -> Result(Nil, pooka/io.IoError)

Write text to standard_error without adding a newline.

Pooka
import pooka/io

let assert Ok(_) = io.eprint("missing file")
function

eprintln

src/pooka/io.pooka:85
eprintln(text: String) -> Result(Nil, IoError)
INFERREDfn(String) -> Result(Nil, pooka/io.IoError)

Write text to standard_error followed by a newline.

Pooka
import pooka/io

let assert Ok(_) = io.eprintln("missing file")
function

read_line

src/pooka/io.pooka:96
read_line() -> Result(Option(String), IoError)
INFERREDfn() -> Result(Option(String), pooka/io.IoError)

Read one line with its terminator. EOF is Ok(None), not an empty line.

Pooka
import pooka/io

let assert Ok(line) = io.read_line()
function

prompt

src/pooka/io.pooka:107
prompt(text: String) -> Result(Option(String), IoError)
INFERREDfn(String) -> Result(Option(String), pooka/io.IoError)

Write the prompt before requesting a line. Preserve EOF and input errors.

Pooka
import pooka/io

let assert Ok(answer) = io.prompt("Name: ")
function

read_char

src/pooka/io.pooka:119
read_char() -> Result(Option(String), IoError)
INFERREDfn() -> Result(Option(String), pooka/io.IoError)

Read one Unicode code point, returning None at EOF.

Pooka
import pooka/io

let assert Ok(character) = io.read_char()
function

read_all

src/pooka/io.pooka:131
read_all() -> Result(String, IoError)
INFERREDfn() -> Result(String, pooka/io.IoError)

Read until EOF, preserving line endings. Immediate EOF returns an empty string.

Pooka
import pooka/io

let assert Ok(text) = io.read_all()
function

flush

src/pooka/io.pooka:151
flush() -> Result(Nil, IoError)
INFERREDfn() -> Result(Nil, pooka/io.IoError)

Issue an ordered empty write to the output device.

Pooka
import pooka/io

let assert Ok(_) = io.flush()
function

is_terminal

src/pooka/io.pooka:162
is_terminal() -> Bool
INFERREDfn() -> Bool

Ask whether stdout is attached to a terminal.

Pooka
import pooka/io

let terminal = io.is_terminal()
function

is_error_terminal

src/pooka/io.pooka:173
is_error_terminal() -> Bool
INFERREDfn() -> Bool

Ask whether standard_error is attached to a terminal.

Pooka
import pooka/io

let terminal = io.is_error_terminal()