hehehe

Francois-Rene Rideau fare@tunes.org
Wed, 17 Feb 1999 18:30:57 +0100


>>: Jecel Assumpcao Jr
>: Tom Novelli

[After suggestion by Alan Grimes to use LOGO].

Note that other recent takes at a parenthesis-less variants
on dynamic functional programming include:
* REBOL has quite a "free" syntax, that allows for quick development;
 but it suffers from having dynamic syntax-based reflection (ouch!),
 which seems to make it doomed to keep this syntax and not be compiled much.
* Dylan, that suffers from having a one global type hierarchy
 (like most existing object systems), and that dropped reflection altogether
 (used to have a SEXP syntax, too, but was dropped -- too bad).
* Smalltalk: recent flavors of it have closures.

Static functional programming include:
* SML, the standard flavor: no parens, but static types;
 powerful module system, comprehensive system library.
* OCAML, the cool flavor: much like SML, but stresses nice cool cutting-edge
 features over pseudo-"standardness". Even better module system,
 even better system access, even better everything, but not "standard".
* Haskell, the "pure". Interesting type-class system.
* Mercury, the pure logical. Worthy of interest.
 Current implementation heavily based on static compilation through C, tho.
Of the latter, only Mercury allow for Reflection and dynamism.

And of course, I don't see parentheses as an impediment to programming,
if you have a correct editor like Emacs, so there is still CommonLISP,
Scheme (many flavors thereof), EuLISP, ISLISP, etc.

What counts is not so much the syntax as the semantics.
Mercury comes closest to what I'd like for a system programming language:
it has purity, but can express side effects; it is static, but
can express some dynamism (not completely satisfactory, IIRC);
it has non-determinism and can express reflection correctly.

[ "Faré" | VN: Уng-Vû Bân | Join the TUNES project!   http://www.tunes.org/  ]
[ FR: François-René Rideau | TUNES is a Useful, Nevertheless Expedient System ]
[ Reflection&Cybernethics  | Project for  a Free Reflective  Computing System ]
 Data and procedures and the values they amass,
 Higher-order functions to combine and mix and match,
 Objects with their local state, the messages they pass,
 A property, a package, the control point for a catch - 
 In the Lambda Order they are all first-class.
 One Thing to name them all, One Thing to define them,
 One Thing to place them in environments and bind them,
 In the Lambda Order they are all first-class.

	-- from the printed copy of MIT AI Memo 848b (aka R4RS),
	Guy Louis Steele, with apologies to J. R. R. Tolkien.