> 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

Reply via email to