## Algol 68 Genie code browser

Below is a list with example Algol 68 programs, together with the cross-referenced source files of the current Algol 68 Genie version.

## Example Algol 68 programs

 File Synopsis Lines 1 ackermann.a68 Ackermann function, a paradigm total computable function that is not primitive recursive. 47 2 all-parser.a68 Non-left-recursive context-free grammar parser. 59 3 arithmetic-derivative.a68 Lagarias arithmetic derivate. 42 4 backtracking.a68 Split an amount of money in coins, by backtracking. 30 5 bulls-and-cows.a68 Break a unique code of `n' pegs and `m' colours you think of. 72 6 decision-tree.a68 Paradigm for building decision trees in Algol 68. 67 7 dictionary.a68 Write Python-style dictionaries in json format. 61 8 fibonacci-grammar.a68 Illustration of the use of procedure closures. 38 9 formula-manipulation.a68 Symbolic computing in Algol 68. 277 10 hamming.a68 Compute regular (or Hamming) numbers. 65 11 hilbert-curve-latex.a68 Generate LaTeX code to plot a Hilbert curve. 106 12 hilbert-matrix.a68 Compute the determinant of a Hilbert matrix using fractions. 195 13 linear-regression.a68 Ordinary Least Squares, Principal Component and Partial Least Squares regression. 149 14 lisp-interpreter.a68 Miniature LISP interpreter in Algol 68. 167 15 lucas-sequence.a68 Lucas sequence and the golden ratio. 36 16 mandelbrot-plotutils.a68 Plot a part of the Mandelbrot set. 56 17 parallel-fft.a68 Parallel Fast Fourier Transform in recursive form. 35 18 partial-parametrisation.a68 Lindsey's currying proposal for Algol 68. 31 19 pebbles.a68 Edsger Dijkstra's pebble problem. 69 20 queens.a68 'N' queens in classic backtracker. 41 21 quicksort.a68 The well-known recursive quicksort algorithm. 32 22 roman-decimal.a68 Translation between decimal and Roman notation. 60 23 triple-ref-trick.a68 The "Algol 68 triple-REF trick" implementation of quicksort. 36 24 tukey-test-tables.a68 Compute Studentized range q table. 57 25 van-wijngaarden-switch.a68 Van Wijngaarden's pseudo-switch. 37 26 warshall.a68 Warshall's algorithm for transitive closures. 64 27 wca.a68 Compute equilibrium Lennard Jones thermodynamic data. 141 28 www.a68 Reading web pages using Algol 68. 18 29 zeroin.a68 Zeroin is a classic root-finding algorithm. 118

