I'm working on modernizing Rosetta Code's infrastructure. Starting with communications. Please accept this time-limited open invite to RC's Slack.. --Michael Mol (talk) 20:59, 30 May 2020 (UTC)


From Rosetta Code
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.


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> .... An assignment is nothing but a labeled statement. LABEL: <statement>

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]

There are 3 types of statements.

  • Simple statements, that work as a function call in the form of ID <expressions>
  • Expressions (Yes, 1+2 is also a valid statement)
  • Labeled statements (see: assignments) like a: 2

Pro tip: Do you want to use the result of a statement as part of an expression? Just enclose the function call in square brackets [...] E.g.: print [reverse #(1 2 3)]


The main Arturo interpreter is written in the Nim language.


Arturo is released under the MIT/X11 License.



Pages in category "Arturo"

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