Data update

This commit is contained in:
Ingy döt Net 2025-08-11 18:05:26 -07:00
parent 4d5544505c
commit 4924dd0264
3073 changed files with 55820 additions and 4408 deletions

5
.gitignore vendored
View File

@ -1,3 +1,8 @@
/Cache/
/Meta/
/rosettacode.log
/entry
/pick
/random-clojure-task
/.clj-kondo/
/.lsp/

View File

@ -24,10 +24,12 @@ Action!: .action
ActionScript: .as
Acurity Architect: .acurity
Ada: .ada
Adina: .adina
Agda: .agda
Agda2: .agda2
Agena: .agena
AHDL: .ahdl
AIDED NATURAL LANGUAGE: .aided
Aikido: .aikido
Aime: .aime
Algae: .algae
@ -51,6 +53,7 @@ Anyways: .anyways
Apex: .apex
APL: .apl
App Inventor: .app
Apple: .apple
AppleScript: .applescript
Applesoft BASIC: .basic
Application Master: .app
@ -60,6 +63,8 @@ Arbre: .arbre
Arc: .arc
Arendelle: .arendelle
Argile: .argile
Aria: .aria
ArkScript: .ark
ARM Assembly: .arm
ArnoldC: .arnoldc
Arturo: .arturo
@ -138,6 +143,7 @@ C1R: .c1r
C2: .c2
C3: .c3
CafeOBJ: .cafeobj
Calcscript: .calc
Caml: .caml
Casio BASIC: .basic
Cat: .cat
@ -157,6 +163,7 @@ ChucK: .chuck
Cilk++: .cilk++
Cilk: .cilk
Cind: .cind
CJam: .cjam
Clarion: .clarion
Clay: .clay
Clean: .clean
@ -180,6 +187,7 @@ Common Lisp: .lisp
Component Pascal: .pas
Computer/zero Assembly: .0asm
ContextFree: .cf
Convex: .convex
Coq: .coq
Corescript: .core
Cowgol: .cowgol
@ -216,6 +224,7 @@ Draco: .draco
Dragon: .dragon
DreamBerd: .dreamberd
Dt: .dt
DuckDB: .duckdb
DUP: .dup
DWScript: .dw
Dyalect: .dyalect
@ -260,6 +269,7 @@ Evaldraw: .evaldraw
Excel: .excel
Explore: .explore
Extended BrainF***: .ebf
Extended Color BASIC: .basic
Ezhil: .ezhil
F: .f
Factor: .factor
@ -297,6 +307,7 @@ Frink: .frink
FRISC Assembly: .frisc
F Sharp: .fs
FTCBASIC: .basic
FuncSug: .funcsug
FunL: .funl
Furor: .furor
FurryScript: .furryscript
@ -329,6 +340,7 @@ Gnuplot: .gnuplot
Go!: .go
Go: .go
Goaldi: .goaldi
Goboscript: .gobo
Golfscript: .golf
Golo: .golo
Goo: .goo
@ -402,6 +414,7 @@ Julia: .jl
K: .k
Kabap: .kabap
Kamailio Script: .kamailio
Kantalo: .kantalo
KAP: .kap
Kaya: .kaya
Keg: .keg
@ -419,6 +432,7 @@ KQL: .kql
Ksh: .ksh
L++: .l++
LabVIEW: .labview
Labyrinth: .labyrinth
Lambda Prolog: .pro
Lambdatalk: .lambdatalk
Lang: .lang
@ -518,6 +532,7 @@ ML: .ml
ML/I: .mli
MLite: .mlite
MMIX: .mmix
Mn: .mn
Modula-2: .mod2
Modula-3: .mod3
Mojo: .mojo
@ -565,6 +580,7 @@ Nit: .nit
Niue: .niue
Nix: .nix
NLP++: .nlp++
Nom: .num
NOWUT: .nowut
NQP: .nqp
NS-HUBASIC: .basic
@ -581,6 +597,7 @@ Objeck: .objeck
ObjectIcon: .oi
Objective-C: .m
Object Pascal: .pas
Object Pascal Implementations: .pas
OCaml: .ml
Occam: .occam
Octave: .octave
@ -613,6 +630,7 @@ Pare: .pare
PARI/GP: .parigp
Pascal: .pas
PascalABC.NET: .pas
Pascal-P: .pas
PASM: .pasm
PDP-11 Assembly: .pdp11
Pebble: .pebble
@ -630,6 +648,7 @@ Phixmonti: .phixmonti
PHL: .phl
PHP: .php
Picat: .picat
Pico-8: .pico8
PicoLisp: .l
Pict: .pict
Piet: .piet
@ -648,6 +667,7 @@ PL/M: .plm
PL/pgSQL: .sql
PL/SQL: .sql
PLUS: .plus
Pluto: .pluto
PLZ/SYS: .plz
Pointless: .pointless
Polyglot: .polyglot
@ -711,6 +731,7 @@ ReScript: .re
Retro: .retro
Revolution: .rev
REXX: .rexx
Rhombus: .rhombus
Rhope: .rhope
Rhovas: .rhovas
Ring: .ring
@ -812,6 +833,7 @@ SystemVerilog: .v
TailDot: .taildot
Tailspin: .tailspin
TAL: .tal
TAV: .tav
Tbas: .tbas
Tcl: .tcl
TechBASIC: .basic
@ -872,6 +894,7 @@ UserRPL: .rpl
UTFool: .utfool
Uxntal: .uxnatl
V: .v
V (Vlang): .v
Vala: .vala
Vale: .vale
VAX Assembly: .vax
@ -893,7 +916,7 @@ Vorpal: .vorpal
Vox: .vox
VRML: .vrml
VTL-2: .vtl-2
V (Vlang): .v
Vyxal: .vyxal
Waduzitdo: .waduzitdo
Wart: .wart
WDTE: .wdte

