Category:Arturo: Difference between revisions
Drkameleon (talk | contribs) (Created page with "{{stub}}{{language|Arturo}}") |
Drkameleon (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
{{language|Arturo |
|||
|exec=interpreted |
|||
|strength=strong |
|||
|safety=safe |
|||
|checking=dynamic |
|||
|parampass=value |
|||
|site=http://arturo-lang.io |
|||
|tags=arturo |
|||
|gc=yes}} |
|||
'''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=== |
|||
It is built on some very simple and straightforward principles: |
|||
====Everything is a simple statement==== |
|||
There are no "special" language constructs (''even <code>if</code> is nothing but a simple statement''). Everything you see is a statement in the form <code>ID <expression> <expression> <expression> ...</code> |
|||
====Code is data - and data is code==== |
|||
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==== |
|||
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==== |
|||
Functions - or blocks of statements enclosed in <code>{}</code> - 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==== |
|||
As already mentioned, everything is a statement of the form `ID <expressions>`. So, how does this work? |
|||
* Is it the first time you are declaring this symbol? Then, the right-hand value will be assigned. |
|||
* Is it not the first time? Then again, the right-hand value will be assigned. |
|||
* Do you want to call a function you have declared, by name? Just prefix it with an exclamation mark. E.g.: <code>!myFunc "some arg" "another arg"</code> |
|||
* Do you want to use the result of a function call as part of an expression? Just enclose the function call in <code>$(...)</code> E.g.: <code>print $(reverse #(1 2 3))</code> |
|||
===Implementation=== |
|||
The main Arturo interpreter is written in the [[D]] language. |
|||
===License=== |
|||
Arturo is released under the [[MIT/X11 License]]. |
|||
===Todo=== |
|||
[[Reports:Tasks_not_implemented_in_Arturo]] |
|||
{{language programming paradigm|Imperative}} |
|||
{{language programming paradigm|Object-oriented}} |
|||
{{language programming paradigm|Functional}} |
|||
{{language programming paradigm|Reflective}} |
Revision as of 06:42, 2 October 2019
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: |
|
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
It is built on some very simple and straightforward principles:
Everything is a simple statement
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
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
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
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
As already mentioned, everything is a statement of the form `ID <expressions>`. So, how does this work?
- Is it the first time you are declaring this symbol? Then, the right-hand value will be assigned.
- Is it not the first time? Then again, the right-hand value will be assigned.
- Do you want to call a function you have declared, by name? Just prefix it with an exclamation mark. E.g.:
!myFunc "some arg" "another arg"
- 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
The main Arturo interpreter is written in the D language.
License
Arturo is released under the MIT/X11 License.
Todo
Pages in category "Arturo"
The following 200 pages are in this category, out of 779 total.
(previous page) (next page)A
- A+B
- ABC problem
- ABC words
- Abundant odd numbers
- Abundant, deficient and perfect number classifications
- Ackermann function
- Add a variable to a class instance at runtime
- Additive primes
- Address of a variable
- Align columns
- Almost prime
- Alternade words
- Amicable pairs
- Anagrams
- Anagrams/Deranged anagrams
- Angle difference between two bearings
- Anonymous recursion
- Anti-primes
- Append numbers at same position in strings
- Apply a callback to an array
- Arbitrary-precision integers (included)
- Arithmetic numbers
- Arithmetic-geometric mean
- Arithmetic/Complex
- Arithmetic/Integer
- Arithmetic/Rational
- Array concatenation
- Array length
- Arrays
- Ascending primes
- Assertions
- Associative array/Creation
- Associative array/Iteration
- Associative array/Merging
- Attractive numbers
- Averages/Arithmetic mean
- Averages/Median
- Averages/Mode
- Averages/Pythagorean means
- Averages/Root mean square
B
- Babbage problem
- Bacon cipher
- Balanced brackets
- Base 16 numbers needing a to f
- Base64 decode data
- Bell numbers
- Benford's law
- Best shuffle
- Binary digits
- Binary search
- Binary strings
- Binomial transform
- Bioinformatics/base count
- Bioinformatics/Sequence mutation
- Bioinformatics/Subsequence
- Bitwise operations
- Boolean values
- Brazilian numbers
- Brilliant numbers
- Bulls and cows
C
- Caesar cipher
- Calculating the value of e
- Calkin-Wilf sequence
- Call a foreign-language function
- Call a function
- Call a function in a shared library
- Calmo numbers
- CalmoSoft primes
- Camel case and snake case
- Cantor set
- Carmichael 3 strong pseudoprimes
- Cartesian product of two or more lists
- Case-sensitivity of identifiers
- Casting out nines
- Catalan numbers
- Catalan numbers/Pascal's triangle
- Catamorphism
- Change e letters to i in words
- Changeable words
- Character codes
- Check that file exists
- Cheryl's birthday
- Chinese remainder theorem
- Cholesky decomposition
- Chowla numbers
- Circles of given radius through two points
- Circular primes
- Classes
- Closures/Value capture
- Code Golf: Code Golf
- Collect and sort square numbers in ascending order from three lists
- Collections
- Combinations
- Combinations and permutations
- Combinations with repetitions
- Comma quibbling
- Command-line arguments
- Comments
- Common list elements
- Common sorted list
- Compare a list of strings
- Compare length of two strings
- Compile-time calculation
- Composite numbers k with no single digit factors whose factors are all substrings of k
- Compound data type
- Concatenate two primes is also prime
- Conditional structures
- Conjugate a Latin verb
- Continued fraction
- Convert seconds to compound duration
- Convex hull
- Coprime triplets
- Coprimes
- Copy a string
- Count how many vowels and consonants occur in a string
- Count in factors
- Count in octal
- Count occurrences of a substring
- Count the coins
- Cousin primes
- CRC-32
- Create a file
- Create a file on magnetic tape
- Create a two-dimensional array at runtime
- Create an HTML table
- CSV data manipulation
- CSV to HTML translation
- Cuban primes
- Cubic special primes
- Cullen and Woodall numbers
- Cumulative standard deviation
- Currying
- Curzon numbers
- CUSIP
- Cyclops numbers
D
- Damm algorithm
- Date format
- Date manipulation
- Day of the week
- Days between dates
- Deceptive numbers
- Deepcopy
- Delete a file
- Deming's funnel
- Department numbers
- Descending primes
- Detect division by zero
- Determinant and permanent
- Determine if a string has all the same characters
- Determine if a string has all unique characters
- Determine if a string is collapsible
- Determine if a string is numeric
- Digit fifth powers
- Digital root
- Dijkstra's algorithm
- Disarium numbers
- Display a linear combination
- Distinct power numbers
- Distribution of 0 digits in factorial series
- Documentation
- Dot product
- Double Twin Primes
- Draw a cuboid
- Duffinian numbers
- Dynamic variable names
E
- Egyptian division
- Emirp primes
- Empty directory
- Empty program
- Empty string
- Entropy
- Enumerations
- Environment variables
- Equilibrium index
- Erdős-Nicolas numbers
- Erdős-primes
- Esthetic numbers
- Ethiopian multiplication
- Euler method
- Euler's sum of powers conjecture
- Evaluate binomial coefficients
- Even or odd
- Evolutionary algorithm
- Execute a system command
- Execute Brain****
- Execute HQ9+
- Exponentiation operator
- Exponentiation order
- Extend your language
- Extra primes