Category:Arturo

From Rosetta Code
Language
Arturo
This programming language may be used to instruct a computer to perform a task.
Official website
Execution method: Interpreted
Garbage collected: Yes
Parameter passing methods: By value
Type safety: Safe
Type strength: Strong
Type checking: Dynamic
Lang tag(s): arturo
See Also:


Listed below are all of the tasks on Rosetta Code which have been solved using Arturo.
Your Help Needed
If you know Arturo, please write code for some of the tasks not implemented in Arturo.

Arturo is a general-purpose, multi-paradigm language that aims to be simple, modern and powerful, vaguely inspired by various other ones - including but not limited to Ruby, Haskell, D, SDL (Simple Declarative Language), Tcl and Lisp.

Principles[edit]

It is built on some very simple and straightforward principles:

Everything is a simple statement[edit]

There are no "special" language constructs (even if is nothing but a simple statement). Everything you see is a statement in the form ID <expression> <expression> <expression> ...

Code is data - and data is code[edit]

Arturo can be used both as a data-interchange format and a programming language. Basically all data structures are valid code and all code can be represented as a data structure. Think of it as SDL/Json/YAML/XML combined with the power of Lisp - but without the... sea of opening and closing parentheses.

Each statement returns a value[edit]

Whether what you would consider a "function" or any other statement, it will return a value. If it's a block of code (see: function), the last statement's result will be return - unless specified otherwise.

Functions are first-class citizens[edit]

Functions - or blocks of statements enclosed in {} - can be anything. Assign them to a symbol/variable, pass them around as arguments to function calls, include them as a dictionary key value, or return them from a function. And of course they can be either named or anonymous/lambda.

Uniform syntax[edit]

As already mentioned, everything is a statement of the form `ID <expressions>`. So, how does this work?

  • Is the ID a new or non-function existing symbol? Then, the right-hand value will be assigned to it
  • Is it a function? Then it will be called, with the right-hand values as arguments
  • Do you want to use the result of a function call as part of an expression? Just enclose the function call in $(...) E.g.: print $(reverse #(1 2 3))

Implementation[edit]

The main Arturo interpreter is written in the D language.

License[edit]

Arturo is released under the MIT/X11 License.

Todo[edit]

Reports:Tasks_not_implemented_in_Arturo

Pages in category "Arturo"

The following 106 pages are in this category, out of 106 total.