a) side-effect free (scheme is not functinal), or
b) has first-class functions, and encourages their use (scheme is
functional), or
c) something else
the results are
a) 7
b) 3
c) 1
clearly a is favored. for myself, i'm going to try to avoid using it
entirely, and stick to "purely functional" and "higher order".
i found one response particularly interesting
> but for the
> record I choose (a). I tend to call languages like Scheme and ML
> "mostly functional" when speaking carefully, and "functional"
> otherwise because
what it means to me, is that you *wish* that "functional" meant
side-effect-free because that's its theoretical origin, but in fact
the "language box" in your brain disagrees. this is a similar
situation to using "bad" grammar, for example "it was me". we know
that's incorrect, but we use it anyway. language changes, and
sometimes the official definitions get out of sync with common usage.
i think what's happening to "functional" is very similar to what
happened to "fractal". when it was coined (again by mathematicians)
it meant "has non-integral hausdorf dimension". but now it means "has
features at all scales, and is probably self-similar" (it's easy to
design a set that satisfies the second definition, but not the first).
it changed because the second definition captures what people found
interesting/useful about fractals.
exactly what happens to "functional" depends on what people find
interesting/useful about {scheme, haskell, sml, miranda, fp, etc}.
these languages have two main features that distinguish them from the
mainstream. they are higher-order, which enables a very powerful
style of programming. they don't rely on side-effects, which enables
very powerful compiler optimizations. which of these becomes dominant
will decide the destiny of the word functional [insert also spracht
zarathrusta...]
--
grenada
scott draves panama
sp...@cs.cmu.edu iraq