Use this field to quickly search for **code entities**.
        The keyboard shortcut `.` (period) can be used to
        quickly focus this field. Arrow keys can
        be used to select items, and Enter can be used to
        navigate to them.

        If you want to filter by the type of the entity, you
        can do so by preceding the name with the type and a colon.
        For example, `type:ac` would consider all **types** that
        contain `ac` somewhere in their name.

        Valid filters: `type:`, `command:`, `trait:`, `effect:`, and `capability:`.
      

crochet.core

Stability
(experimental)
Target
*
Version
(not yet published)

The Core package provides the most basic features of Crochet, and is likely to be used by every other program in the language.

It is expected that many of the types and features introduced here will be extended outside of the Core package. For example, while here we provide basic support for numeric operations, such as arithmetic, the Mathematics packages will extend this support to geometry, set theory, and other more specific areas.

Structure

Because Core isn't focused on solving a specific problem, but rather provide a set of building blocks that are common to many applications, it may feel confusing and overwhelming to just look at the types and commands defined here. So understanding how things are structured is the first step.

Core is divided into several categories. Each of these categories provides basic support for some specific problem.

Numeric modelling

Core provides a very basic support for dealing with numbers. The root of this modelling is numeric, and all numeric types are expected to extend it.

Within numeric we have two broader categories of types:

- integral is the base type for all whole numbers, such as 1234. There's only one integral type that Core provides: integer. The integer type represents any whole number precisely, at the cost of using more memory and computational power.

- fractional is the base type for all numbers that may contain fractions, such as 1234.5. There's only one fractional type that Core provides: float-64bit. This is a 64-bit IEEE-754 floating point value—it supports representing many numbers, but as approximations. And these approximations become less and less precise as the number grows bigger, just so we can guarantee that it'll use a fixed amount of memory (64-bits).

Textual modelling

Support for text is likewise very basic in Core. The root of this modelling is unsafe-arbitrary-text, which represents any piece of text as an opaque blob. Core then divides text further into a trust hierarchy—granting some protection against potentially malicious pieces of text.

Text coming from the outside should be regarded (and represented) as untrusted-text. This means that the piece of text is potentially malicious, and extra care needs to be taken when using it.

Text originating from inside of the Crochet program is represented as text. With text that exists as a literal in the program ending as the type static-text, and text that is computed while the program executes being given the type dynamic-text. These are considered trusted pieces of text, as they originate from a known source.

When untrusted pieces of text are involved, the only affordances that Crochet gives are either passing them around, or combinining them. Either through the _ ++ _ command or the interpolation syntax (e.g.: "here: [some-text]"). Both result in an interpolation being constructed.

Textual views

For trusted pieces of text, more affordances are given. However, because pieces of text can have very different semantics, in order to work with them one must first acquire a "text view". Which basically means the semantics we expect are more explicit. Core provides the following views:

- _ ascii creates a ascii-view. This assumes that the text only contains characters that are within the ASCII subset, so even text in, e.g.: Portuguese, would likely be rejected by it. Many pieces of text meant only for computers can be considered ASCII-only, and some operations only make sense in that case.

- _ lines yields a list of text for each line in the input.

- _ unicode-code-points yields a list of unicode code-points for the input.

Managing trust

Whenever you have untrusted-text, you'll need to make it trusted before you'll be able to operate on it. One way to do so is to use any of the Parsing packages in Crochet to make sure the semantics of the piece of text are known and fixed.

It's also possible to acquire the untainting capability and use the untaint global binding to turn an untrusted piece of text into a trusted piece of text. But special care needs to be given here as many security vulnerabilities arise from allowing untrusted text to be mixed with trusted text without full control and knowledge of its semantics.

Logic and ordering

Crochet makes heavy use of boolean logic, boolean is the root of this hierarchy, which also contains true and false as distinct singleton types.

Functions that consider ordering of values are, likewise, served by the more restricted type ordering.

Handling errors

Crochet makes several distinctions about what an "error" means in a program. For describing unsupported operations or values, the recommended way is to model it as a Contract, through pre and post-conditions. These more readily communicate the intent to users of the operation, as well as to the Crochet compiler.

Sometimes, writing a good contract isn't really feasible. The remaining unsupported operations and values can be handled by halting the program with a panic message. The singleton type panic provides commands for this.

Some errors are, however, expected. For these cases Crochet encourages representing them explicitly in a type hierarchy. The type result exists to simplify this when special semantics are not needed. A result can either be of type ok, if everything went as expected, or type error, if something went wrong.