## Algol 68 Genie source files

 File Synopsis Lines 1 a68g-apropos.c Command line help. 165 2 a68g-bits.c Miscellaneous routines. 375 3 a68g.c Algol 68 Genie main driver. 693 4 a68g-conversion.c Conversion tables for IEEE platforms. 84 5 a68g-diagnostics.c Error and warning routines. 814 6 a68g-io.c Low-level input-output routines. 273 7 a68g-keywords.c Algol 68 keyword tables. 214 8 a68g-listing.c Old-school listing file. 707 9 a68g-mem.c Low-level memory management. 261 10 a68g-non-terminal.c Non-terminal tables. 417 11 a68g-options.c Algol 68 Genie options. 1133 12 a68g-path.c Low-level file path routines. 157 13 a68g-postulates.c Postulates needed for proving equivalence of modes. 92 14 a68g-pretty.c Lay-out formatter for Algol 68. 1340 15 double.c LONG INT, LONG REAL and LONG BITS routines. 1986 16 double-gamic.c LONG REAL generalised incomplete gamma function. 416 17 double-math.c LONG REAL, LONG COMPLEX routines. 358 18 genie-assign.c Interpreter routines for assignations. 152 19 genie.c Interpreter driver. 878 20 genie-call.c Interpreter routines for procedure calls. 278 21 genie-coerce.c Interpreter mode coercion routines. 492 22 genie-declaration.c Interpreter routines for declarations. 215 23 genie-denotation.c Interpreter routines for denotations. 280 24 genie-enclosed.c Interpreter routines for enclosed clauses. 912 25 genie-formula.c Interpreter routines for formulas. 185 26 genie-hip.c Interpreter routines for jumps and SKIP. 223 27 genie-identifier.c Interpreter routines for identifiers. 91 28 genie-misc.c Miscellaneous interpreter routines. 113 29 genie-regex.c Low-level regular expression routines. 288 30 genie-rows.c Interpreter routines for ROW values. 139 31 genie-stowed.c Interpreter routines for STOWED values. 420 32 genie-unix.c Low-level UNIX routines. 845 33 moids-diagnostics.c MOID diagnostics routines. 186 34 moids-misc.c Miscellaneous MOID routines. 1196 35 moids-size.c Memory footprint (size) of a mode. 273 36 moids-to-string.c Pretty-print a MOID. 299 37 mp-bits.c [LONG] LONG BITS routines, legacy MP implementation. 654 38 mp.c [LONG] LONG INT, REAL routines. 1315 39 mp-complex.c [LONG] LONG COMPLEX math functions. 528 40 mp-gamic.c [LONG] LONG REAL generalised incomplete gamma function. 831 41 mp-gamma.c [LONG] LONG REAL error, gamma and beta functions. 498 42 mp-genie.c Multi-precision interpreter routines. 1411 43 mp-math.c [LONG] LONG REAL math functions. 1384 44 mp-mpfr.c [LONG] LONG REAL routines using GNU MPFR. 530 45 mp-pi.c [LONG] LONG REAL value of pi by AGM. 136 46 parser-bottom-up.c Hand-coded bottom-up parser for Algol 68. 2032 47 parser-brackets.c Recursive-descent parenthesis checker. 231 48 parser.c Mailloux-type Algol 68 parser driver. 985 49 parser-extract.c Extract tags from phrases. 543 50 parser-modes.c Mode table management. 1062 51 parser-moids-check.c Mode checker routines. 1746 52 parser-moids-coerce.c Mode coercion driver. 864 53 parser-moids-equivalence.c Prove equivalence of modes. 159 54 parser-refinement.c Refinement preprocessor. 238 55 parser-scanner.c Context-dependent Algol 68 tokeniser. 1606 56 parser-scope.c Static scope checker. 896 57 parser-taxes.c Symbol table management. 1411 58 parser-top-down.c Top-down parser for control structure. 681 59 parser-victal.c Syntax check for formal, actual and virtual declarers. 311 60 plugin-basic.c Plugin compiler routines. 388 61 plugin.c Plugin compiler driver. 973 62 plugin-driver.c Plugin compiler driver. 183 63 plugin-folder.c Plugin compiler constant folder. 453 64 plugin-gen.c Plugin compiler generator routines. 1806 65 plugin-inline.c Plugin compiler inlining routines. 1178 66 plugin-script.c Plugin script builder routines. 164 67 plugin-tables.c Plugin compiler tables. 536 68 prelude-bits.c Multiple precision BITS. 97 69 prelude.c Standard prelude definitions. 2258 70 prelude-gsl.c Standard prelude definitions from GSL. 662 71 prelude-mathlib.c Standard prelude definitions from GNU R math library. 137 72 rts-bool.c BOOL routines. 56 73 rts-char.c CHAR, STRING and BYTES routines. 677 74 rts-curl.c HTTP/HTTPS client. 135 75 rts-curses.c Curses interface. 227 76 rts-enquiries.c Environment enquiries. 73 77 rts-formatted.c Formatted transput. 2576 78 rts-heap.c Generator and garbage collector routines. 782 79 rts-int128.c 128-bit INT support. 282 80 rts-internal.c Transput routines. 360 81 rts-mach.c Machine parameters. 260 82 rts-monitor.c GDB-style monitor for the interpreter. 2289 83 rts-parallel.c Parallel clause implementation. 517 84 rts-plotutils.c Gnuplot's libplot interface. 1554 85 rts-postgresql.c PostgreSQL libpq interface. 815 86 rts-sounds.c SOUND routines. 603 87 rts-stowed.c Interpreter routines for STOWED values. 786 88 rts-transput.c Transput routines. 1648 89 rts-unformatted.c Unformatted transput. 2790 90 single-blas.c REAL GSL BLAS support. 60 91 single.c INT, REAL, COMPLEX and BITS routines. 1632 92 single-decomposition.c REAL GSL LU, QR and Choleski decomposition. 280 93 single-fft.c REAL, COMPLEX GSL fast fourier transform. 290 94 single-gamic.c REAL generalised incomplete gamma function. 414 95 single-gsl.c REAL GSL routines. 844 96 single-laplace.c REAL GSL laplace routines. 115 97 single-math.c REAL math routines supplementing libc. 780 98 single-multivariate.c REAL multivariate regression. 689 99 single-physics.c REAL GSL physical constants. 246 100 single-python.c REAL vector and matrix routines, Python look-a-likes. 314 101 single-r-math.c REAL GNU R math routines. 547 102 single-rnd.c REAL pseudo-random number generator. 194 103 single-svd.c REAL GSL matrix SVD decomposition. 106 104 single-torrix.c REAL vector and matrix support. 259 105 single-torrix-gsl.c REAL GSL vector and matrix routines. 1285

