# Algol68toc-1.8

Version of implementation Malvern Algol68 to C of programming language Algol68

This Algol 68RS compiler developed by the UK Defence Research Agency. It implements almost all of the language known as Algol 68, and extends that language in minor respects. This version of the 68RS compiler generates code in C, which then can be compiled and ran on Intel based Linux.

## Examples:

### Factorial - Algol68 (108):

This example uses recursive factorial definition with first 7 numbers precomputed.

``````PROC factorial = (INT n)LONG LONG INT:
CASE n+1 IN
1,1,2,6,24,120,720 # a brief lookup #
OUT
n*factorial(n-1)
ESAC
;
``````

### Fibonacci numbers - Algol68 (187):

Generative method. This code specimen uses a callback to generate the sequence on demand.

``````MODE YIELDINT = PROC(INT)VOID;

PROC fibonacci = (INT n, YIELDINT yield)VOID: (
INT even:=0, odd:=1;
yield(even);
yield(odd);
FOR i FROM odd+1 TO n DO
yield( (ODD i|odd|even) := odd + even )
OD
);

main:(
# FOR INT n IN # fibonacci(16, # ) DO ( #
##   (INT n)VOID:(
print((" ",whole(n,0)))
)); # OD #
print(new line)
)
``````

### Fibonacci numbers - Algol68 (188):

Analytic method

``````PROC analytic fibonacci = (INT n)INT:(
REAL sqrt 5 = sqrt(5);
REAL p = (1 + sqrt 5) / 2;
REAL q = 1/p;
ENTIER( (p**n + q**n) / sqrt 5 )
);

FOR i FROM 0 TO 16 WHILE
print(whole(analytic fibonacci(i),0));
# WHILE # i /= 16 DO
print(", ")
OD;
print(new line)
``````