Collections

Core provides very basic support for common collections. All of the collections provided by this package are persistent—meaning that you can only change the collection by creating a new one, and the implementation makes this as efficient as possible.

The following collections are provided:

- list is a persistent vector, with support for appending and prepending items efficiently, as well as accessing items in any order.

- record is an immutable, extensible record—all keys are plain pieces of text. The current implementation does not support efficient changes, and requires duplicating the whole record.

- set is a persistent set, with support for efficiently adding items and testing if an item exists in the set.

- map is a persistent mapping of keys to values, with support for arbitrary keys, and efficient adding or accessing of key/value pairs.

- stream is a persistent stream, currently implemented as a lazy linked list (in linked-stream). Streams naturally fuse their operations and use constant memory, but cannot be changed.

Mutable state

Core is mostly a pure library, but it provides support for (local) mutable state through the type cell. A cell is a small piece of memory that can be changed at will, through _ <- _ or _ compare: _ and-set: _. Both are guaranteed to happen atomically.

These values in the cell can be passed along as regular immutable values, or the cell can be passed around in read-only mode, by constructing a read-only-cell. This allows others to observe the changes in the value, but not affect it.

Traits

Core ships with an extensive selection of basic traits, which all have implementations for the basic types.

- equality and total-ordering deal with comparing values.

- bounds and enumeration deal with the idea of sequential values and ranges.

- boolean-algebra deals with logical comparisons and combinations.

- arithmetic and rounding-strategies deal with numbers.

- container, countable-container, modifiable-container, mapped-container, modifiable-mapped-container, and mergeable-mapped-container deal with the idea of arbitrary collections of values, like maps, sets, and lists.

- sequence, appendable-sequence, finite-sequence, indexed-sequence, modifiable-indexed-sequence, growable-indexed-sequence, sortable-sequence, reversible-sequence, and sliceable-sequence deal with the idea of collections of ordered values, like lists, but unlike sets or maps.

- foldable-collection, filterable-collection, mappable-collection, chainable-collection, and zippable-collection deal with the idea of collection in terms of operations, rather than their concept. This is more in line with mathematical ideas from abstract algebra, where we think about things in more abstract terms consisting of laws and operations, rather than their meaning. So these generally apply to all collection types, but may vary wildly on what you should expect—each implementation can re-interpret the meaning.

- set-algebra deals with the idea of sets, and things that can be viewed as sets in a reasonable way.