## Algol 68 Genie include files

 File Synopsis Lines 1 a68g-common.h Common definitions. 341 2 a68g-config.win32.h Default WIN32 configuration file. 124 3 a68g-defines.h General macro definitions. 660 4 a68g-diagnostics.h Macros and text strings for diagnostics. 248 5 a68g-double.h LONG REAL definitions. 451 6 a68g-enums.h Enumerated constants. 265 7 a68g-environ.h Standard prelude and postlude. 63 8 a68g-frames.h Macros for opening/closing frames. 212 9 a68g-generic.h Platform dependent definitions. 55 10 a68g-genie.h Interpreter related definitions. 465 11 a68g.h Master include file. 168 12 a68g-includes.h Common a68g includes. 294 13 a68g-level-3.h Platform dependent definitions. 80 14 a68g-lib.h Internal math routines. 129 15 a68g-listing.h Definitions for making listing files. 38 16 a68g-mach.h Machine parameters. 72 17 a68g-masks.h Bit masks. 76 18 a68g-math.h Internal math tables. 441 19 a68g-moids.h Definitions related to MOIDS. 104 20 a68g-mp.h Definitions for multiple precision modes. 577 21 a68g-nil.h Various forms of NIL. 86 22 a68g-numbers.h Math constants. 45 23 a68g-optimiser.h Definitions for the plugin compiler. 119 24 a68g-options.h Definitions for option processing. 39 25 a68g-parser.h Definitions related to the parser. 174 26 a68g-physics.h Various numerical constants from GSL. 240 27 a68g-platform.h Platform dependent definitions. 120 28 a68g-plugin.h Definitions for the plugin compiler. 207 29 a68g-postulates.h Definitions related to postulates. 35 30 a68g-prelude-gsl.h GSL definitions. 541 31 a68g-prelude.h RTS related definitions. 745 32 a68g-prelude-mathlib.h R standalone mathematics library definitions. 138 33 a68g-stack.h Macros for stack checking. 54 34 a68g-stddef.h Various standard definitions. 94 35 a68g-torrix.h REAL vector and matrix support. 84 36 a68g-transput.h Transput related definitions. 93 37 a68g-types.h Internal type definitions. 578

The number of source lines in this version is 78577.

## Posts in "Algol 68"

 Algol 68 A perspective of Algol 68 March 2023

To better understand the position of Algol 68 among today’s plethora of programming languages, we should consider their development …

 Algol 68 Announcing Algol 68 Genie 3.0 December 2021

I have released the current source as version 3.0. I have also updated the documentation, Learning Algol 68 Genie …

 Algol 68 A brief history of Algol 68 Genie November 2016

Being the author of Algol 68 Genie, people frequently ask me why a physical chemist wrote an Algol 68 compiler …

 Algol 68 Announcing Algol 68 Genie 2.0 September 2010

I have posted Algol 68 Genie Version 2.0.0 and its documentation …

 Algol 68 Revised Report on the Algorithmic Language Algol 68 June 2009

This is a translation of the Algol 68 Revised Report into HTML, for distribution with Algol 68 Genie, an Open Source Algol 68 interpreter …

 Algol 68 Announcing Algol 68 Genie 1.0 September 2002

Algol 68 was conceived as a successor to Algol 60 …