Martial Boniou wrote:
> Hi,
>
> I confirm. Factor deserves a look: it's a genuine combination of the
> Common Lisp world (homoiconic, macros, CLOS) and the Smalltalk RAD
> created by mixing Self and Forth. Plus there's concurrency support and
> native code compilation.
> I always liked concatenative programming I discovered 15 years ago
> with HP RPN calculator and PostScript (on NeXT). I think the data
> first design of stack-based languages is good for XP. For altaic
> languages' speakers (korean, japanese, turkish), it's near their way
> to construct sentences (like Smalltalk for SVO group). Writing
> R.E.P.L. is more beautiful than writing (L (P (E (R)))) because you
> don't have to look at the whole code to find out the data (near the R
> here) but you start with it (you know what? before knowing how?).
> (I say that but I am a bit addict to prefix ASTs by force of habit
> with SBCL or Clojure.)
>
>
>   
If you really wanted R.E.P.L style coding, it is possible in clojure 
using the -> macro (kinda neat, if you ask me). If I am not mistaken, 
the big difference between Forth and Factor is the presence of 
quotations in Factor which it inherited from Joy, I guess. Quotations, 
makes it possible to have something like first class functions in a 
stack language world.

Expressiveness-wise, the main difference I see between "conventional" 
languages and concatenative languages is the idea of being able to wrap 
a piece of code in an 'environment' of execution determined outside its 
immediate surrounding scope. In a conventional language you would have 
function parameters (in the immediate outside scope of the function) as 
the key way to modify the behavior of a function. In concatenative 
languages the argument to a quotation on a stack can be expressed 
differently and arguably fairly independently. Note that it might be 
possible to get some of the same expressiveness using a concept like 
clojure's "binding" and judicious use of global variables... in such a 
case, factor only buys you anonymous global variables potentially 
avoiding naming conflicts ;).

pinocchio

P.S. The argument about expressiveness is generally very subjective 
besides some glaring violations (dare I bring C++... ;) ).
P.S(2). Disclaimer: haven't done any programming in stack based languages.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to