ALGOL 68
[[File:Algol68.png|64px|left|alt=Language|link=https://sourceforge.net/projects/algol68]] ALGOL 68 (short for ALGOrithmic Language 1968) is an imperative computer programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously defined syntax and semantics.
The main aims and principles of design of ALGOL 68: #Completeness and clarity of design, #Orthogonal design, #Security, #Efficiency: #* Static mode checking, #* Mode-independent parsing, #* Independent compilation, #* Loop optimization, #* Representations - in minimal & larger character sets.
Execute an ALGOL 68 program online
Grammar
The grammar for ALGOL 68 is officially in the two level, Van Wijngaarden grammar but a subset has been done in the one level Backus–Naur Form:
- Van Wijngaarden grammar: http://www.fh-jena.de/~kleine/history/languages/Algol68-ReportAttachement.pdf
- Backus–Naur Form/Yacc: http://wwwmathlabo.univ-poitiers.fr/~maavl/algol68/syntax68
- Syntax Chart (Size 516.6 kB - File type application/pdf)
Resources
- ALGOL BULLETIN - March 1959 to August 1988, in 52 issueshttp://archive.computerhistory.org/resources/text/algol/algol_bulletin
- Algol68 mailinglist - December 2008 - algol68-user AT lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/algol68-user
- Algol68 group at linked: http://www.linkedin.com/groups/Algol68-2333923 - includes various famous compiler composers.
FYI: There are two online manual pages:
Or - if you prefer a hardcopy - you can try and pick up a hard cover manual like "''Informal Introduction to Algol 68''" - by C. H. Lindsey & S. V. Vander Meulen. Be sure to get the 1977 edition:
- www.amazon.com - Aboout $119
- barnesandnoble.com - about $40 IItA68 is a beautiful book, and makes great "bedtime" reading... Highly recommended!
- '''NEW:''' softwarepreservation.org has an on-line IItA68 PDF ready for download.
Editor modes:
- Emacs mode for Algol 68 supporting syntax highlighting and context-sensitive indentation.
- Vim script providing support for syntax highlighting.
- '''NEW:''' GeSHi syntax highlighting
Status
- 20th December 1968 - '''ALGOL 68's''' Final Report was ratified by UNESCO's IFIP working group 2.1 in Munich.
- 20th December 2008 - Zig Zag - the 100th '''ALGOL 68''' code contribution on rosettacode.org! ** Happy 40th Birthday '''ALGOL 68''', ** AND 50th Birthday '''ALGOL 58'''.
- 23rd August 2009 - algol68g-1.18.0-9h released
- 20th December 2009 - Happy 51st/41st Birthdays with Hamming numbers - the 200th '''ALGOL 68''' code contribution on rosettacode.org! ** This time code was by Marcel van der Veer, author of Algol 68 Genie
- 25th October 2011 - Jejones3141 added Soundex - the 300th '''ALGOL 68''' code specimen.
Revisions
*Mar. 1968: Draft Report on the Algorithmic Language ALGOL 68 - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck and C.H.A. Koster. *Oct. 1968: Penultimate Draft Report on the Algorithmic Language ALGOL 68 - Chapters 1-9 - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck and C.H.A. Koster. *Dec. 1968: Report on the Algorithmic Language ALGOL 68 - Offprint from Numerische Mathematik, 14, 79-218 (1969); Springer-Verlag. - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck and C.H.A. Koster. *Sep 1973: Revised Report on the Algorithmic Language Algol 68 - Springer-Verlag 1976 - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, C.H. Lindsey, L.G.L.T. Meertens and R.G. Fisker.
Code samples
Most of the code samples provided here have a leading main:( and a matching ) at the end. These are not actually required in the language, but are included so as to highlight that the code sample is complete, and works with (at least) ALGOL 68G unmodified.
On some compilers, it may be necessary to include appropriate "job cards" or precludes in order for the programs to compile successfully. Hopefully not too much else is required. Examples: {|border="1" style="border-collapse: collapse; border: 5px double grey;" align="center" || Brief Algol68 || Algol68 as in rosettacode || Actual ELLA Algol 68RS code |- || print(("Hello, world!",new line)) || main:( print(("Hello, world!",new line)) ) || PROGRAM helloworld CONTEXT VOID USE standard BEGIN print(("Hello, world!", new line)) END FINISH |}
Example of different program representations
At the time when ALGOL 68 was defined some predominant computers had 24 or 36 bit words, with 6 bit character sets. Hence it was desirable that ALGOL 68 should be able to run on machines with only uppercase. The official spec provided for different representations of the same program. Quote stropping (enclosing the bold words in single quotes) and Point stropping (preceeding the bold words with a dot) were used. A variant of Point stropping called RES stropping was also defined. In RES stropping some language-defined bold words are not preceded by a dot. A pragmatic comment may have been required to indicate which stropping convention was to be used, as in some of the examples below. Upper stropping (representing the bold words by upper case and non-bold words in lower case) was introduced by Algol 68R. Upper stropping is used by Algol 68RS and is one of the options for Algol 68G. Rutgers ALGOL 68 uses quote stropping. Most of the samples on Rosetta Code use Upper stropping. Example: {|border="1" style="border-collapse: collapse; border: 5px double grey;" align="center" || Algol68 as typically published ¢ bold/underline typeface ¢ '''mode''' '''xint''' = '''int'''; '''xint''' sum sq:=0; '''for''' i '''while''' sum sq≠70×70 '''do''' sum sq+:=i↑2 '''od''' || quote stropping (similar to wiki) 'pr' quote 'pr' 'mode' 'xint' = 'int'; 'xint' sum sq:=0; 'for' i 'while' sum sq≠70×70 'do' sum sq+:=i↑2 'od' || 7-bit/ascii compiler .PR UPPER .PR MODE XINT = INT; XINT sum sq:=0; FOR i WHILE sum sq/=7070 DO sum sq+:=i**2 OD || 6-bits/byte compiler .PR POINT .PR .MODE .XINT = .INT; .XINT SUM SQ:=0; .FOR I .WHILE SUM SQ .NE 7070 .DO SUM SQ .PLUSAB I .UP 2 .OD || RES stropping .PR RES .PR mode .xint = int; .xint sum sq:=0; for i while sum sq≠70×70 do sum sq+:=i↑2 od || Upper stropping
upper case = bold
MODE XINT = INT; XINT sum sq:=0; FOR i WHILE sum sq /= 70*70 DO sum sq PLUSAB i UP 2 OD |}
Coercion (casting)
ALGOL 68 has a hierarchy of contexts which determine which kind of coercions are available at a particular point in the program. These contexts are: {|class="wikitable" !rowspan=2| N
a
m
e !rowspan=2| Context location !colspan=5| Coercions available in this context !rowspan=2| Coercion examples |- |bgcolor=aaaaff|Soft |bgcolor=aaeeaa|Weak |bgcolor=ffee99|Meek |bgcolor=ffcc99|Firm |bgcolor=ffcccc|Strong |- !S
t
r
o
n
g ||Right hand side of:
- Identity-declarations, as "~" in:
REAL x = ~
- Initialisations, as "~" in:
REAL x := ~
Also:
- Actual-parameters of calls, as "~" in:
PROC: sin(~)
- Enclosed clauses of casts, as "~" in:
REAL(~)
- Units of routine-texts
- Statements yielding VOID
- All parts (but one) of a balanced clause
- One side of an identity relation, as "~" in:
~ IS ~
|bgcolor=aaaaff rowspan=4 width="50px"| deproc- eduring |bgcolor=aaeeaa rowspan=3 width="50px"| all '''soft''' then weak deref- erencing |bgcolor=ffee99 rowspan=2 width="50px"| all '''weak''' then deref- erencing |bgcolor=ffcc99 rowspan=1 width="50px"| all '''meek''' then uniting |bgcolor=ffcccc width="50px"| all '''firm''' then widening, rowing and voiding |colspan=1 bgcolor=ffcccc| Widening occurs if there is no loss of precision. For example: An INT will be coerced to a REAL, and a REAL will be coerced to a LONG REAL. But not vice-versa. Examples:
INT to LONG INT
INT to REAL
REAL to COMPL
BITS to []BOOL
BYTES to STRING
A variable can also be coerced (rowed) to an array of length 1.
For example:
INT to [1]INT
REAL to [1]REAL
etc |- !F
i
r
m || *Operands of formulas as "~" in:
OP: ~ * ~
*Parameters of transput calls |colspan=3 bgcolor=ffcc99| Example:
UNION(INT,REAL) var := 1
|- !M
e
e
k ||
- Trimscripts (yielding INT)
- Enquiries: e.g. as "~" in the following
IF ~ THEN ... FI
and
FROM ~ BY ~ TO ~ WHILE ~ DO ... OD etc
- Primaries of calls (e.g. sin in sin(x)) |colspan=4 bgcolor=ffee99|Examples:
REF REF BOOL to BOOL
REF REF REF INT to INT
|- !W
e
a
k ||
- Primaries of slices, as in "~" in:
~[1:99]
- Secondaries of selections, as "~" in:
value OF ~
|colspan=5 bgcolor=aaeeaa|Examples:
REF BOOL to REF BOOL
REF REF INT to REF INT
REF REF REF REAL to REF REAL
REF REF REF REF STRUCT to REF STRUCT
|- !S
o
f
t || The LHS of assignments, as "~" in:
~ := ...
|colspan=6 bgcolor=aaaaff| Example:
- deproceduring of:
PROC REAL random: e.g. random
|} For more details about Primaries and Secondaries refer to [[Operator_precedence#ALGOL_68|Operator precedence]].
See also
*[[Web 68]] *[[ALGOL 60]] *[[ALGOL W]]
Code Specimen
Merged content
An implementation of BF in [[ALGOL 68]] for Rosetta Code.
MODE BYTE = SHORT SHORT SHORT INT;
MODE CADDR = BYTE; # code address #
MODE OPCODE = BYTE;
OPCODE nop = 0;
MODE DADDR = BYTE; # data address #
MODE DATA = BYTE;
DATA zero = 0;
PROC run = ([] OPCODE code list)VOID:(
[-255:255]DATA data list; # finite data space #
FOR i FROM LWB data list TO UPB data list DO data list[i] := zero OD;
DADDR data addr := ( UPB data list + LWB data list ) OVER 2;
CADDR code addr := LWB code list;
[0:127]OPCODE assembler; # 7 bit ascii only #
STRING op code list="><+-.,[]";
[]PROC VOID op list= []PROC VOID(
# ? # VOID: SKIP, # NOP #
# > # VOID: data addr +:= 1,
# < # VOID: data addr -:= 1,
# + # VOID: data list[data addr] +:= 1,
# - # VOID: data list[data addr] -:= 1,
# . # VOID: print(REPR data list[data addr]),
# , # VOID: data list[data addr]:=ABS read char,
# [ # VOID:
IF data list[data addr] = zero THEN
# skip to the end of the loop, allowing for nested loops #
INT br level := 0;
WHILE
IF code list[code addr] = ABS "["
THEN
br level +:= 1;
ELIF code list[code addr] = ABS "]"
THEN
br level -:= 1
FI;
IF br level > 0
THEN
code addr +:= 1;
TRUE
ELSE
FALSE
FI
DO SKIP OD
FI,
# ] # VOID:
IF data list[data addr] /= zero THEN
# skip to the start of the loop, allowing for nested loops #
INT br level := 0;
WHILE
IF code list[code addr] = ABS "["
THEN
br level +:= 1
ELIF code list[code addr] = ABS "]"
THEN
br level -:= 1
FI;
code addr -:= 1;
br level < 0
DO SKIP OD
FI
)[:@0];
FOR op TO UPB assembler DO assembler[op] := nop OD; # insert NOP #
FOR op TO UPB op code list DO assembler[ABS op code list[op]] := op OD;
WHILE code addr <= UPB code list DO
op list[ABS assembler[ABS code list[code addr]]];
code addr +:= 1
OD
);
STRING code list := "++++++[>+++++++++++<-]>-."; # print the ascii letter A #
[UPB code list]BYTE byte code list; # convert to bytes #
FOR i TO UPB code list DO byte code list[i] := ABS code list[i] OD;
run(byte code list)
Tasks
- 100 doors
- 2048
- 4-rings or 4-squares puzzle
- A+B
- ABC Problem
- AKS test for primes
- Abbreviations, easy
- Abbreviations, simple
- Abundant odd numbers
- Abundant, deficient and perfect number classifications
- Accumulator factory
- Ackermann function
- Address of a variable
- Align columns
- Aliquot sequence classifications
- Almost prime
- Amb
- Amicable pairs
- Anagrams
- Anagrams/Deranged anagrams
- Anonymous recursion
- Apply a callback to an array
- Arbitrary-precision integers (included)
- Arithmetic evaluation
- Arithmetic-geometric mean
- Arithmetic/Complex
- Arithmetic/Integer
- Arithmetic/Rational
- Array concatenation
- Array length
- Arrays
- Assertions
- Associative array/Creation
- Associative array/Iteration
- Averages/Arithmetic mean
- Averages/Mean angle
- Averages/Median
- Averages/Pythagorean means
- Averages/Root mean square
- Averages/Simple moving average
- Babbage problem
- Bacon cipher
- Balanced brackets
- Balanced ternary
- Barnsley fern
- Base64 encode data
- Benford's law
- Bernoulli numbers
- Binary digits
- Binary search
- Binary strings
- Birthday problem
- Bitmap
- Bitmap/Bézier curves/Cubic
- Bitmap/Midpoint circle algorithm
- Bitwise IO
- Bitwise operations
- Boolean values
- Box the compass
- Bresenham's Line Algorithm
- Bulls and cows
- CRC-32
- CSV data manipulation
- CSV to HTML translation
- CUSIP
- Caesar cipher
- Calculating the value of e
- Calendar
- Call a foreign-language function
- Call a function
- Cantor set
- Carmichael 3 strong pseudoprimes
- Case-sensitivity of identifiers
- Catalan numbers
- Catalan numbers/Pascal's triangle
- Catamorphism
- Character codes
- Check that file exists
- Cholesky decomposition
- Circles of given radius through two points
- Classes
- Closures/Value capture
- Collections
- Combinations
- Combinations and permutations
- Comma quibbling
- Command-line arguments
- Commatizing numbers
- Comments
- Compare a list of strings
- Compiler/code generator
- Compound data type
- Concurrent computing
- Conditional structures
- Constrained random points on a circle
- Continued fraction
- Convert seconds to compound duration
- Copy a string
- Copy stdin to stdout
- Count in factors
- Count in octal
- Count occurrences of a substring
- Count the coins
- Cramer's rule
- Create a file
- Create a two-dimensional array at runtime
- Create an HTML table
- Cuban primes
- Cumulative standard deviation
- Currency
- Currying
- Damm algorithm
- Date format
- Day of the week
- Define a primitive data type
- Delegates
- Delete a file
- Department Numbers
- Detect division by zero
- Determine if a string is numeric
- Digital root
- Digital root/Multiplicative digital root
- Dijkstra's algorithm
- Dinesman's multiple-dwelling problem
- Dot product
- Doubly-linked list/Definition
- Doubly-linked list/Element definition
- Doubly-linked list/Element insertion
- Doubly-linked list/Traversal
- Dragon curve
- Egyptian division
- Element-wise operations
- Emirp primes
- Empty directory
- Empty program
- Empty string
- Enforced immutability
- Entropy
- Entropy/Narcissist
- Enumerations
- Environment variables
- Equilibrium index
- Ethiopian multiplication
- Euler method
- Euler's identity
- Euler's sum of powers conjecture
- Evaluate binomial coefficients
- Even or odd
- Evolutionary algorithm
- Exceptions
- Exceptions/Catch an exception thrown in a nested call
- Execute Brainfuck
- Execute HQ9+
- Execute a system command
- Exponentiation operator
- Exponentiation order
- Extend your language
- Extract file extension
- Factorial
- Factorions
- Factors of a Mersenne number
- Factors of an integer
- Fast Fourier transform
- Feigenbaum constant calculation
- Fibonacci n-step number sequences
- Fibonacci sequence
- Fibonacci word
- Filter
- Find common directory path
- Find first and last set bit of a long integer
- Find limit of recursion
- Find the intersection of two lines
- First-class functions
- First-class functions/Use numbers analogously
- Five weekends
- FizzBuzz
- Flatten a list
- Flow-control structures
- Floyd's triangle
- Forest fire
- Fork
- Formatted numeric output
- Forward difference
- Fractran
- Function composition
- Function definition
- Function prototype
- Fusc sequence
- Gamma function
- Gaussian elimination
- Generate lower case ASCII alphabet
- Generator/Exponential
- Generic swap
- Gray code
- Greatest element of a list
- Greatest subsequential sum
- Guess the number
- Guess the number/With feedback
- Guess the number/With feedback (player)
- HTTP
- Hamming numbers
- Happy numbers
- Harshad or Niven series
- Haversine formula
- Hello world!
- Hello world/Graphical
- Hello world/Line printer
- Hello world/Newbie
- Hello world/Newline omission
- Hello world/Standard error
- Hello world/Text
- Here document
- Heronian triangles
- Hickerson series of almost integers
- Higher-order functions
- Hilbert curve
- Hofstadter Q sequence
- Hofstadter-Conway $10,000 sequence
- Holidays related to Easter
- Horizontal sundial calculations
- Horner's rule for polynomial evaluation
- Host introspection
- Hostname
- I before E except after C
- Identity matrix
- Idiomatically determine all the lowercase and uppercase letters
- Implicit type conversion
- Include a file
- Increment a numerical string
- Infinity
- Input loop
- Input/Output for Lines of Text
- Input/Output for Pairs of Numbers
- Integer comparison
- Integer overflow
- Integer sequence
- Intersecting Number Wheels
- Introspection
- Inverted syntax
- Iterated digits squaring
- Jensen's Device
- Jewels and Stones
- Josephus problem
- Julia set
- Kahan summation
- Kaprekar numbers
- Kernighans large earthquake problem
- Knapsack problem/Unbounded
- Knight's tour
- Knuth shuffle
- Kronecker product
- Langton's ant
- Largest int from concatenated ints
- Law of cosines - triples
- Leap year
- Least common multiple
- Left factorials
- Leonardo numbers
- Letter frequency
- Linear congruential generator
- List comprehensions
- Literals/Floating point
- Literals/Integer
- Literals/String
- Logical operations
- Long multiplication
- Longest common prefix
- Longest common subsequence
- Longest string challenge
- Look-and-say sequence
- Loop over multiple arrays simultaneously
- Loops/Break
- Loops/Do-while
- Loops/Downward for
- Loops/For
- Loops/For with a specified step
- Loops/Foreach
- Loops/Increment loop index within loop body
- Loops/Infinite
- Loops/N plus one half
- Loops/Nested
- Loops/While
- Loops/with multiple ranges
- Lucas-Lehmer test
- Ludic numbers
- Luhn test of credit card numbers
- Lychrel numbers
- MD5
- Mad Libs
- Magic 8-Ball
- Magic squares of odd order
- Man or boy test
- Mandelbrot set
- Map range
- Matrix multiplication
- Matrix transposition
- Matrix-exponentiation operator
- Maximum triangle path sum
- McNuggets Problem
- Memory allocation
- Memory layout of a data structure
- Menu
- Metaprogramming
- Metered concurrency
- Mian-Chowla sequence
- Middle three digits
- Miller–Rabin primality test
- Modular arithmetic
- Modular exponentiation
- Modular inverse
- Monads/Maybe monad
- Monads/Writer monad
- Monte Carlo methods
- Monty Hall problem
- Move-to-front algorithm
- Multi-dimensional array
- Multifactorial
- Multiple distinct objects
- Multiplication tables
- Multiplicative order
- Multisplit
- Munchausen numbers
- Mutual recursion
- N'th
- N-queens problem
- Named parameters
- Naming conventions
- Narcissist
- Narcissistic decimal number
- Native shebang
- Negative base numbers
- Nested function
- Non-continuous subsequences
- Non-decimal radices/Convert
- Non-decimal radices/Input
- Non-decimal radices/Output
- Nth root
- Null object
- Number names
- Numeric error propagation
- Numeric separator syntax
- Numerical integration
- Object serialization
- Odd word problem
- Old lady swallowed a fly
- One of n lines in a file
- One-dimensional cellular automata
- Operator precedence
- Optional parameters
- Ordered words
- Palindrome detection
- Pangram checker
- Parsing/RPN calculator algorithm
- Parsing/RPN to infix conversion
- Parsing/Shunting-yard algorithm
- Partial function application
- Pascal matrix generation
- Pascal's triangle
- Pascal's triangle/Puzzle
- Pathological floating point problems
- Pell's equation
- Perfect numbers
- Perfect shuffle
- Permutations
- Permutations with repetitions
- Pernicious numbers
- Phrase reversals
- Pi
- Pick random element
- Playing cards
- Plot coordinate pairs
- Pointers and references
- Polymorphism
- Polynomial regression
- Population count
- Power set
- Pragmatic directives
- Price fraction
- Primality by trial division
- Prime conspiracy
- Prime decomposition
- Probabilistic choice
- Program name
- Program termination
- Proper divisors
- Pythagorean quadruples
- Quaternion type
- Queue/Definition
- Queue/Usage
- Quickselect algorithm
- Quine
- RSA code
- Random number generator (included)
- Random numbers
- Range expansion
- Range extraction
- Read a file line by line
- Read a specific line from a file
- Read entire file
- Real constants and functions
- Reduced row echelon form
- Regular expressions
- Remove duplicate elements
- Remove lines from a file
- Rename a file
- Rep-string
- Repeat
- Repeat a string
- Return multiple values
- Reverse a string
- Reverse words in a string
- Rock-paper-scissors
- Roman numerals/Decode
- Roman numerals/Encode
- Roots of a function
- Roots of a quadratic function
- Roots of unity
- Rot-13
- Run-length encoding
- Runge-Kutta method
- Runtime evaluation
- Runtime evaluation/In an environment
- S-Expressions
- SEDOLs
- Scope modifiers
- Scope/Function names and labels
- Search a list
- Search a list of records
- Selective File Copy
- Self-describing numbers
- Self-hosting compiler
- Semiprime
- Semordnilap
- Sequence of non-squares
- Sequence of primes by trial division
- Sequence: smallest number greater than previous term with exactly n divisors
- Sequence: smallest number with exactly n divisors
- Seven-sided dice from five-sided dice
- Shell one-liner
- Shoelace formula for polygonal area
- Short-circuit evaluation
- Show Ascii table
- Sierpinski carpet
- Sierpinski triangle
- Sieve of Eratosthenes
- Singly-linked list/Element definition
- Singly-linked list/Element insertion
- Singly-linked list/Element removal
- Singly-linked list/Traversal
- Sleep
- Smith numbers
- Solve a Holy Knight's tour
- Sort an array of composite structures
- Sort an integer array
- Sort three variables
- Sort using a custom comparator
- Sorting algorithms/Bogosort
- Sorting algorithms/Bubble sort
- Sorting algorithms/Cocktail sort
- Sorting algorithms/Counting sort
- Sorting algorithms/Gnome sort
- Sorting algorithms/Heapsort
- Sorting algorithms/Insertion sort
- Sorting algorithms/Merge sort
- Sorting algorithms/Pancake sort
- Sorting algorithms/Quicksort
- Sorting algorithms/Radix sort
- Sorting algorithms/Selection sort
- Sorting algorithms/Shell sort
- Sorting algorithms/Stooge sort
- Soundex
- Special characters
- Special variables
- Spiral matrix
- Split a character string based on change of character
- Square but not cube
- Square-free integers
- Stack
- Stair-climbing puzzle
- Start from a main routine
- Stirling numbers of the first kind
- Stirling numbers of the second kind
- Straddling checkerboard
- Stream Merge
- String append
- String case
- String comparison
- String concatenation
- String interpolation (included)
- String length
- String matching
- String prepend
- Strip a set of characters from a string
- Strip comments from a string
- Strip control codes and extended characters from a string
- Strip whitespace from a string/Top and tail
- Strong and weak primes
- Subleq
- Substring
- Substring/Top and tail
- Sudoku
- Sum and product of an array
- Sum data type
- Sum digits of an integer
- Sum multiples of 3 and 5
- Sum of a series
- Sum of squares
- Sum to 100
- Synchronous concurrency
- System time
- Table creation/Postal addresses
- Temperature conversion
- Ternary logic
- Test integerness
- Text between
- Text processing/1
- Text processing/Max licenses in use
- Textonyms
- The Name Game
- The Twelve Days of Christmas
- Thiele's interpolation formula
- Thue-Morse
- Tokenize a string
- Trabb Pardo–Knuth algorithm
- Tree traversal
- Trigonometric functions
- Truncatable primes
- Truth table
- Two Sum
- URL parser
- Undefined values
- Unicode strings
- Unicode variable names
- Variable size/Get
- Variables
- Variadic function
- Vector
- Vector products
- Vigenère cipher
- Visualize a tree
- Walk a directory/Non-recursively
- Walk a directory/Recursively
- Web scraping
- Window creation
- Window creation/X11
- Wireworld
- Write entire file
- Write float arrays to a text file
- XML/Output
- Y combinator
- Yin and yang
- Zebra puzzle
- Zeckendorf number representation
- Zero to the zero power
- Zig-zag matrix