View File

@ -0,0 +1 @@
{{stub}}{{language|Ayrch}}

View File

@ -0,0 +1,2 @@
---
from: http://rosettacode.org/wiki/Category:AIDED_NATURAL_LANGUAGE

View File

@ -1 +0,0 @@
../../Task/Factorial/ALGOL-60

View File

@ -0,0 +1 @@
../../Task/Date-manipulation/ALGOL-68

View File

@ -0,0 +1 @@
../../Task/Distribution-of-0-digits-in-factorial-series/ALGOL-68

View File

@ -1 +0,0 @@
../../Task/Factorial/ALGOL-68

View File

@ -0,0 +1 @@
../../Task/Knapsack-problem-Continuous/ALGOL-68

1
Lang/ALGOL-68/Word-wheel Symbolic link
View File

@ -0,0 +1 @@
../../Task/Word-wheel/ALGOL-68

View File

@ -1 +0,0 @@
../../Task/Factorial/ALGOL-W

View File

@ -0,0 +1 @@
../../Task/Knapsack-problem-Continuous/ALGOL-W

View File

@ -0,0 +1 @@
../../Task/AKS-test-for-primes/ANSI-BASIC

View File

@ -0,0 +1 @@
../../Task/Old-Russian-measure-of-length/ANSI-BASIC

View File

@ -0,0 +1 @@
../../Task/Monte-Carlo-methods/APL

View File

