Home. Documentation for Goal. Last update: 2024-11-13.

1 Introduction #

Goal is an embeddable array programming language with a bytecode interpreter, written in Go. The command line interpreter can execute scripts or run in interactive mode. For installation, see the README.md file in the project’s repository. You can also try Goal on the browser. You might be interested in the EPUB version of the present documentation. Moreover, you can follow these README instructions to build the documentation from sources and deploy it locally to avoid depending on a network connection.

Like in most array programming languages, Goal’s builtins vectorize operations on immutable arrays and encourage a functional style for control and data transformations, supported by a simple dynamic type system and mutable variables (but no mutable values).

You can read about Goal’s origins and influences in the Origins section of the FAQ. If you already know about the K language, you might want to read the Differences from K chapter.

Goal’s main distinctive features among array languages can be summarized as follows:

Goal also has support for standard features like I/O, CSV, JSON, and time handling.

Goal shines the most in common scripting tasks, like handling columnar data or text processing. Goal is also suitable for exploratory programming.

The next chapter gives a tour of Goal’s features and showcases the language in a couple of practical examples.