Category:Wren: Difference between revisions
Now using internal links to modules and added a note about importing them. |
Added link to Wren-iterate module. |
||
Line 67: | Line 67: | ||
| 41 || [[:Category:Wren-iterate|iterate]] || || 42 || [[:Category:Wren-money|money]] |
| 41 || [[:Category:Wren-iterate|iterate]] || || 42 || [[:Category:Wren-money|money]] |
||
|- |
|- |
||
| 43 || [[:Category:Wren-vector|vector]] || || || |
| 43 || [[:Category:Wren-vector|vector]] || || 44 || [[:Category:Wren-ordered|ordered]] |
||
|} |
|} |
||
<br> |
<br> |
Revision as of 10:22, 26 April 2023
This programming language may be used to instruct a computer to perform a task.
Official website |
---|
Execution method: | Interpreted |
---|---|
Garbage collected: | Yes |
Type safety: | Safe |
Type strength: | Strong |
Type expression: | Implicit |
Type checking: | Dynamic |
See Also: |
|
Wren is a lightweight, object-oriented programming language designed to be an easily-embeddable scripting language.
It is under development on GitHub and is fully documented here.
The CLI tool (Wren CLI) has its own repository and is the main focus of examples written for RC. The latest version 0.4.0 is available as a pre-built standalone executable for 64-bit Linux, MacOS and Windows and can be downloaded from here.
Following the migration to Miraheze, RC now uses Pygments (rather than GeSHi) for syntax highlighting and I have written a lexer for Wren which is included in version 2.14.0. However, at the time of writing (January 2023), RC is still using version 2.11.2 and it is not known when this will be updated to the latest version.
In the meantime 'ecmascript', which we currently use for the 'lang' attribute, is supported by virtue of a GeSHi mapping to the 'javascript' lexer and highlights all Wren 0.4.0 keywords except: is, construct and foreign. I suggest we continue to use that until the Wren lexer is available after which we can use the latter for new tasks and when updating existing tasks. A major effort would be needed to update all existing tasks straightaway given that there are almost 1,600 of them as at January 2023.
As a language mainly designed for embedding, Wren's standard library is (of necessity) quite small and I have therefore decided to create some additional modules to assist with writing Rosetta Code tasks so the same code does not have to be written or copy/pasted time and time again thereby bloating a task's script code unnecessarily. The ones written so far are listed below:
No. | Module name | No. | Module name | |
---|---|---|---|---|
1 | fmt | 2 | str | |
3 | sort | 4 | math | |
5 | trait | 6 | seq | |
7 | date | 8 | rat | |
9 | pattern | 10 | big | |
11 | upc | 12 | matrix | |
13 | set | 14 | llist | |
15 | queue | 16 | complex | |
17 | dynamic | 18 | ioutil | |
19 | long | 20 | crypto | |
21 | sound | 22 | polygon | |
23 | srandom | 24 | lsystem | |
25 | turtle | 26 | ellipse | |
27 | check | 28 | array | |
29 | gmp | 30 | ecm | |
31 | sql | 32 | event | |
33 | i64 | 34 | perm | |
35 | linear | 36 | regex | |
37 | maputil | 38 | plot | |
39 | debug | 40 | table | |
41 | iterate | 42 | money | |
43 | vector | 44 | ordered |
To use a class or classes from a module (say fmt), you need to import them into your script with Wren code such as the following. To use more than one class separate their names with commas:
import "./fmt" for Conv, Fmt
These modules are subject to the same license as any other code submitted to Rosetta Code though contributors' user pages should be checked to see whether more permissive terms are available. If anyone wishes to add further modules, please do so using a similar model and append them to the list.
Please note that when creating a category for a new module its name should be prefixed with 'Wren-' as in 'Wren-fmt' and the library header for a task which uses the module should therefore use this name. Modules will normally have generic names and this convention allows Rosetta Code users to easily distinguish Wren modules from similarly named modules/libraries written for other languages.
There are also a number of third-party modules available for Wren of which the following have been used to write solutions for Rosetta Code tasks:
No. | Module name | No. | Module name | |
---|---|---|---|---|
1 | DOME | 2 | Raylib-wren | |
3 | SpiderWren | 4 | Wren-assert | |
5 | Wren-json | 6 | Wren-test | |
7 | WrenGo | 8 | Wren-xsequence |
For further information and licensing requirements, please consult their individual pages.
Todo
Pages in category "Wren"
The following 200 pages are in this category, out of 1,680 total.
(previous page) (next page)A
- A* search algorithm
- A+B
- Abbreviations, automatic
- Abbreviations, easy
- Abbreviations, simple
- ABC correlation
- ABC incremental counts
- ABC problem
- ABC words
- Abelian sandpile model
- Abelian sandpile model/Identity
- Abstract type
- Abundant odd numbers
- Abundant, deficient and perfect number classifications
- Accumulator factory
- Achilles numbers
- Ackermann function
- Active Directory/Connect
- Active Directory/Search for a user
- Active object
- Add a variable to a class instance at runtime
- Addition chains
- Addition-chain exponentiation
- Additive primes
- Address of a variable
- ADFGVX cipher
- Air mass
- AKS test for primes
- Algebraic data types
- Align columns
- Aliquot sequence classifications
- Almkvist-Giullera formula for pi
- Almost prime
- Alternade words
- Amb
- Amicable pairs
- Anadromes
- Anagram generator
- Anagrams
- Anagrams/Deranged anagrams
- Anaprimes
- Angle difference between two bearings
- Angles (geometric), normalization and conversion
- Animate a pendulum
- Animation
- Anonymous recursion
- Anti-primes
- Append a record to the end of a text file
- Append numbers at same position in strings
- Apply a callback to an array
- Apply a digital filter (direct form II transposed)
- Approximate equality
- Apéry's constant
- Arbitrary-precision integers (included)
- Archimedean spiral
- Arena storage pool
- Arithmetic coding/As a generalized change of radix
- Arithmetic derivative
- Arithmetic evaluation
- Arithmetic numbers
- Arithmetic-geometric mean
- Arithmetic-geometric mean/Calculate Pi
- Arithmetic/Complex
- Arithmetic/Integer
- Arithmetic/Rational
- Array concatenation
- Array length
- Arrays
- Ascending primes
- ASCII art diagram converter
- ASCII control characters
- Aspect oriented programming
- Assertions
- Assertions in design by contract
- Associative array/Creation
- Associative array/Iteration
- Associative array/Merging
- Atomic updates
- Attractive numbers
- Audio alarm
- Audio frequency generator
- Audio overlap loop
- Autogram checker
- Average loop length
- Averages/Arithmetic mean
- Averages/Mean angle
- Averages/Mean time of day
- Averages/Median
- Averages/Mode
- Averages/Pythagorean means
- Averages/Root mean square
- Averages/Simple moving average
- AVL tree
B
- B-spline
- Babbage problem
- Babylonian spiral
- Bacon cipher
- Balanced brackets
- Balanced ternary
- Banker's algorithm
- Barnsley fern
- Base 16 numbers needing a to f
- Base58Check encoding
- Base64 decode data
- Base64 encode data
- Bell numbers
- Benford's law
- Bernoulli numbers
- Bernstein basis polynomials
- Best shuffle
- Bifid cipher
- Bilinear interpolation
- Bin given limits
- Binary coded decimal
- Binary digits
- Binary search
- Binary strings
- Binomial transform
- Bioinformatics/base count
- Bioinformatics/Global alignment
- Bioinformatics/Sequence mutation
- Bioinformatics/Subsequence
- Biorhythms
- Birthday problem
- Bitcoin/address validation
- Bitcoin/public point to address
- Bitmap
- Bitmap/Bresenham's line algorithm
- Bitmap/Bézier curves/Cubic
- Bitmap/Bézier curves/Quadratic
- Bitmap/Flood fill
- Bitmap/Histogram
- Bitmap/Midpoint circle algorithm
- Bitmap/PPM conversion through a pipe
- Bitmap/Read a PPM file
- Bitmap/Read an image through a pipe
- Bitmap/Write a PPM file
- Bitwise IO
- Bitwise operations
- Black box
- Blackjack strategy
- Blum integer
- Boids
- Boolean values
- Boustrophedon transform
- Box the compass
- Boyer-Moore string search
- Brace expansion
- Brace expansion using ranges
- Brazilian numbers
- Break OO privacy
- Brilliant numbers
- Brownian tree
- Bulls and cows
- Bulls and cows/Player
- Burrows–Wheeler transform
- Bézier curves/Intersections
C
- Caesar cipher
- Calculating the value of e
- Calendar
- Calendar - for "REAL" programmers
- Calkin-Wilf sequence
- Call a foreign-language function
- Call a function
- Call a function in a shared library
- Call an object method
- Calmo numbers
- CalmoSoft primes
- Camel case and snake case
- Canny edge detector
- Canonicalize CIDR
- Cantor set
- Card shuffles
- Carmichael 3 strong pseudoprimes
- Carmichael lambda function
- Cartesian product of two or more lists
- Case-sensitivity of identifiers
- Casting out nines
- Catalan numbers
- Catalan numbers/Pascal's triangle
- Catamorphism
- Catmull–Clark subdivision surface
- Centre and radius of a circle passing through 3 points in a plane
- Centroid of a set of N-dimensional points
- Change e letters to i in words
- Changeable words
- Chaocipher