@ -4,9 +4,9 @@ The ARM architecture is widely used on mobile phones and tablets. It falls under
===Instruction Size===
Every instruction that the ARM can execute is 32 bits. While other processors can have variable length instructions, the ARM does not. This means that the ARM doesn't need to parse where an instruction begins and ends, which makes it run very fast. What you might not expect is that this 32-bit instruction size includes both the actual instruction and the operands! Let's take a look at a [[Z80 Assembly]] instruction and compare it to an ARM instruction.
<lang z80>LD HL,&8040 ;bytecode is 0x21 0x40 0x80</lang>
<syntaxhighlight lang="z80">LD HL,&8040 ;bytecode is 0x21 0x40 0x80</syntaxhighlight>
<lang ARM Assembly>mov r4,#0x04000000 ;bytecode is 0xE3A04301</lang>
<syntaxhighlight lang="arm">mov r4,#0x04000000 ;bytecode is 0xE3A04301</syntaxhighlight>
So where did the <code>0x04000000</code> go? It's actually been compressed and fit within those 4 bytes you saw earlier. The ARM is very good at decompressing it, since it's been shrunk to an 8-bit number that can be rotated by an even number of bits. Unfortunately, this compression method is a double-edged sword - some 32-bit numbers can't be compressed this way, and thus many instructions can't work with them!
@ -18,72 +18,73 @@ Registers are much more flexible than immediate operands. Unlike immediate opera
Getting an address in a register can be achieved with the <code>MOV</code> command, but there are limitations to that which will be explained in detail later. It's more reliable to use <code>ADR</code> which loads a nearby address into a register. This address has to be within a certain distance from the current program counter or it can't be loaded, so it's not a reliable way to load from the heap on many machines. It's mostly intended for loading from nearby read-only data, such as text strings or stored immediates (more on that later). When you type <code>ADR R0,LABEL</code>, the assembler will convert this to <code>MOV R0,PC,#N</code>, where N is the difference between the current program counter value and the label you specified.
<code>LDR</code> can be used in a similar fashion to <code>ADR</code> but there is a subtle distinction between the two. Assume that the section below is assembled starting at memory address <code>0x04000000</code>:
<lang ARM Assembly>DataBlock:
<syntaxhighlight lang="arm">DataBlock:
.long 0xDEADBEEF ;VASM uses .long for 32-bit data and .word for 16-bit data. Your assembler will probably use .word for 32 bit and
.long 0xFFFFFFFF ; .hword for 16-bit.
MyCode:
adr r0, DataBlock ;loads the value 0x04000000 into R0
ldr r1, DataBlock ;loads the value 0xDEADBEEF into R1
adr r2, DataBlock+4 ;loads the value 0x04000004 into R2
ldr r3, DataBlock+4 ;loads the value 0xFFFFFFFF into R3</lang>
ldr r3, DataBlock+4 ;loads the value 0xFFFFFFFF into R3
</syntaxhighlight>
As you can see, <code>ADR</code> only gives you the memory location of a value in memory, where <code>LDR</code> loads ''from'' that memory location.
===Data Addressing using LDR and STR===
Unlike its "cousin," the Motorola 68000 (which isn't really related but has a somewhat similar design), the ARM cannot directly write immediate values to memory. Those values must be contained in registers first. Unlike the 68000, the ARM has no "address registers." Rather, enclosing a register name in square brackets turns its value into a reference to a memory location. You'll need to load that memory location's numeric "value" as a constant first. Then you can read from it with <code>LDR</code> and write to it with <code>STR</code>. Not only can you read from a given address, you can also adjust how you read from it, and what you do before or after the read.
<lang ARM Assembly>RAM_ADDRESS:
<syntaxhighlight lang="arm">RAM_ADDRESS:
.long 0 ;for simplicity we'll assume that this can actually be written to. Represents a placeholder for 32-bit data.
;Your assembler's syntax may be different.
.long 0 ;another placeholder for 32-bit data
MyCode:
adr R2,RAM_Address ;get the address of a nearby place to store values.
MOV R0,#0x12345678 ;the value to store.
STR R0,[R2] ;store 0x12345678 into the first 32-bit slot.</lang>
STR R0,[R2] ;store 0x12345678 into the first 32-bit slot.
</syntaxhighlight>
This is the basic way to store into memory, but there are other options, such as offsetting and post-increment.
<lang ARM Assembly>RAM_ADDRESS:
<syntaxhighlight lang="arm">RAM_ADDRESS:
.long 0
.long 0 ;we'll store here this time.
MyCode:
adr R2,RAM_Address ;point R2 to the first storage slot
MOV R0,#0x12345678
STR R0,[R2,#4] ;store into the SECOND slot. R2 still points to the first slot - the #4 is added to R2 only temporarily.</lang>
STR R0,[R2,#4] ;store into the SECOND slot. R2 still points to the first slot - the #4 is added to R2 only temporarily.
</syntaxhighlight>
There's a limit on the size of an immediate value used to offset when loading/storing. You can also use a register as an offset, whose value will be added to the address.
<lang ARM Assembly>RAM_AREA:
<syntaxhighlight lang="arm">RAM_AREA:
.space 64,0 ;64 bytes of ram
;assume that R2 contains the address of "RAM_AREA"
MyCode:
MOV R0,#0x12345678
MOV R1,#20
STR R0,[R2,R1] ;equivalent of "STR R0,[R2,#20]"</lang>
STR R0,[R2,R1] ;equivalent of "STR R0,[R2,#20]"
</syntaxhighlight>
Now let's say you wanted to actually alter the pointer to R2, so that it remains pointing to where you offset it to after the store or load. That's an option you have - all you have to do is type "!" after the brackets. This is called "pre-increment" or "pre-indexing."
<lang ARM Assembly>RAM_ADDRESS:
<syntaxhighlight lang="arm">RAM_ADDRESS:
.long 0
.long 0 ;we'll store here this time, and we want R2 to still be pointing here after we write to it.
MyCode:
adr R2,RAM_Address ;point R2 to the first storage slot
MOV R0,#0x12345678
STR R0,[R2,#4]! ;store into the SECOND slot. R2 also points to the second slot now, even after this instruction has concluded.</lang>
STR R0,[R2,#4]! ;store into the SECOND slot. R2 also points to the second slot now, even after this instruction has concluded.
</syntaxhighlight>
Here, the offset is performed ''before'' the storage operation. What if you want to offset afterwards? That would be useful for reading in a data stream. Good news - you can do that simply by having the offset value or register '''outside''' the brackets. This is called "post-increment" or "post-indexing." Unlike pre-indexing, these changes to the pointer are not temporary.
<lang ARM Assembly>LDR R0,[R1],#4 ;load the 32-bit value stored at memory location R1 into R0, THEN add 4 to R1. This offset remains even after this
; instruction is finished.</lang>
<syntaxhighlight lang="arm">LDR R0,[R1],#4 ;load the 32-bit value stored at memory location R1 into R0, THEN add 4 to R1. This offset remains even after this
; instruction is finished.
</syntaxhighlight>
===Barrel Shifter===
The ARM can add a bit shift or rotate to one of its operands at no additional cost to execution time or bytecode. If the operand being shifted is a register, the value of that register is not actually changed. The shift or rotate only applies during that instruction.

View File

@ -0,0 +1 @@
../../Task/Old-Russian-measure-of-length/ASIC

View File

@ -1 +0,0 @@
../../Task/100-doors/AWK

1
Lang/AWK/Factorial-primes Symbolic link
View File

@ -0,0 +1 @@
../../Task/Factorial-primes/AWK

View File

@ -0,0 +1 @@
../../Task/Soloways-recurring-rainfall/AWK

View File

@ -0,0 +1 @@
../../Task/Almkvist-Giullera-formula-for-pi/Ada

1
Lang/Ada/Biorhythms Symbolic link
View File

@ -0,0 +1 @@
../../Task/Biorhythms/Ada

View File

@ -0,0 +1 @@
../../Task/Boyer-Moore-string-search/Ada

View File

@ -0,0 +1 @@
../../Task/Calkin-Wilf-sequence/Ada

View File

@ -0,0 +1 @@
../../Task/Camel-case-and-snake-case/Ada

1
Lang/Ada/Canonicalize-CIDR Symbolic link
View File

@ -0,0 +1 @@
../../Task/Canonicalize-CIDR/Ada

1
Lang/Ada/Deepcopy Symbolic link
View File

@ -0,0 +1 @@
../../Task/Deepcopy/Ada

1
Lang/Ada/Factorions Symbolic link
View File

@ -0,0 +1 @@
../../Task/Factorions/Ada

View File

@ -0,0 +1 @@
../../Task/Find-duplicate-files/Ada

1
Lang/Ada/Harmonic-series Symbolic link
View File

@ -0,0 +1 @@
../../Task/Harmonic-series/Ada

View File

@ -0,0 +1 @@
../../Task/Knapsack-problem-Bounded/Ada

View File

@ -0,0 +1 @@
../../Task/Levenshtein-distance-Alignment/Ada

View File

@ -0,0 +1 @@
../../Task/Long-literals-with-continuations/Ada

View File

@ -0,0 +1 @@
../../Task/Longest-increasing-subsequence/Ada

1
Lang/Ada/Machine-code Symbolic link
View File

@ -0,0 +1 @@
../../Task/Machine-code/Ada

View File

@ -0,0 +1 @@
../../Task/Minimal-steps-down-to-1/Ada

1
Lang/Ada/Naming-conventions Symbolic link
View File

@ -0,0 +1 @@
../../Task/Naming-conventions/Ada

View File

@ -0,0 +1 @@
../../Task/Read-a-file-character-by-character-UTF8/Ada

1
Lang/Ada/Test-integerness Symbolic link
View File

@ -0,0 +1 @@
../../Task/Test-integerness/Ada

1
Lang/Ada/Total-circles-area Symbolic link
View File

@ -0,0 +1 @@
../../Task/Total-circles-area/Ada

1
Lang/Ada/Twos-complement Symbolic link
View File

@ -0,0 +1 @@
../../Task/Twos-complement/Ada

1
Lang/Ada/Vector Symbolic link
View File

@ -0,0 +1 @@
../../Task/Vector/Ada

13
Lang/Adina/00-LANG.txt Normal file
View File

@ -0,0 +1,13 @@
{{language|Adina}}
Adina is a programming language, based on Racket and russian language. Unlike Racket it uses indent and operators precedence to describe program syntax. It may be used in english, because all Racket libraries are accessible. One should add "english()" in first string to use standard racket libraries.
Адина, это язык программирования, основанный на Racket и русском языке. В отличие от Racket вместо скобок для синтаксической
структуры используются отступы и бинарные операторы. Также сделан доступ через квадратные скобки к элементам коллекции и через фигурные к методам объектов.
Документация по адресу: https://docs.racket-lang.org/russian-lang/
==See Also==
* [[Racket]]
==TODO==
[[Tasks not implemented in Adina]]

2
Lang/Adina/00-META.yaml Normal file
View File

@ -0,0 +1,2 @@
---
from: http://rosettacode.org/wiki/Category:Adina

1
Lang/Adina/100-doors Symbolic link
View File

@ -0,0 +1 @@
../../Task/100-doors/Adina

1
Lang/Adina/Even-or-odd Symbolic link
View File

@ -0,0 +1 @@
../../Task/Even-or-odd/Adina

1
Lang/Adina/Hello-world-Text Symbolic link
View File

@ -0,0 +1 @@
../../Task/Hello-world-Text/Adina

1
Lang/Adina/Loops-For Symbolic link
View File

@ -0,0 +1 @@
../../Task/Loops-For/Adina

1
Lang/Adina/Tree-traversal Symbolic link
View File

@ -0,0 +1 @@
../../Task/Tree-traversal/Adina

View File

@ -21,4 +21,6 @@ The syntax looks like very simplified [[ALGOL 68]] with elements taken from [[Lu
Agena is based on the [[ANSI]] [[C]] source code of [[Lua]], a popular and widely used Open Source programming language.
== See Also ==
[[ALGOL 68]]
[[ALGOL 68]]<br/>
[[Lua]]<br/>
[[SQL]]

View File

@ -0,0 +1 @@
../../Task/AKS-test-for-primes/Agena

View File

@ -0,0 +1 @@
../../Task/Abundant-deficient-and-perfect-number-classifications/Agena

View File

@ -0,0 +1 @@
../../Task/Abundant-odd-numbers/Agena

View File

@ -0,0 +1 @@
../../Task/Arbitrary-precision-integers-included-/Agena

View File

@ -0,0 +1 @@
../../Task/Attractive-numbers/Agena

1
Lang/Agena/Disarium-numbers Symbolic link
View File

@ -0,0 +1 @@
../../Task/Disarium-numbers/Agena

1
Lang/Agena/Factorial Symbolic link
View File

@ -0,0 +1 @@
../../Task/Factorial/Agena

1
Lang/Agena/Factorial-primes Symbolic link
View File

@ -0,0 +1 @@
../../Task/Factorial-primes/Agena

1
Lang/Agena/Giuga-numbers Symbolic link
View File

@ -0,0 +1 @@
../../Task/Giuga-numbers/Agena

1
Lang/Agena/Goldbachs-comet Symbolic link
View File

@ -0,0 +1 @@
../../Task/Goldbachs-comet/Agena

View File

@ -0,0 +1 @@
../../Task/Horners-rule-for-polynomial-evaluation/Agena

1
Lang/Agena/Humble-numbers Symbolic link
View File

@ -0,0 +1 @@
../../Task/Humble-numbers/Agena

1
Lang/Agena/JSON Symbolic link
View File

@ -0,0 +1 @@
../../Task/JSON/Agena

View File

@ -0,0 +1 @@
../../Task/Jacobsthal-numbers/Agena

View File

@ -0,0 +1 @@
../../Task/Jewels-and-stones/Agena

1
Lang/Agena/Kaprekar-numbers Symbolic link
View File

@ -0,0 +1 @@
../../Task/Kaprekar-numbers/Agena

View File

@ -0,0 +1 @@
../../Task/Mian-Chowla-sequence/Agena

View File

@ -0,0 +1 @@
../../Task/Pernicious-numbers/Agena

1
Lang/Agena/Pisano-period Symbolic link
View File

@ -0,0 +1 @@
../../Task/Pisano-period/Agena

View File

@ -0,0 +1 @@
../../Task/Primality-by-trial-division/Agena

View File

@ -0,0 +1 @@
../../Task/Sequence-of-primes-by-trial-division/Agena

View File

@ -0,0 +1 @@
../../Task/Smarandache-prime-digital-sequence/Agena

View File

@ -0,0 +1 @@
../../Task/Soloways-recurring-rainfall/Agena

View File

@ -0,0 +1 @@
../../Task/Sum-of-elements-below-main-diagonal-of-matrix/Agena

1
Lang/Agena/Time-a-function Symbolic link
View File

@ -0,0 +1 @@
../../Task/Time-a-function/Agena

1
Lang/Agena/Totient-function Symbolic link
View File

@ -0,0 +1 @@
../../Task/Totient-function/Agena

View File

@ -0,0 +1 @@
../../Task/Unprimeable-numbers/Agena

1
Lang/Agena/Van-Eck-sequence Symbolic link
View File

@ -0,0 +1 @@
../../Task/Van-Eck-sequence/Agena

View File

@ -0,0 +1 @@
../../Task/Van-der-Corput-sequence/Agena

1
Lang/Agena/Wagstaff-primes Symbolic link
View File

@ -0,0 +1 @@
../../Task/Wagstaff-primes/Agena

1
Lang/Agena/Wieferich-primes Symbolic link
View File

@ -0,0 +1 @@
../../Task/Wieferich-primes/Agena

View File

@ -0,0 +1 @@
../../Task/Yellowstone-sequence/Agena

12
Lang/Apple/00-LANG.txt Normal file
View File

@ -0,0 +1,12 @@
{{language|Apple
|exec=Compiled
|safety=safe
|checking=static
|strength=strong
|site=https://github.com/vmchale/apple}}
{{language programming paradigm|functional}}
The Apple Array System is a JIT-compiler for a statically typed functional language specialized on arrays.
It is expression-oriented (it has no imports); it is meant to be called from other languages.

2
Lang/Apple/00-META.yaml Normal file
View File

@ -0,0 +1,2 @@
---
from: http://rosettacode.org/wiki/Category:Apple

View File

@ -0,0 +1 @@
../../Task/Averages-Arithmetic-mean/Apple

View File

@ -0,0 +1 @@
../../Task/Averages-Pythagorean-means/Apple

1
Lang/Apple/Catamorphism Symbolic link
View File

@ -0,0 +1 @@
../../Task/Catamorphism/Apple

1
Lang/Apple/Dot-product Symbolic link
View File

@ -0,0 +1 @@
../../Task/Dot-product/Apple

1
Lang/Apple/Factorial Symbolic link
View File

@ -0,0 +1 @@
../../Task/Factorial/Apple

View File

@ -0,0 +1 @@
../../Task/Factors-of-an-integer/Apple

1
Lang/Apple/Filter Symbolic link
View File

@ -0,0 +1 @@
../../Task/Filter/Apple

View File

@ -0,0 +1 @@
../../Task/ISBN13-check-digit/Apple

15
Lang/Aria/00-LANG.txt Normal file
View File

@ -0,0 +1,15 @@
{{language
|exec=interpreted
|site=https://egranata.github.io/aria/
}}
Aria is a modern, dynamic scripting language. It is meant to be a “sweet spot” language, easy to pick-up and enjoyable to use.
It provides a familiar C-style syntax, with a feature set inspired by well-beloved languages such as Python and Rust. It comes with little ceremony and a focus on getting stuff done.
Aria programs are written as .aria files and passed to the Aria virtual machine, which compiles them down to bytecode and executes them.
The Aria interpreter is written in Rust, 2024 edition.
==Todo==
[[Tasks_not_implemented_in_Aria]]

2
Lang/Aria/00-META.yaml Normal file
View File

@ -0,0 +1,2 @@
---
from: http://rosettacode.org/wiki/Category:Aria

View File

@ -0,0 +1 @@
../../Task/99-bottles-of-beer/Aria

1
Lang/Aria/Hello-world-Text Symbolic link
View File

@ -0,0 +1 @@
../../Task/Hello-world-Text/Aria

View File

@ -0,0 +1,43 @@
{{language|ArkScript
|exec=bytecode
|site=https://arkscript-lang.dev
|gc=no
|parampass=value
|strength=strong
|checking=dynamic
|tags=arkscript}}
ArkScript is a small, fast, functional and scripting language for C++ projects, inspired by [[Lua]], [[Lisp]], and [[Python]].
The language has been designed to be concise, with only 9 keywords, and two rules to parse it:
# the first node after an opening paren <tt>(</tt> is a "function", the following nodes are arguments
# the only exception to the previous rule is when defining the argument list of a function
<syntaxhighlight lang="arkscript">
(let foo 5)
(let bar "hello world!")
(let egg (fun (a b c)
(+ a (* b c))))
(print (egg 1 foo bar))
</syntaxhighlight>
The language is also
* small: the core fit under 8000 lines of code ; also small in terms of keywords (only 9)
* a scripting language: very easy to embed it in your projects. Registering your own functions in the language is made easy
* portable: a unique bytecode which can be run everywhere the virtual machine is
* a functional language: every parameter is passed by value, everything is immutable unless specified
* powerful: provides closures and explicit capture
* promoting functionalities before performances: expressiveness often brings more productivity, though performances aren't left behind
* a Lisp inspired language, with fewer parentheses: [...] is expanded to (list ...) and {} to (begin ...)
* extensible: supports C++ module to use it in the language, adding functionalities
===Implementation===
The compiler and VM are implemented in [[C++]] 20. For more details, see [https://github.com/ArkScript-lang/Ark ArkScript GitHub].
===License===
ArkScript is released under the Mozilla Public License 2.0.
===Todo===
[[Tasks not implemented in ArkScript]]

View File

@ -0,0 +1,2 @@
---
from: http://rosettacode.org/wiki/Category:ArkScript

1
Lang/ArkScript/100-doors Symbolic link
View File

@ -0,0 +1 @@
../../Task/100-doors/ArkScript

View File

@ -0,0 +1 @@
../../Task/99-bottles-of-beer/ArkScript

Some files were not shown because too many files have changed in this diff Show More