ludus/prelude.md
Scott Richmond 03d5fb3450 update!
2024-06-15 22:19:50 -04:00

42 KiB

Ludus prelude documentation

These functions are available in every Ludus script. The documentation for any function can be found within Ludus by passing the function to doc!, e.g., running doc! (add) will send the documentation for add to the console.

For more information on the syntax & semantics of the Ludus language, see language.md.

A few notes

Naming conventions. Functions whose name ends with a question mark, e.g., eq?, return booleans. Functions whose name ends with an exclamation point, e.g., make!, change state in some way. In other words, they do things rather than calculating values. Functions whose name includes a slash either convert from one value to another, e.g. deg/rad, or they are variations on a function, e.g. div/0 as a variation on div.

How entries are formatted. Each entry has a brief (sometimes too brief!) description of what it does. It is followed by the patterns for each of its function clauses. This should be enough to indicate order of arguments, types, and so on.

Patterns often, but do not always, indicate types. Typed patterns are written as foo as :bar, where the type is indicated by the keyword. Possible ludus types are: :nil, :boolean, :number, :keyword (atomic values); :string (strings are their own beast); :tuple and :list (indexed collections); :set (sets are specific), :dict and :ns (associative collections); and :ref (references).

Conventional types. Ludus has two types based on conventions.

  • Result tuples. Results are a way of modeling the result of a calculation that might fail. The two possible values are (:ok, value) and (:err, msg). msg is usually a string describing what went wrong. To work with result tuples, see unwrap! and unwrap_or. That said, usually you work with these using pattern matching.

  • Vectors. Vectors are 2-element tuples of x and y coordinates. The origin is (0, 0). Many math functions take vectors as well as numbers, e.g., add and mult. You will see vectors indicated in patterns by an (x, y) tuple. You can see what this looks like in the last clause of add: ((x1, y1), (x2, y2)).

Functions by topic

Boolean

and    bool    bool?    false?    not    or    true?

Boxes and state

box?    store!    unbox    update!

Dicts

any?    assoc    assoc?    coll?    count    dict    dict?    diff    dissoc    empty?    get    keys    random    update    values

Environment and i/o

doc!    print!    report!    state

Errors

assert!

Lists

any?    append    at    butlast    coll?    concat    count    each!    empty?    filter    first    fold    join    keep    last    list    list?    map    ordered?    random    range    rest    second    sentence    slice

Math

abs    add    angle    atan/2    between?    ceil    cos    dec    deg/rad    deg/turn    dist    div    div/0    div/safe    even?    floor    gt?    gte?    heading/vector    inc    inv    inv/0    inv/safe    lt?    lte?    max    min    mod    mod/0    mod/safe    mult    neg    neg?    odd?    pi    pos?    rad/deg    rad/turn    random    random_int    range    round    sin    sqrt    sqrt/safe    square    sub    sum_of_squares    tan    tau    turn/deg    turn/rad    zero?

Results

err    err?    ok    ok?    unwrap!    unwrap_or

Sets

any?    append    coll?    concat    contains?    count    empty?    omit    random    set    set?

Strings

any?    concat    count    downcase    empty?    join    sentence    show    slice    split    string    string?    strip    trim    upcase    words

Tuples

any?    at    coll?    count    empty?    first    last    ordered?    rest    second    tuple?

Turtle graphics

back!    background!    bk!    clear!    colors    fd!    forward!    goto!    heading    heading/vector    home!    left!    lt!    pc!    pd!    pencolor    pencolor!    pendown!    pendown?    penup!    penwidth    penwidth!    position    pu!    pw!    render_turtle!    reset_turtle!    right!    rt!    turtle_state

Types and values

assoc?    bool?    box?    coll?    dict?    eq?    fn?    keyword?    list?    neq?    nil?    number?    ordered?    set?    show    some    some?    string?    tuple?    type

All functions, alphabetically

