The algebraic programming language Opal has been designed as the test bed for experiments with the specification and development of functional programs. Opal is not the end all be all of programming languages. It is not perfect. Neither is it an academic or toy language. Opal is designed for solving real-world, large to small scale programming challenges. Opal unifies the entities of modules, functions/methods, classes and properties into its concepts of object and pattern. It also supports multiple programming paradigms (procedural, object-oriented, functional) allowing it to truly take the place of all the languages it is meant to replace.
SIGNATURE GCD FUN GCD: nat ** nat -> natImplementation file:
> IMPLEMENTATION GCD IMPORT Nat COMPLETELY DEF GCD(a,b) == IF a % b = 0 THEN b ELSE IF a-b < b THEN GCD(b,a-b) ELSE GCD(a-b,b) FI FI