-
Notifications
You must be signed in to change notification settings - Fork 3
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. There are a number of interesting proposals for adding to the type system, but it will take more use of the language to see if any of these would be worth implementing. In the meantime the following pages are a complete summary:
- Simple types
- Container types
- Structs
- Enums
- Abstract types
- Interface types, part 1
- Clone 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.
- Getting started
- Language basics
- The type system and built-in functions
- Functional Pipefish
- Encapsulation
- Imperative Pipefish
-
Imports and libraries
- The crypto/aes library
- The crypto/bcrypt library
- The crypto/rand library
- The crypto/rsa library
- The crypto/sha_256 library
- The crypto/sha_512 library
- The database/sql library
- The encoding/base_32 library
- The encoding/base_64 library
- The encoding/csv library
- The encoding/json library
- The files library
- The fmt library
- The html library
- The image library
- The image/bmp library
- The image/color library
- The image/jpeg library
- The image/png library
- The lists library
- The markdown library
- The math library
- The math/big library
- The math/cmplx library
- The math/rand library
- The net/http library
- The net/mail library
- The net/smtp library
- The net/url library
- The os/exec library
- The path library
- The path/filepath library
- The reflect library
- The regexp library
- The strconv library
- The strings library
- The terminal library
- The time library
- The unicode library
- Advanced Pipefish
- Developing in Pipefish
- Deployment
- Appendices