[comp.lang.functional] Let's replace the name "functional"

gkj@doc.ic.ac.uk (Guido K Jouret) (05/25/90)

In article <1990May15.152529.7427@watdragon.waterloo.edu> gvcormack@watdragon.waterloo.edu (Gordon V. Cormack) writes:

[verbiage deleted]

>I would like to see suggestions for words to describe:
>
>   (a) programming or programming languages in which function 
>       abstraction and application completely replace any notion of
>       state.  
>
>   (b) programming or programming languages in which higher order
>       functions (value-returning procedures if you prefer) are
>       used extensively. 
>
>I believe "pure functional" or "applicative" both describe (a)
>unambiguously.  There appears to be no widely accepted term for (b),
>even though (b) is a very important programming methodology/language 
>design issue.
>
>So, you purists that take "functional" to mean "pure functional", what
>do you call (b).  I'm not particularly interested in Orwellian
>arguments that say I shouldn't be able to express such a concept.
>
>Here is a test for your new phrase.  Substituting it for X below should
>yield a true statement.
>
>   FP, Miranda, Scheme and ML are X, but 
>	      Ada, Fortran, and C are not X.

Yawn...

Anybody care to define the expression "to flog a dead horse" in
a functional context?  Anybody aside from dedicated sophists really think
that exercises like this are useful, informative, conclusive, or likely to
instantaneous peace, happiness, and nirvana?

Yo!  'nuff said already.

Guido...

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/ email:  gkj@uk.ac.ic.doc                         =  Humor is like a frog:    \
| rmail:  Functional Programming Section           =                           |
|         Dept. of Computing                       =  It can be dissected, but |
|         Imperial College                         =    usually dies in the    |
|         London SW7 2BZ                           =         process.          |
|         U.K.                                     =                           |
\   tel:  44-71-589-5111 xt: 7532                  =                           /
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

wolfson@amtfocus.UUCP (Steve Wolfson) (05/25/90)

In <1990May15.152529.7427@watdragon.waterloo.edu> gvcormack@watdragon.waterloo.edu (Gordon V. Cormack) writes:

>I have my opinion on the 'right' definition, but regardless of which
>opinion I hold, I know that a large number of people will misunderstand
>my meaning. 

>Whenever a convention or usage is so misunderstood, it must be 
>discarded.  Americans and the rest of the world can't agree on what a 
>gallon is, or on how to write a date (e.g. when on earth is 02-03-91), 
>so the only solution is to have some new standard.

>I would like to see suggestions for words to describe:

>   (a) programming or programming languages in which function 
>       abstraction and application completely replace any notion of
>       state.  

>   (b) programming or programming languages in which higher order
>       functions (value-returning procedures if you prefer) are
>       used extensively. 


>I believe "pure functional" or "applicative" both describe (a)
>unambiguously.  There appears to be no widely accepted term for (b),
>even though (b) is a very important programming methodology/language 
>design issue.

>So, you purists that take "functional" to mean "pure functional", what
>do you call (b).  I'm not particularly interested in Orwellian
>arguments that say I shouldn't be able to express such a concept.

>Here is a test for your new phrase.  Substituting it for X below should
>yield a true statement.

>   FP, Miranda, Scheme and ML are X, but 
>	      Ada, Fortran, and C are not X.


>   I'm not sure whether Lisp and Algol 68 are X, not X, or partially X.

The problem you are describing is real but will not go away by coming up
with a new name for your Class X languages.  The classification of anything
into a group name is based on the number of similarities the individual sees
between A and B.  The number of differences to the individual making the
classification are small enough for the individual not to exclude something
from the class.  If we create a new X langauge class, some people would want
to include Lisp others would not.  Then somewhere someone decides they don't
like any of the above language and they write SuperZ.  SuperZ is alot like
X languages but includes features from APL and Smalltalk and C that the
compiler author liked.  Now some people will want to put SuperZ into class
X others won't but if enough do the homogenity of features you used to
create class X will drift and you will be stuck in the same problem, what
do you do recreate a new class called X-prime?  What about all of the previous
literature that describes these things as functional langauges, do we reprint
it all using the X name?  If not we will be working with 2 terms and 
realistically the old familiar one wins out.  If a term can be understood
in context then why change it?  Use functional for the whole class and
use the qualifier "purely" for the subset of those languages that contain
no procedural elements at all (at least that is my assumption of your
X classifcation, yours may be different, see the problem...).