abs    add    and    angle    any?    append    assert!    assoc    assoc?    at    atan/2    back!    background!    between?    bg!    bgcolor    bk!    bool    bool?    box?    butlast    ceil    clear!    coll?    colors    concat    contains?    cos    count    dec    deg/rad    deg/turn    dict    dict?    diff    dissoc    dist    div    div/0    div/safe    doc!    downcase    each!    empty?    eq?    err    err?    even?    false?    fd!    filter    first    floor    fn?    fold    forward!    get    goto!    gt?    gte?    heading    heading/vector    home!    inc    inv    inv/0    inv/safe    join    keep    keys    keyword?    last    left!    list    list?    load_turtle_state!    lt!    lt?    lte?    map    max    min    mod    mod/0    mod/safe    mult    neg    neg?    neq?    nil?    not    odd?    ok    ok?    omit    or    ordered?    p5_calls    pc!    pd!    pencolor    pencolor!    pendown!    pendown?    penup!    penwidth    penwidth!    pi    pos?    position    print!    pu!    pw!    rad/deg    rad/turn    random    random_int    range    render_turtle!    report!    reset_turtle!    rest    right!    round    rt!    second    sentence    set    set?    show    sin    slice    some    some?    split    sqrt    sqrt/safe    square    state    store!    string    string?    strip    sub    sum_of_squares    tan    tau    trim    tuple?    turn/deg    turn/rad    turtle_commands    turtle_state    turtle_states    type    unbox    unwrap!    unwrap_or    upcase    update    update!    values    words    ws?    zero?

Function documentation

abs

Returns the absolute value of a number.

(0)
(n as :number)

Back to top.


add

Adds numbers or vectors.

()
(x as :number)
(x as :number, y as :number)
(x, y, ...)
((x1, y1), (x2, y2))

Back to top.


and

Returns true if all values passed in are truthy. Note that this does not short-circuit: all arguments are evaulated before they are passed in.

()
(x)
(x, y)
(x, y, ...)

Back to top.


angle

Calculates the angle between two vectors.

(v1, v2)

Back to top.


any?

