Aleph Language

This is now called Afnix Language, and it can be found here: www.afnix.org


Functional Programming language with good support for Object Oriented programming. See the website www.aleph-lang.org (''That site has been sold off to the ubiquitous Search Engine of the Broken Link...the Vulture Search Engine). From the website:

"Aleph is a multi-threaded functional programming language with dynamic symbol bindings that support the object oriented paradigm. Aleph features a state of the art runtime engine that supports both 32 and 64 bits platforms. Aleph comes with a rich set of libraries that are designed to be platform independent"

The latest available release is 0.8.1, from mid-2001, but the project is still being developed, and the author, Amaury Darsch, has assured me he's about to release version 0.9.0, so stay tuned. Aleph Language is Free Software.

Aleph Language release 0.8.1 is a fantastic bundle of programming power. The interpreter/compiler and accompanying libraries compile flawlessly with gcc 2.96, and with just an easy to fix define-collision with gcc-3.2. Performance is very good, and the accompanying tests and examples are well documented. It also bundles (and makes available as a separate package, in PS and PDF) the complete Aleph documentation (in LaTeX, in three volumes (0: installation guide, 1: Programmer's Guide and 3:Library Reference)), of well over 250 pages of documentation, clear and easy to grasp. The 'standard library', so to call it, provides I/O, access to the system, networking abilities (Sockets, UDP, TCP, Mail) plus a Web/CGI library.

Aleph Language provides Functional Programming capabilities by implementing first class functions: lambdas (closures), and gammas (symbol scope limitation); Object Oriented abilities and a rich set of prefactored classes (list, vector, graph, etc...) in a pretty Lisp Language syntax, although with a more flexible setup; multithreading with automatic object protection and a whole new Regular Expression system; the Libraries provide additional power through different objects in clear and well structured namespaces. --David De Lis


println "Hello World!"

Factorial:

classical:

trans fact (n) { (if (< n 1) 1 (* n (fact (- n 1))) }

tail-recursive:

const fact (n) { fact-helper n 1 } const fact-helper (n m) { (if (< n 1) m (fact-helper (- n 1) (* n m))) }

A more meaningful example (0109.als in the distribution):

# compute the scalar product of two vectors const scalar-product (u v) { trans result 0 for (x y) (u v) (result:+= (* x y)) eval result } # define 2 vector const v1 (Vector 1 2 3) const v2 (Vector 2 4 6) println "scale product [1 2 3][2 4 6] = " (scalar-product v1 v2)


See original on c2.com