An author of an text on introductory computer hardware didn't like the
usage of the acronyms RAM and ROM.  RAM means random access memory and
ROM means Read Only Memory.  But of course by common usage RAM is used for
memory that is both read/write.  A ROM by pure definition is really a type
of RAM.  So the author invented the term WREM (Write/REad Memory).  
Obviously this new terminology has not taken the computer world by storm,
individuals still use the more comfortable RAM and some even still use the
older term Core (not so much as in the early days of micros, way back when
10-12 years ago ). 

Proliferation of new terminology does not alway make for a clearer
understanding.  Academia is full of individuals who write papers that
seem to be more about creating new terminology, paradigms, and analogy
rather then useful new ideas (I am not classifying you into this 
category :-) ).  Unless there is an overwhelming reason forced linguistic
change just doesn't happen. I don't see the overwhelming need for 
reclassification here, but then I probably am not as tuned in to the nuances
of the subject as you.

Lengthy discussions of this should probably be moved to sci.language.


Stephen Wolfson                         E-Mail: ...!uunet!motcid!wolfsons
Motorola Cellular                                       or
1501 W. Shure Dr.  IL27-1155                       wolfson@mot.com
Arlington Heights, IL
"The nice thing about standards is that there are so many of them from
which to choose."  - Andrew S. Tannenbaum

manis@cs.ubc.ca (Vincent Manis) (05/26/90)

In article <1990May15.152529.7427@watdragon.waterloo.edu>
gvcormack@watdragon.waterloo.edu (Gordon V. Cormack) writes:
 
>Here is a test for your new phrase.  Substituting it for X below should
>yield a true statement.
>
>   FP, Miranda, Scheme and ML are X, but 
>	      Ada, Fortran, and C are not X.
>
>
>   I'm not sure whether Lisp and Algol 68 are X, not X, or partially X.

Algol 68, like its predecessor Algol 60, had some embarrassing problems.
One of Algol 68's bugs was that even though it had procedures as
allegedly first-class citizens, higher-order procedures were impossible.
This was a consequence of the incredibly baroque type structure (which
was all defined in the syntax, and included syntactic categories such as
"refety rowsety ROWWSETY nonrow slice", and, in one draft, "FIRM MOIST
PARADE"), in which a higher-order procedure would have had to have had
an infinitely recursive type, in addition to requiring heap storage for
closures. 

It's a mark of the advances in both programming languages and in
hardware and software that neither problem is serious in modern
functional languages.
--
\    Vincent Manis <manis@cs.ubc.ca>      "There is no law that vulgarity and
 \   Department of Computer Science      literary excellence cannot coexist."
 /\  University of British Columbia                        -- A. Trevor Hodge
/  \ Vancouver, BC, Canada V6T 1W5 (604) 228-2394

jeff@aiai.ed.ac.uk (Jeff Dalton) (05/27/90)

In article <1990May15.152529.7427@watdragon.waterloo.edu> gvcormack@watdragon.waterloo.edu (Gordon V. Cormack) writes:
>Here is a test for your new phrase.  Substituting it for X below should
>yield a true statement.
>
>   FP, Miranda, Scheme and ML are X, but 
>	      Ada, Fortran, and C are not X.
>
>   I'm not sure whether Lisp and Algol 68 are X, not X, or partially X.

How about "even"?  Even languages have a even number of letters in
their name.  "What about Miranda?", you say?  Well the correct way
to write Miranda is "Miranda(tm)", where (tm) is a trademark
character.  This defintion has the additional advantage of
explaining why Miranda had to be trademarked.

Lisp too is an even language.  The case for Algol 68 is less clear.

philip@Kermit.Stanford.EDU (Philip Machanick) (05/29/90)

In article <2585@skye.ed.ac.uk>, jeff@aiai.ed.ac.uk (Jeff Dalton) writes:
> In article <1990May15.152529.7427@watdragon.waterloo.edu>
gvcormack@watdragon.waterloo.edu (Gordon V. Cormack) writes:
> >Here is a test for your new phrase.  Substituting it for X below should
> >yield a true statement.
> >
> >   FP, Miranda, Scheme and ML are X, but 
> >	      Ada, Fortran, and C are not X.
> >
> >   I'm not sure whether Lisp and Algol 68 are X, not X, or partially X.
> 
> How about "even"?  Even languages have a even number of letters in
> their name.  "What about Miranda?", you say?  Well the correct way
> to write Miranda is "Miranda(tm)", where (tm) is a trademark
> character.  This defintion has the additional advantage of
> explaining why Miranda had to be trademarked.
> 
> Lisp too is an even language.  The case for Algol 68 is less clear.

Algol 68 is clearly an odd language.

Philip Machanick
philip@pescadero.stanford.edu