> Jeff made a list of the `functional' and `side-effecting'
> procedures in REBOL. I disagree with his assessment on a
> number of the procedures:
Actually, (hairspliting/on) my two lists were just natives
and mezzanines which side effect their operands or the
interpreter at large and those that don't. I didn't
describe the latter as being functional. ( And I admit an
amount of arbitrariness to some of my selections... )
[ . . . ]
> 3. Control flow natives such as all, any, break, catch,
> exit,
> halt, quit, etc. etc. can't easily be lumped into
> the `functional' category.
>
> 4. i/o commands such as about ask confirm help echo
> licence
> load read write open source what etc. etc. etc.
> Clearly side effect the console.
> 5. Procedures such as dir? exists? get now query size?
> etc.
> measure external state and are thus not `functional'
Right, but surely "Classical" and "Pure" functional
languages are ALLOWED to print to the terminal, talk to the
"external world", are allowed to quit a session,
effectively exert some amount of program flow (COND) lazily
evaluate expressions (any all => and or), or do you allow
them that lee way? I always thought Lisp was a functional
language, but it has output, and file capabilities, allows
you to turn on tracing, allows you to exit the session,
even lets you setq. The constraints to earn your
"Functional" certification seem exceedingly daunting. It
would seem Lambda Calculus itself would barely merit your
designation. :-) I jest...
> But I don't want to get into a pissing contest with Jeff.
Me-neither . . . yuck.
> I'll concede that REBOL, as shipped, has about half-again
> as many `functional' natives as `side-effecting' ones.
[ . . . ]
> Am I wrong? Perhaps REBOL does encourage a `functional'
> programming style but all the people who submit scripts
> stubbornly refuse to adhere to the `natural' style of
> REBOL. Or perhaps REBOL is closer to classic procedural
> languages such as Pascal and Basic, than it is to classic
> `functional' languages such as Erlang, Haskell.
Well, REBOL is a hybrid. It is not STRICTLY or PURELY
functional, and it's not STRICTLY or PURELY proceedural. I
prefer to describe it as functional, but you've helped me to
realize that, like many of the good things about REBOL, it
is a little more involved than just that. Thanks. REBOL is
a first class functional language (with a good deal of
support for proceedural style programming).
A really cool
1st class OO/Functional/Procedural/Distributed language.
-jeff