asset-location
(no documentation)
internal
Definitions internal to this package.
mutability
Allows constructing mutable memory cells.
tainting
Allows converting trusted values to untrusted values.
untainting
Allows converting untrusted values to trusted values. This power allows code to promote an untrusted value to a trusted one without any required verification of its semantics. It's a dangerous escape hatch that should only be necessary in very few cases. Be very skeptical of any code to which this power is granted.
(no documentation)
Allows defining (rich) ways of representing Crochet values according to a particular perspective. You can define a debug representation for any type by providing a new [command:_ for: _ perspective: _] branch. A perspective has to be a nullary type extending [type:perspective] and implementing the [trait:debug-perspective] trait.
The default perspective. Whenever one isn't specified, this will be used to represent the value. Generally the "most commonly useful" view of it.
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
No colour value
The empty document
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
Font properties
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
(no documentation)
Types of scroll bars
(no documentation)
(no documentation)
(no documentation)
No unit value
(no documentation)
A linked stream with no values.
The common error representing values that are missing. This is used as the reason for [type:error] types in some cases.
Possible ordering relations between two values.
(no documentation)
(no documentation)
(no documentation)
(no documentation)
Allows halting the program with an error message.
Allows converting trusted values to untrusted values.
Allows converting untrusted values to trusted values. This type is particularly dangerous. See the [capability:untainting] capability for more details on its danger.
atomic-cell
(no documentation)
non-local
Allows non-local returns (only used internally)
action
The base type for all actions.
action-choice
The type of possible choices for actions (with bound environments) that the simulation constructs on each turn.
any
The base of the type hierarchy in Crochet. The `any` type matches any value, but provides no information about them. It effectively opts out of the type system in some region of the code.
any-package
(no documentation)
ascii-view
A text view that guarantees its text fits in the ASCII range.
asset-location
(no documentation)
association
An association pair in a mapped collection.
boolean
The base type for two-valued logical values. Booleans model a two-valued logic with two possible values: [type:true] and [type:false].
cell
The type of mutable cells. Passing this type around does grant the capability of mutating the value it holds. If you're passing it around, you may want to construct a [type:read-only-cell] instead, through [command:_ read-only]. Mutability is discouraged in Crochet, but sometimes necessary. For those cases you'll need to acquire the [capability:mutability] capability.
conversion-error
The base type for errors when trying to convert a type to another.
debug-representation
Allows defining (rich) ways of representing Crochet values according to a particular perspective. You can define a debug representation for any type by providing a new [command:_ for: _ perspective: _] branch. A perspective has to be a nullary type extending [type:perspective] and implementing the [trait:debug-perspective] trait.
debug-serialisation
Used for serialisation. No powers are granted for external modules.
default-perspective
The default perspective. Whenever one isn't specified, this will be used to represent the value. Generally the "most commonly useful" view of it.
doc-background
(no documentation)
doc-boolean
A boolean.
doc-border
(no documentation)
doc-border-style
(no documentation)
doc-border-style--dashed
(no documentation)
doc-border-style--dotted
(no documentation)
doc-border-style--hidden
(no documentation)
doc-border-style--none
(no documentation)
doc-border-style--solid
(no documentation)
doc-borders
(no documentation)
doc-box
A document that provides HTML box-style semantics
doc-circle
A circle shape
doc-code
A piece of text that's guaranteed to be rendered in monospaced font.
doc-colour
The base type of all colours used by documents.
doc-colour-inherit
No colour value
doc-colour-rgba
RGBA colour
doc-dimension
A dimension of doc units.
doc-ellipse
An ellipse shape
doc-em
Value in em units.
doc-empty
The empty document
doc-fixed-layout
Lays its items with fixed layout (the items need to be positioned)
doc-flex-column
Lays its items with a flex column.
doc-flex-row
Lays its items with a flex row.
doc-flow
Lays its items with flow layouting.
doc-font-decoration
(no documentation)
doc-font-decoration--inherit
(no documentation)
doc-font-decoration--no-decoration
(no documentation)
doc-font-decoration--overline
(no documentation)
doc-font-decoration--strike-through
(no documentation)
doc-font-decoration--underline
(no documentation)
doc-font-family
Font properties
doc-font-family--inherit
(no documentation)
doc-font-family--monospace
(no documentation)
doc-font-family--sans-serif
(no documentation)
doc-font-family--serif
(no documentation)
doc-font-presentation
(no documentation)
doc-font-style
(no documentation)
doc-font-style--inherit
(no documentation)
doc-font-style--italic
(no documentation)
doc-font-style--normal
(no documentation)
doc-font-weight
(no documentation)
doc-font-weight--bold
(no documentation)
doc-font-weight--bolder
(no documentation)
doc-font-weight--inherit
(no documentation)
doc-font-weight--light
(no documentation)
doc-font-weight--lighter
(no documentation)
doc-font-weight--regular
(no documentation)
doc-format-text
A document that formats text within it differently
doc-group
Allows the renderer to choose between a compact and expanded representation depending on its rendering context, amount of space available, etc.
doc-line
A line shape
doc-list
A list of values.
doc-margin
(no documentation)
doc-number
A numeric value.
doc-padding
(no documentation)
doc-percent
Value in percentage (context-dependent).
doc-pixels
Value in pixels.
doc-plain-text
A piece of text with no semantics.
doc-point2d
A 2d point of doc units.
doc-polygon
A polygon shape
doc-polyline
A poly-line shape
doc-position
Positions the item inside of a fixed layout container
doc-presentation
A way of formatting and presenting shapes
doc-rectangle
A rectangle shape
doc-scroll
Types of scroll bars
doc-scroll--hidden
(no documentation)
doc-scroll--if-needed
(no documentation)
doc-scroll--visible
(no documentation)
doc-scroll-style
Scroll-view properties
doc-scroll-view
A container with bounded dimensions that allows scrolling
doc-secret
A document that provides a secret value
doc-table
A table of values.
doc-table-row
A row in a table.
doc-text
A piece of Crochet text.
doc-timeline
A document that provides a timeline
doc-typed
Marks a document as belonging to a specific type
doc-unit
The base type of all numeric units used by documents.
doc-unit-unset
No unit value
document
The root of the document language.
dynamic-text
The type of trusted pieces of text constructed by running a Crochet program.
enum
The base type of enumerations. An enumeration is a bounded collection of distinct and ordered values.
error
Represents failed evaluations.
error-parsing-float
Parsing the float from a piece of text was not possible.
error-parsing-integer
Parsing the integer from a piece of text was not possible.
false
The false case of booleans.
float-64bit
The type for IEEE-754 64-bit floating point numbers.
fractional
The base type for fractional numbers. Any representations of fractions or real numbers with a fractional part should be a subtype of [type:fractional].
function
The type of any applicable function.
function-0
Functions that take no arguments.
function-1
Functions that take one argument.
function-2
Functions that take two arguments.
function-3
Functions that take three arguments.
function-4
Functions that take four arguments.
function-5
Functions that take five arguments.
function-6
Functions that take six arguments.
function-7
Functions that take seven arguments.
function-8
Functions that take eight arguments.
function-9
Functions that take nine arguments.
indexed
A value from an indexed sequence along with its index.
integer
The type of arbitrary-precision integers.
integral
The base type for integral numbers. Any representation of whole integral numbers should be a subtype of [type:integral].
internal
(no documentation)
interpolation
The type of interpolation sequences. An interpolation is not a descendant of [type:text], but rather its own first class concept of mixed values. Interpolations reify the idea of text that may contain other pieces of data within it, and turn this into a kind of tree-based representation of values. This makes sure we don't violate implicit rules in pieces of text by simply composing them with other things, just like typed data does for combining distinct data points.
linked-stream
The base type of streams based on lazy linked lists. Linked streams can be iterated multiple times, with the guarantee that the items of the stream are computed as needed, and only computed at most once.
linked-stream-cons
A linked stream with one value and, possibly, many others. The `rest` field is a thunk, which guarantees it's not computed more than once.
linked-stream-empty
A linked stream with no values.
list
A list is an ordered sequence of values, possibly of different types. It's implemented as a persistent vector under the hood, supporting efficient additions of items to the beginning or the end of the list, without modifying the original list.
map
A map is a collection of key/value pairs where each key is associated with exactly one value.
not-found
The common error representing values that are missing. This is used as the reason for [type:error] types in some cases.
nothing
The type which represents the absense of useful values.
numeric
The base type for the numeric tower. Any numeric types in Crochet are expected to be a subtype of [type:numeric].
ok
Represents successful evaluations.
ordering
Possible ordering relations between two values.
ordering--equal
(no documentation)
ordering--greater-than
(no documentation)
ordering--less-than
(no documentation)
package
(no documentation)
package-asset
(no documentation)
package-assets
(no documentation)
panic
Allows halting the program with an error message.
partition-pair
A pair constructed by partitioning a collection.
perspective
The base of all perspectives. A perspective is a nullary type that allows selecting one of the debug representations, and extending these representations, without any coordination. This means that packages need not be aware of other packages' perspectives and representations.
read-only-cell
A wrapper that allows accessing the value of a cell but not changing it.
record
The type of records. A record is a collection of named data points, like typed data, but without the "type" part of it. In that sense, it can bring together independent values and identify them in many contexts where security, privacy, and command specialisation are not a concern. Records are constructable by anyone, inspectable by anyone, and extensible by anyone. They should not be used for data that is sensitive or isn't public.
result
The base type of results that may fail. A result explicitly models the idea that a computation may fail, and then reifies the status of the evaluation (whether it succeeded, with an [type:ok] type, or failed, with an [type:error] type), along with the value it would otherwise produce or the reason for its failure.
secret
(no documentation)
secret-seal
(no documentation)
set
A set is a collection of unordered elements that allows efficiently checking if an item is in the collection.
source-perspective
Shows the "source code" representation of a value.
static-text
The type of text _literals_ in source programs. This type assures users that the piece of text originates from the program itself. In this sense, [type:static-text] represents a piece of text that is trusted to not come from external sources or have been composed without verifying the semantics of that composition.
static-type
The base type of all static types.
stream
A stream is a procedural sequence. It guarantees a constant use of memory, and fusing of operations performed on it.
taint
Allows converting trusted values to untrusted values.
text
The base type of trusted pieces of text.
thunk
The type of lazy expressions. A [type:thunk] is similar to a [type:function-0], in that it represents a computation that hasn't been evaluated yet (therefore we don't know what it's value will be). However, [type:thunk | thunks] also provide a guarantee that the computation will be evaluated at most once, no matter how many times we try to get the value out of it.
true
The true case of booleans.
unknown
A sealed type for any value in Crochet. Values can be wrapped in `unknown` to pass them around without granting any capabilities. This gives Crochet a stronger gradual-typing guarantee, but at the cost of being practical. Values must be explicitly sealed and unsealed.
unsafe-arbitrary-text
The type of textual values. All textual types descend from [type:unsafe-arbitrary-text]. And it is always to be considered an opaque blob, only operated on through whatever text commands are available, and with representation that's entirely up to the runtime---indeed, the representation may change if the runtime thinks that's more efficient.
untaint
Allows converting untrusted values to trusted values. This type is particularly dangerous. See the [capability:untainting] capability for more details on its danger.
untrusted-text
The type of untrusted pieces of text. This type represents pieces of text that come from outside of a Crochet program, and thus has semantics that cannot be verified. In order to be able to use this value one must first verify its semantics and turn it into a (more restricted) trusted text. As an escape hatch, it's also possible to use the [type:untaint] type to make it trusted without verifying its semantics.
zip-pair
A pair constructed by zipping two elements together.
appendable-sequence
A type has an [trait:appendable-sequence] if it has a [trait:sequence] that allows elements to be added to the beginning or to the end.
arithmetic
A type has an [trait:arithmetic] if it can implement the common arithmetic operations. This generally means you have some kind of number. Common arithmetic laws apply.
boolean-algebra
A type has a [trait:boolean-algebra] if it can implement the common boolean operations (respecting their laws). A proper implementation of [trait:boolean-algebra] requires: * Associativity of `or`: x or (y or z) =:= (x or y) or z * Associativity of `and`: x and (y and z) =:= (x and y) and z * Commutativity of `or`: x or y =:= y or x * Commutativity of `and`: x and y =:= y and x * Distributivity of `or` over `and`: x or (y and z) =:= (x and y) or (x and z) * Idempotence of `or`: x or x =:= x * Idempotence of `and`: x and x =:= x * Absorption: x and (x or y) =:= x x or (x and y) =:= x * Double negation: not (not x) =:= x
bounds
A type has [trait:bounds] if it has [trait:total-ordering] and there are known discrete limits that determine the range of values in the type. Such limits are described by [command:_ lower-bound] and [command:_ upper-bound].
chainable-collection
A type has a [trait:chainable-collection] if it supports [command:_ flat-map: _].
container
A type has a [trait:container] if it's an arbitrary collection of items, for which one can test if an item exists within it.
countable-container
A type has a [trait:countable-container] if it has a [trait:container] with a known, finite number of items.
debug-perspective
The minimal amount of commands that a perspective needs to provide for all of Crochet's debugging tools to work properly. Currently the only requirement is a [command:_ name] command, but more commands may be added in the future.
enumeration
A type has [trait:enumeration] if its values are discretely ordered such that it's possible to always get the immediate next smaller or greater value.
equality
A type has [trait:equality] if it's possible to determine, for any pair of values it can have, if they're equal or not. We assume that equality is "structural". That is, there's an expectation that `A === B` will hold even if `A` and `B` are not the exact same typed data, as long as they can _mean_ the same thing. What "mean the same thing" should stand for is up to each type.
filterable-collection
A type has a [trait:filterable-collection] if it's possible to produce a new collection of the same type that will not contain certain items, as described by a predicate.
finite-sequence
A type has a [trait:finite-sequence] if it has a [trait:sequence] with a known, finite number of elements, such that one may actually reach the end of it by following all of the elements in order.
foldable-collection
A type has a [trait:foldable-collection] if it supports the fold operations.
growable-indexed-sequence
A type has a [growable-indexed-sequence] if it has an [indexed-sequence] where new elements can be inserted or removed, therefore may change the position of existing elements by shifting them around.
indexed-sequence
A type has an [trait:indexed-sequence] if it has a [trait:sequence] where each ordered value can be given an index---its position in the sequence is known. Indexes in Crochet start, conventionally, at 1. However what is an index is up to each specific type implementing this trait.
mappable-collection
A type has a [trait:mappable-collection] if it supports [command:_ map: _].
mapped-container
A type has a [trait:mapped-container] if each item it contains is identified by a key. In other words, a [trait:mapped-container] "maps" (in the mathematical sense) some key to some value. There are no restrictions on whether a key may map to multiple values, or whether a value may be identified by multiple keys; that's up to each specific container.
mergeable-mapped-container
A type has a [trait:mergeable-mapped-container] if it has a [trait:mapped-container] and allows one to merge the mappings of its container with the mappings of another container. What exactly it means to merge the mappings is left to specific types, however it's expected that the resulting container will have the union of the keys of both containers.
modifiable-container
A type has a [trait:modifiable-container] if it has a [trait:container] that allows items to be added or removed from it.
modifiable-indexed-sequence
A type has a [trait:modifiable-indexed-sequence] if it has an [trait:indexed-sequence] that allows elements at particular indexes to change.
modifiable-mapped-container
A type has a [trait:modifiable-mapped-container] if it has a [trait:mapped-container] that allows the mappings within it to be added, removed, or updated.
reversible-sequence
A type has a [reversible-sequence] if it has a [sequence] that allows the ordering to be inverted. This is a weaker form of [sortable-sequence], where the only allowed change is to invert the ordering.
rounding-strategies
A type generally has [trait:rounding-strategies] if it's a fractional type.
sequence
A type has a [trait:sequence] if it contains a series of ordered items.
set-algebra
A type has a [trait:set-algebra] if it supports the common set operations.
sliceable-sequence
A type has a [trait:sliceable-sequence] if it has an [trait:indexed-sequence] that allows one to take a "slice" of it by giving a starting and ending index.
sortable-sequence
A type has a [trait:sortable-sequence] if it has a [trait:sequence] that allows the ordering of the elements within it to be changed.
to-doc-border-style
(no documentation)
to-doc-colour
(no documentation)
to-doc-font-decoration
(no documentation)
to-doc-font-family
(no documentation)
to-doc-font-style
(no documentation)
to-doc-font-weight
(no documentation)
to-doc-unit
The trait of everything that can be made into a doc-unit implicitly
total-ordering
A type has a [trait:total-ordering] if for any pair of values, the operation `A <= B` makes sense. It builds upon [equality] because of that.
zippable-collection
A type has a [trait:zippable-collection] if it supports [command:_ zip: _ with: _].
_ - _ (4 branches)
_ * _ (4 branches)
_ ** _ (2 branches)
_ / _ (4 branches)
_ % _ (4 branches)
_ + _ (4 branches)
_ ++ _ (7 branches)
_ < _ (5 branches)
_ <- _ (1 branches)
_ <= _ (5 branches)
_ =/= _ (4 branches)
_ === _ (21 branches)
_ > _ (5 branches)
_ >= _ (5 branches)
_ absolute (2 branches)
_ add: _ (2 branches)
_ all-true (1 branches)
_ all: _ (5 branches)
_ and _ (4 branches)
_ append: _ (3 branches)
_ apply: _ (10 branches)
_ arity (10 branches)
_ as _ (29 branches)
_ ascii (1 branches)
_ assets (1 branches)
_ at: _ (3 branches)
_ at: _ default: _ (1 branches)
_ at: _ default: _ update: _ (1 branches)
_ at: _ insert-after: _ (1 branches)
_ at: _ insert-before: _ (1 branches)
_ at: _ put: _ (2 branches)
_ at: _ update: _ (1 branches)
_ average (1 branches)
_ background: _ (2 branches)
_ black (1 branches)
_ bold (1 branches)
_ bolder (1 branches)
_ boolean: _ (1 branches)
_ borders: _ (2 branches)
_ bottom: _ (4 branches)
_ bounds: _ (2 branches)
_ box (1 branches)
_ capture (10 branches)
_ ceiling (1 branches)
_ center: _ (2 branches)
_ chunk: _ by-size: _ result: _ (2 branches)
_ chunked-by-size: _ (2 branches)
_ circle (1 branches)
_ clamp-between: _ and: _ (1 branches)
_ code: _ (2 branches)
_ collect-fold-from: _ with: _ (1 branches)
_ collect-fold-right-from: _ with: _ (1 branches)
_ colour: _ (3 branches)
_ combine-right: _ and: _ with: _ (2 branches)
_ combine: _ and: _ with: _ (2 branches)
_ compact-layout: _ (1 branches)
_ compare-to: _ (1 branches)
_ compare: _ and-set: _ (1 branches)
_ complement: _ (2 branches)
_ contains-key: _ (1 branches)
_ contains: _ (4 branches)
_ count (4 branches)
_ crochet-text: _ (1 branches)
_ cycle: _ (2 branches)
_ cycle: _ current: _ (1 branches)
_ dashed (1 branches)
_ decoration: _ (1 branches)
_ defaults (8 branches)
_ description: _ (1 branches)
_ divide-by-with-remainder: _ (2 branches)
_ divided-by: _ (2 branches)
_ dotted (1 branches)
_ drop-while: _ (3 branches)
_ drop: _ (3 branches)
_ eight (1 branches)
_ ellipse (1 branches)
_ empty (6 branches)
_ ends-with: _ (1 branches)
_ entries (1 branches)
_ enumerate (2 branches)
_ equal (1 branches)
_ error: _ (1 branches)
_ expanded-layout: _ (1 branches)
_ family: _ (1 branches)
_ fields: _ (1 branches)
_ fifth (1 branches)
_ fill-colour: _ (1 branches)
_ find-first: _ (1 branches)
_ fired-for: _ (1 branches)
_ first (4 branches)
_ fixed-layout: _ (1 branches)
_ fixed-width: _ height: _ with: _ (1 branches)
_ flat-map: _ (5 branches)
_ flatten-into-plain-text (1 branches)
_ flatten-once (1 branches)
_ flex-column: _ (1 branches)
_ flex-row: _ (1 branches)
_ floor (1 branches)
_ flow: _ (1 branches)
_ fold-from: _ with: _ (7 branches)
_ fold-right-from: _ with: _ (3 branches)
_ fold-right-with: _ (2 branches)
_ fold-with: _ (2 branches)
_ font: _ (2 branches)
_ for: _ (70 branches)
_ for: _ perspective: _ (22 branches)
_ format-text (1 branches)
_ fourth (1 branches)
_ frequencies (1 branches)
_ from-code-points: _ (1 branches)
_ from-enum-integer: _ (10 branches)
_ from-enum-text: _ (10 branches)
_ from-lines: _ (1 branches)
_ from-nullable: _ (2 branches)
_ from: _ (7 branches)
_ from: _ iterate: _ (2 branches)
_ gap: _ (2 branches)
_ greater-than (1 branches)
_ group-by: _ (1 branches)
_ group-by: _ state: _ value: _ (1 branches)
_ height: _ (3 branches)
_ hidden (2 branches)
_ holes (1 branches)
_ horizontally: _ (1 branches)
_ if-needed (1 branches)
_ index (1 branches)
_ index: _ value: _ (1 branches)
_ inherit (5 branches)
_ intersection: _ (2 branches)
_ is-ascii (1 branches)
_ is-between: _ and: _ (1 branches)
_ is-empty (3 branches)
_ is-finite (1 branches)
_ is-forced (1 branches)
_ is-nan (1 branches)
_ is-subset: _ (1 branches)
_ is-superset: _ (1 branches)
_ italic (1 branches)
_ join: _ with: _ (1 branches)
_ keep-if: _ (5 branches)
_ key (1 branches)
_ key: _ value: _ (1 branches)
_ keys (1 branches)
_ last (1 branches)
_ left: _ (4 branches)
_ left: _ right: _ (6 branches)
_ less-than (1 branches)
_ light (1 branches)
_ lighter (1 branches)
_ line (1 branches)
_ lines (1 branches)
_ linked-stream-concat: _ with: _ using: _ (2 branches)
_ list: _ (1 branches)
_ lower-bound (10 branches)
_ make-positioned: _ (2 branches)
_ make-trusted: _ (2 branches)
_ make-untrusted: _ (2 branches)
_ map-error: _ (2 branches)
_ map: _ (7 branches)
_ margin: _ (2 branches)
_ maximum (1 branches)
_ merge: _ (1 branches)
_ message: _ (1 branches)
_ message: _ data: _ (1 branches)
_ message: _ tag: _ (1 branches)
_ message: _ tag: _ data: _ (3 branches)
_ minimum (1 branches)
_ monospace (1 branches)
_ name (3 branches)
_ nan (1 branches)
_ negate (2 branches)
_ negative-infinity (1 branches)
_ ninth (1 branches)
_ no-decoration (1 branches)
_ non-negative-integers (1 branches)
_ none (1 branches)
_ none-true (1 branches)
_ none: _ (1 branches)
_ normal (1 branches)
_ normalise (1 branches)
_ not (2 branches)
_ not-satisfying (1 branches)
_ number: _ (1 branches)
_ ok: _ (1 branches)
_ or _ (4 branches)
_ origin: _ (1 branches)
_ overline (1 branches)
_ pad-end: _ (1 branches)
_ pad-end: _ character: _ (1 branches)
_ pad-start: _ (1 branches)
_ pad-start: _ character: _ (1 branches)
_ padding: _ (2 branches)
_ parse: _ (2 branches)
_ partition-by: _ (1 branches)
_ parts (1 branches)
_ plain-text: _ (2 branches)
_ polygon: _ (1 branches)
_ polyline: _ (1 branches)
_ position: _ (1 branches)
_ positive-infinity (1 branches)
_ positive-integers (1 branches)
_ predecessor (2 branches)
_ prepend: _ (3 branches)
_ product (1 branches)
_ radius: _ (2 branches)
_ read-only (1 branches)
_ reason (1 branches)
_ recover: _ (2 branches)
_ rectangle (1 branches)
_ red: _ green: _ blue: _ (1 branches)
_ red: _ green: _ blue: _ alpha: _ (1 branches)
_ regular (1 branches)
_ remove-at: _ (2 branches)
_ remove-if: _ (1 branches)
_ remove: _ (2 branches)
_ repeat: _ (3 branches)
_ resolve: _ (1 branches)
_ rest (3 branches)
_ reverse (1 branches)
_ right: _ (4 branches)
_ round (1 branches)
_ roundness: _ (1 branches)
_ sans-serif (1 branches)
_ satisfying (1 branches)
_ score (1 branches)
_ scroll-view (1 branches)
_ scroll: _ (2 branches)
_ second (2 branches)
_ secret: _ seal: _ (1 branches)
_ serif (1 branches)
_ seventh (1 branches)
_ sixth (1 branches)
_ size: _ (2 branches)
_ slice-from: _ (1 branches)
_ slice-from: _ to: _ (1 branches)
_ slice-to: _ (1 branches)
_ solid (1 branches)
_ some-true (1 branches)
_ some: _ (1 branches)
_ sort (1 branches)
_ sort-by: _ (1 branches)
_ starts-with: _ (1 branches)
_ static-text (1 branches)
_ strike-through (1 branches)
_ stroke-colour: _ (1 branches)
_ stroke-width: _ (1 branches)
_ style: _ (14 branches)
_ successor (2 branches)
_ sum (1 branches)
_ ta (3 branches)
_ table-header: _ rows: _ (1 branches)
_ table-row: _ (1 branches)
_ take-while: _ (3 branches)
_ take: _ (3 branches)
_ tb (3 branches)
_ tc (2 branches)
_ then: _ (2 branches)
_ third (1 branches)
_ timeline: _ (1 branches)
_ title (1 branches)
_ to-enum-integer (37 branches)
_ to-enum-text (37 branches)
_ to-lower-case (1 branches)
_ to-text (3 branches)
_ to-upper-case (1 branches)
_ to: _ (3 branches)
_ to: _ by: _ (1 branches)
_ top: _ (4 branches)
_ transparent (1 branches)
_ trim (1 branches)
_ trim-end (1 branches)
_ trim-start (1 branches)
_ truncate (1 branches)
_ try-parse: _ (2 branches)
_ typed: _ (1 branches)
_ underline (1 branches)
_ unicode-code-points (1 branches)
_ union: _ (2 branches)
_ unseal: _ (1 branches)
_ unset (2 branches)
_ until: _ (2 branches)
_ until: _ by: _ (1 branches)
_ upper-bound (10 branches)
_ value (6 branches)
_ value-or-default: _ (2 branches)
_ value-or-else: _ (2 branches)
_ value-or-panic: _ (2 branches)
_ value-or-panic: _ data: _ (3 branches)
_ value-or-reason (2 branches)
_ value: _ seal: _ (1 branches)
_ values (2 branches)
_ vertically: _ (1 branches)
_ visible (1 branches)
_ weight: _ (1 branches)
_ white (1 branches)
_ width: _ (4 branches)
_ width: _ colour: _ style: _ (1 branches)
_ width: _ height: _ (1 branches)
_ with-value: _ (1 branches)
_ without-duplicates (1 branches)
_ without-last (1 branches)
_ x: _ (2 branches)
_ x: _ y: _ (2 branches)
_ y: _ (2 branches)
_ zero (2 branches)
_ zip: _ (1 branches)
_ zip: _ with: _ (4 branches)
greater-of: _ and: _ (1 branches)
lesser-of: _ and: _ (1 branches)