-
Notifications
You must be signed in to change notification settings - Fork 4
Introducing functions
In this page we will look at the basics of functions.
Here are some examples, in examples/func1.ch.
def
square (x) : x * x
parity (x) :
x % 0 == 0 : "even"
else : "odd"
Some things to note:
The body of a Charm function consists of a single expression to be evaluated. There is no return keyword because all a Charm function ever does is return something, so it would be superfluous to have a keyword to point this out.
In Charm, a : precedes the body of a code block, which may be on the same line as the : so long as it fits into one line. Otherwise the block must also be marked off by indentation, as in the parity function.
Within the body of a function : also implicitly means "if the condition on the left, then the thing on the right", because there is no other reason why one would want a code block in a function.
Functions are defined in the def section of the script.
🧿 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