Returns true if something is not empty, otherwise returns false (including for things that can't be logically full, like numbers).

([...])
(#{...})
(s as :set)
((...))
(s as :string)
(_)

Back to top.


append

Adds an element to a list or set.

()
(xs as :list)
(xs as :list, x)
(xs as :set)
(xs as :set, x)

Back to top.


assert!

Asserts a condition: returns the value if the value is truthy, panics if the value is falsy. Takes an optional message.

(value)
(msg, value)

Back to top.


assoc

Takes a dict, key, and value, and returns a new dict with the key set to value.

()
(dict as :dict)
(dict as :dict, key as :keyword, value)
(dict as :dict, (key as :keyword, value))

Back to top.


assoc?

Returns true if a value is an associative collection: a dict or a pkg.

(assoc as :dict)
(assoc as :pkg)
(_)

Back to top.


at

Returns the element at index n of a list or tuple, or the byte at index n of a string. Zero-indexed: the first element is at index 0. Returns nil if nothing is found in a list or tuple; returns an empty string if nothing is found in a string.

(xs as :list, n as :number)
(xs as :tuple, n as :number)
(str as :string, n as :number)
(_)

Back to top.


atan/2

Returns an angle from a slope. Takes an optional keyword argument to specify units. Takes either two numbers or a vector tuple.

(x as :number, y as :number)
(x, y, :turns)
(x, y, :radians)
(x, y, :degrees)
((x, y))
((x, y), units as :keyword)

Back to top.


back!

Moves the turtle backward by a number of steps. Alias: bk!

(steps as :number)

Back to top.


background!

Sets the background color behind the turtle and path. Alias: bg!

(gray as :number)
((r as :number, g as :number, b as :number))
((r as :number, g as :number, b as :number, a as :number))

Back to top.


between?

Returns true if a number is in the range [lower, higher): greater than or equal to the lower number, less than the higher.

(lower as :number, higher as :number, x as :number)

Back to top.


bg!

Sets the background color behind the turtle and path. Alias: bg!

(gray as :number)
((r as :number, g as :number, b as :number))
((r as :number, g as :number, b as :number, a as :number))

Back to top.


bgcolor

No documentation available.


bk!

Moves the turtle backward by a number of steps. Alias: bk!

(steps as :number)

Back to top.


bool

Returns false if a value is nil or false, otherwise returns true.

(nil)
(false)
(_)

Back to top.


bool?

Returns true if a value is of type :boolean.

(false)
(true)
(_)

Back to top.


box?

Returns true if a value is a box.

(b as :box)
(_)

Back to top.


butlast

Returns a list, omitting the last element.

(xs as :list)

Back to top.


ceil

Truncates a number towards positive infinity. With negative numbers, it returns the integer part. With positive numbers, returns the next more-positive integer.

(n as :number)

Back to top.


clear!

Clears the canvas and sends the turtle home.

()

Back to top.


coll?

Returns true if a value is a collection: dict, list, tuple, or set.

(coll as :dict)
(coll as :list)
(coll as :tuple)
(coll as :set)
(_)

Back to top.


colors

No documentation available.


concat

Combines two lists, strings, or sets.

(x as :string, y as :string)
(xs as :list, ys as :list)
(xs as :set, ys as :set)
(xs, ys, ...)

Back to top.


contains?

Returns true if a set or list contains a value.

(value, set as :set)
(value, list as :list)

Back to top.


cos

Returns the cosine of an angle. Default angle measure is turns. An optional keyword argument specifies the units of the angle passed in.

(a as :number)
(a as :number, :turns)
(a as :number, :degrees)
(a as :number, :radians)

Back to top.


count

Returns the number of elements in a collection (including string).

(xs as :list)
(xs as :tuple)
(xs as :dict)
(xs as :string)
(xs as :set)

Back to top.


dec

Decrements a number.

(x as :number)

Back to top.


deg/rad

Converts an angle in degrees to an angle in radians.

(a as :number)

Back to top.


deg/turn

Converts an angle in degrees to an angle in turns.

(a as :number)

Back to top.


dict

Takes a list or tuple of (key, value) tuples and returns it as a dict. Returns dicts unharmed.

(dict as :dict)
(list as :list)
(tup as :tuple)

Back to top.


dict?

Returns true if a value is a dict.

(dict as :dict)
(_)

Back to top.


diff

Takes two dicts and returns a dict describing their differences. Does this shallowly, offering diffs only for keys in the original dict.

(d1 as :dict, d2 as :dict)

Back to top.


dissoc

Takes a dict and a key, and returns a new dict with the key and associated value omitted.

(dict as :dict)
(dict as :dict, key as :keyword)

Back to top.


dist

Returns the distance from the origin to a point described by x and y, or by the vector (x, y).

(x as :number, y as :number)
((x, y))

Back to top.


div

Divides numbers. Panics on division by zero.

(x as :number)
(_, 0)
(x as :number, y as :number)
(x, y, ...)

Back to top.


div/0

Divides numbers. Returns 0 on division by zero.

(x as :number)
(_, 0)
(x as :number, y as :number)
(x, y, ...)

Back to top.


div/safe

Divides a number. Returns a result tuple.

(x as :number)
(_, 0)
(x, y)
(x, y, ...)

Back to top.


doc!

Prints the documentation of a function to the console.

(f as :fn)
(_)

Back to top.


downcase

Takes a string and returns it in all lowercase. Works only for ascii characters.

(str as :string)

Back to top.


each!

Takes a list and applies a function, presumably with side effects, to each element in the list. Returns nil.

(f! as :fn, [])
(f! as :fn, [x])
(f! as :fn, [x, ...])

Back to top.


empty?

Returns true if something is empty. Otherwise returns false (including for things that can't logically be empty, like numbers).

([])
(#{})
(s as :set)
(())
("")
(_)

Back to top.


eq?

Returns true if all arguments have the same value.

(x)
(x, y)
(x, y, ...)

Back to top.


err

Takes a value and wraps it in an :err result tuple, presumably as an error message.

(msg)

Back to top.


err?

Takes a value and returns true if it is an :err result tuple.

((:err, _))
(_)

Back to top.


even?

Returns true if a value is an even number, otherwise returns false.

(x as :number)
(_)

Back to top.


false?

Returns true if a value is false, otherwise returns false. Useful to distinguish between false and nil.

(false)
(_)

Back to top.


fd!

Moves the turtle forward by a number of steps. Alias: fd!

(steps as :number)

Back to top.


filter

Takes a list and a predicate function, and returns a new list with only the items that produce truthy values when the function is called on them. E.g., filter ([1, 2, 3, 4], odd?) &=> [1, 3].

(p? as :fn, xs)

Back to top.


first

Returns the first element of a list or tuple.

(xs)

Back to top.


floor

Truncates a number towards negative infinity. With positive numbers, it returns the integer part. With negative numbers, returns the next more-negative integer.

(n as :number)

Back to top.


fn?

Returns true if an argument is a function.

(f as :fn)
(_)

Back to top.


fold

Folds a list.

(f as :fn, xs as :list)
(f as :fn, xs as :list, root)

Back to top.


forward!

Moves the turtle forward by a number of steps. Alias: fd!

(steps as :number)

Back to top.


get

Takes a key, dict, and optional default value; returns the value at key. If the value is not found, returns nil or the default value.

(key as :keyword)
(key as :keyword, dict as :dict)
(key as :keyword, dict as :dict, default)

Back to top.


goto!

Sends the turtle to (x, y) coordinates. If the pen is down, the turtle will draw a path to its new location.

(x as :number, y as :number)
((x, y))

Back to top.


gt?

Returns true if numbers are in decreasing order.

(x as :number)
(x as :number, y as :number)
(x, y, ...)

Back to top.


gte?

Returns true if numbers are in decreasing or flat order.

(x as :number)
(x as :number, y as :number)
(x, y, ...)

Back to top.


heading

Returns the turtle's current heading.

()

Back to top.


heading/vector

Takes a turtle heading, and returns a unit vector of that heading.

(heading)

Back to top.


home!

Sends the turtle home: to the centre of the screen, pointing up. If the pen is down, the turtle will draw a path to home.

()

Back to top.


inc

Increments a number.

(x as :number)

Back to top.


inv

Returns the inverse of a number: 1/n or div (1, n). Panics on division by zero.

(x as :number)

Back to top.


inv/0

Returns the inverse of a number: 1/n or div/0 (1, n). Returns 0 on division by zero.

(x as :number)

Back to top.


inv/safe

Returns the inverse of a number: 1/n or div/safe (1, n). Returns a result tuple.

(x as :number)

Back to top.


join

Takes a list of strings, and joins them into a single string, interposing an optional separator.

([])
([str as :string])
(strs as :list)
([str as :string], separator as :string)
([str, ...], separator as :string)

Back to top.


keep

Takes a list and returns a new list with any nil values omitted.

(xs)

Back to top.


keys

Takes a dict and returns a list of keys in that dict.

(dict as :dict)

Back to top.


keyword?

Returns true if a value is a keyword, otherwise returns false.

(kw as :keyword)
(_)

Back to top.


last

Returns the last element of a list or tuple.

(xs)

Back to top.


left!

Rotates the turtle left, measured in turns. Alias: lt!

(turns as :number)

Back to top.


list

Takes a value and returns it as a list. For values, it simply wraps them in a list. For collections, conversions are as follows. A tuple->list conversion preservers order and length. Unordered collections do not preserve order: sets and dicts don't have predictable or stable ordering in output. Dicts return lists of (key, value) tuples.

(x)

Back to top.


list?

Returns true if the value is a list.

(l as :list)
(_)

Back to top.


load_turtle_state!

Sets the turtle state to a previously saved state. Returns the state.

(state)

Back to top.


lt!

Rotates the turtle left, measured in turns. Alias: lt!

(turns as :number)

Back to top.


lt?

Returns true if numbers are in increasing order.

(x as :number)
(x as :number, y as :number)
(x, y, ...)

Back to top.


lte?

Returns true if numbers are in increasing or flat order.

(x as :number)
(x as :number, y as :number)
(x, y, ...)

Back to top.


map

Maps a function over a list: returns a new list with elements that are the result of applying the function to each element in the original list. E.g., map ([1, 2, 3], inc) &=> [2, 3, 4].

(f as :fn, xs)
(kw as :keyword, xs)

Back to top.


max

Returns the number in its arguments that is closest to positive infinity.

(x as :number)
(x as :number, y as :number)
(x, y, ...)

Back to top.


min

Returns the number in its arguments that is closest to negative infinity.

(x as :number)
(x as :number, y as :number)
(x, y, ...)

Back to top.


mod

Returns the modulus of num and div. Truncates towards negative infinity. Panics if div is 0.

(num as :number, 0)
(num as :number, div as :number)

Back to top.


mod/0

Returns the modulus of num and div. Truncates towards negative infinity. Returns 0 if div is 0.

(num as :number, 0)
(num as :number, div as :number)

Back to top.


mod/safe

Returns the modulus of num and div in a result tuple, or an error if div is 0. Truncates towards negative infinity.

(num as :number, 0)
(num as :number, div as :number)

Back to top.


mult

Multiplies numbers or vectors.

()
(x as :number)
(x as :number, y as :number)
(x, y, ...)
(scalar as :number, (x, y))
((x, y), scalar as :number)

Back to top.


neg

Multiplies a number by -1, negating it.

(n as :number)

Back to top.


neg?

Returns true if a value is a negative number, otherwise returns false.

(x as :number)
(_)

Back to top.


neq?

Returns true if none of the arguments have the same value.

(x)
(x, y)
(x, y, ...)

Back to top.


nil?

Returns true if a value is nil.

(nil)
(_)

Back to top.


not

Returns false if a value is truthy, true if a value is falsy.

(nil)
(false)
(_)

Back to top.


odd?

Returns true if a value is an odd number, otherwise returns false.

(x as :number)
(_)

Back to top.


ok

Takes a value and wraps it in an :ok result tuple.

(value)

Back to top.


ok?

Takes a value and returns true if it is an :ok result tuple.

((:ok, _))
(_)

Back to top.


omit

Returns a new set with the value omitted.

(value, s as :set)

Back to top.


or

Returns true if any value passed in is truthy. Note that this does not short-circuit: all arguments are evaluated before they are passed in.

()
(x)
(x, y)
(x, y, ...)

Back to top.


ordered?

Returns true if a value is an indexed collection: list or tuple.

(coll as :list)
(coll as :tuple)
(_)

Back to top.


p5_calls

No documentation available.


pc!

Changes the turtle's pen color. Takes a single grayscale value, an rgb tuple, or an rgba tuple. Alias: pc!

(gray as :number)
((r as :number, g as :number, b as :number))
((r as :number, g as :number, b as :number, a as :number))

Back to top.


pd!

Lowers the turtle's pen, causing it to draw. Alias: pd!

()

Back to top.


pencolor

Returns the turtle's pen color as an (r, g, b, a) tuple.

()

Back to top.


pencolor!

Changes the turtle's pen color. Takes a single grayscale value, an rgb tuple, or an rgba tuple. Alias: pc!

(gray as :number)
((r as :number, g as :number, b as :number))
((r as :number, g as :number, b as :number, a as :number))

Back to top.


pendown!

Lowers the turtle's pen, causing it to draw. Alias: pd!

()

Back to top.


pendown?

Returns the turtle's pen state: true if the pen is down.

()

Back to top.


penup!

Lifts the turtle's pen, stopping it from drawing. Alias: pu!

()

Back to top.


penwidth

Returns the turtle's pen width in pixels.

()

Back to top.


penwidth!

Sets the width of the turtle's pen, measured in pixels. Alias: pw!

(width as :number)

Back to top.


pi

No documentation available.


pos?

Returns true if a value is a positive number, otherwise returns false.

(x as :number)
(_)

Back to top.


position

Returns the turtle's current position.

()

Back to top.


print!

Sends a text representation of Ludus values to the console.

(...)

Back to top.


pu!

Lifts the turtle's pen, stopping it from drawing. Alias: pu!

()

Back to top.


pw!

Sets the width of the turtle's pen, measured in pixels. Alias: pw!

(width as :number)

Back to top.


rad/deg

Converts an angle in radians to an angle in degrees.

(a as :number)

Back to top.


rad/turn

Converts an angle in radians to an angle in turns.

(a as :number)

Back to top.


random

Returns a random something. With zero arguments, returns a random number between 0 (inclusive) and 1 (exclusive). With one argument, returns a random number between 0 and n. With two arguments, returns a random number between m and n. Alternately, given a collection (list, dict, set), it returns a random member of that collection.

()
(n as :number)
(m as :number, n as :number)
(l as :list)
(d as :dict)
(s as :set)

Back to top.


random_int

Returns a random integer. With one argument, returns a random integer between 0 and that number. With two arguments, returns a random integer between them.

(n as :number)
(m as :number, n as :number)

Back to top.


range

Returns the set of integers between start (inclusive) and end (exclusive) as a list: [start, end). With one argument, starts at 0. If end is less than start, returns an empty list.

(end as :number)
(start as :number, end as :number)

Back to top.


render_turtle!

No docstring available.

()

Back to top.


report!

Prints a value, then returns it.

(x)
(msg as :string, x)

Back to top.


reset_turtle!

Resets the turtle to its original state.

()

Back to top.


rest

Returns all but the first element of a list or tuple, as a list.

(xs as :list)
(xs as :tuple)

Back to top.


right!

Rotates the turtle right, measured in turns. Alias: rt!

(turns as :number)

Back to top.


round

Rounds a number to the nearest integer.

(n as :number)

Back to top.


rt!

Rotates the turtle right, measured in turns. Alias: rt!

(turns as :number)

Back to top.


second

Returns the second element of a list or tuple.

(xs)

Back to top.


sentence

Takes a list of words and turns it into a sentence.

(strs as :list)

Back to top.


set

Takes an ordered collection--list or tuple--and turns it into a set.

(xs as :list)
(xs as :tuple)

Back to top.


set?

Returns true if a value is a set.

(xs as :set)
(_)

Back to top.


show

Returns a text representation of a Ludus value as a string.

(x)

Back to top.


sin

Returns the sine of an angle. Default angle measure is turns. An optional keyword argument specifies the units of the angle passed in.

(a as :number)
(a as :number, :turns)
(a as :number, :degrees)
(a as :number, :radians)

Back to top.


slice

Returns a slice of a list or a string, representing a sub-list or sub-string.

(xs as :list, end as :number)
(xs as :list, start as :number, end as :number)
(str as :string, end as :number)
(str as :string, start as :number, end as :number)

Back to top.


some

Takes a possibly nil value and a default value. Returns the value if it's not nil, returns the default if it's nil.

(nil, default)
(value, _)

Back to top.


some?

Returns true if a value is not nil.

(nil)
(_)

Back to top.


split

Takes a string, and turns it into a list of strings, breaking on the separator.

(str as :string, break as :string)

Back to top.


sqrt

Returns the square root of a number. Panics if the number is negative.

(x as :number)

Back to top.


sqrt/safe

Returns a result containing the square root of a number, or an error if the number is negative.

(x as :number)

Back to top.


square

Squares a number.

(x as :number)

Back to top.


state

No documentation available.


store!

Stores a value in a box, replacing the value that was previously there. Returns the value.

(b as :box, value)

Back to top.


string

Converts a value to a string by using show. If it is a string, returns it unharmed. Use this to build up strings of different kinds of values.

(x as :string)
(x)
(x, ...)

Back to top.


string?

Returns true if a value is a string.

(x as :string)
(_)

Back to top.


strip

Removes punctuation from a string, removing all instances of ,.;:?!

("{x},{y}")
("{x}.{y}")
("{x};{y}")
("{x}:{y}")
("{x}?{y}")
("{x}!{y}")
(x)

Back to top.


sub

Subtracts numbers or vectors.

()
(x as :number)
(x as :number, y as :number)
(x, y, ...)
((x1, y1), (x2, y2))

Back to top.


sum_of_squares

Returns the sum of squares of numbers.

()
(x as :number)
(x as :number, y as :number)
(x, y, ...)

Back to top.


tan

Returns the sine of an angle. Default angle measure is turns. An optional keyword argument specifies the units of the angle passed in.

(a as :number)
(a as :number, :turns)
(a as :number, :degrees)
(a as :number, :radians)

Back to top.


tau

No documentation available.


trim

Trims whitespace from a string. Takes an optional argument, :left or :right, to trim only on the left or right.

(str as :string)
(str as :string, :left)
(str as :string, :right)

Back to top.


tuple?

Returns true if a value is a tuple.

(tuple as :tuple)
(_)

Back to top.


turn/deg

Converts an angle in turns to an angle in degrees.

(a as :number)

Back to top.


turn/rad

Converts an angle in turns to an angle in radians.

(a as :number)

Back to top.


turtle_commands

No documentation available.


turtle_state

Returns the turtle's current state.

()

Back to top.


turtle_states

No documentation available.


type

Returns a keyword representing the type of the value passed in.

(x)

Back to top.


unbox

Returns the value that is stored in a box.

(b as :box)

Back to top.


unwrap!

Takes a result tuple. If it's :ok, then returns the value. If it's not :ok, then it panics. If it's not a result tuple, it also panics.

((:ok, value))
((:err, msg))
(_)

Back to top.


unwrap_or

Takes a value that is a result tuple and a default value. If it's :ok, then it returns the value. If it's :err, returns the default value.

((:ok, value), _)
((:err, _), default)

Back to top.


upcase

Takes a string and returns it in all uppercase. Works only for ascii characters.

(str as :string)

Back to top.


update

Takes a dict, key, and function, and returns a new dict with the key set to the result of applying the function to original value held at the key.

(dict as :dict)
(dict as :dict, key as :keyword, updater as :fn)

Back to top.


update!

Updates a box by applying a function to its value. Returns the new value.

(b as :box, f as :fn)

Back to top.


values

Takes a dict and returns a list of values in that dict.

(dict)

Back to top.


words

Takes a string and returns a list of the words in the string. Strips all whitespace.

(str as :string)

Back to top.


ws?

Tells if a string is a whitespace character.

(" ")
("\n")
("\t")
(_)

Back to top.


zero?

Returns true if a number is 0.

(0)
(_)

Back to top.