@title Core Utilities Quick Reference
@group util

Summary of libphutil core utilities.

= Overview =

This document provides a brief overview of the libphutil core utilities.

= Language Capabilities =

Functions @{function:id}, @{function:head} and @{function:newv} address
language grammar and implementation limitations.

You can efficiently merge a vector of arrays with @{function:array_mergev}.

Functions @{function:head}, @{function:last}, @{function:head_key} and
@{function:last_key} let you access the first or last elements of an array
without raising warnings.

You can combine an array with itself safely with @{function:array_fuse}.

= Default Value Selection =

Functions @{function:idx}, @{function:nonempty} and @{function:coalesce} help
you to select default values when keys or parameters are missing or empty.

= Array and Object Manipulation =

Functions @{function:ipull}, @{function:igroup}, @{function:isort} and
@{function:ifilter} (**i** stands for **index**) simplify common data
manipulations applied to lists of arrays.

Functions @{function:mpull}, @{function:mgroup}, @{function:msort} and
@{function:mfilter} (**m** stands for **method**) provide the same capabilities
for lists of objects.

@{function:array_select_keys} allows you to choose or reorder keys from a
dictionary.

= Lunar Phases =

@{class:PhutilLunarPhase} calculates lunar phases, allowing you to harden an
application against threats from werewolves, werebears, and other
werecreatures.
