-
Notifications
You must be signed in to change notification settings - Fork 5
The type system and built‐in functions
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.
- Simple types
- Container types
- With and without
- Structs
- Enums
- Abstract types
- Interface types, part 1
- Clone types
- Validation and parameterized types
- Type system diagram
- Type conversion and reflection
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
.
🧿 Pipefish is distributed under the MIT license. Please steal my code and ideas.