-
Notifications
You must be signed in to change notification settings - Fork 6
Imports and libraries
In the section we look at the way that imports and modules work in Pipefish.
Imports are introduced by the import
headword.
A line in the import
section can only have two forms: either simply a path to a library, expressed as a string:
import
"filepath/foo.pf"
In this case the functions in the library will be in the foo
namespace, e.g. foo.qux
.
Alternatively, it can be a pair consisting of a preferred namespace and the path:
import
foolib::"filepath/foo.pf" // Has namespace 'foolib'.
NULL::"lib/fmt.pf" // Has no separate namespace.
Use of NULL
as a namespace means that the imported file isn't put into a separate namespace.
An imported script can just be a static library. However, if it has a var
section then the variables will be initialized; and if the script has an init
command (as discussed later in the manual), it will be executed.
Namespaces can be chained: if your script imports foo
which imports bar
which has a function zort
, then your script can call foo.bar.zort
.
Producing the standard libraries is a matter of wrapping Pipefish functions around Go functions, and so can be done easily and even automatically; and the developers at Google have already tested, optimized, and documented the library functions for us.
A world
library for performing basic IO, file handling, and SQL interop, is imported into every script automatically.
Besides world
, this version of Pipefish comes with seven standard libraries (with more to come!): fmt
, math
, path
, regexp
, strings
, time
, and unicode
. These are imported with their bare name rather than a filepath.
The following pages are in this section:
🧿 Pipefish is distributed under the MIT license. Please steal my code and ideas.