Skip to content

The type system and built‐in functions

tim-hardcastle edited this page Aug 9, 2025 · 4 revisions

In this section of the manual we will introduce Pipefish's type system, and the built-in functions and operations that go with the built-in types.

You may find it a little different from what you are used to, because it represents an attempt to squeeze the most use out of a dynamic type system; so far as I know its approach is paralleled only by Julia. However, the type system is very simple, and almost entirely flat. There is no inheritance. There are, indeed, no objects: a Pipefish struct is just an immutable container for data.

The following pages are in this section.

Note on equality and comparison

The comparison operators == and != are automatically implemented for every Pipefish type except func and error.

All comparison in Pipefish is by-value: structs with identical fields are equal, lists with the same elements in the same order are equal, etc.

It is an error to compare to elements of different types. "walrus" == 42 gives an error and not false.

Clone this wiki locally