"applicative" vs."functional"

Is there any difference between the terms "applicative" and "functional" when applied to programming languages?

As far as I can see from googling a bit, the answer is no, they are used interchangeably, although perhaps applicative is used less frequently. Does applicative reduction order imply strictness? If so, wouldn't it be sensible to have "applicative" to mean "strict functional"? And perhaps "normative" for "nonstrict functional" (assuming normal reduction order implies non-strictness)? Oh well, even if that were a sensible distinction, I guess the ship has sailed.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

There's also concatenative

I can't tell whether you have this in mind or not, but the functional language Joy is functional without being applicative, and in fact has spawned some interesting essays illustrating some details in this.

Functional PL's come in different flavors.

"Strict" and "Lazy" have a technical meaning in terms of evaluation. Functional languages can be strict (ML, Scheme) or lazy (Haskell).

The term "Functional", though, is not really a technical term but rather describes a language that allows for the manipulation of functions.

Terminology

Is there any difference between the terms "applicative" and "functional" when applied to programming languages?
No, not that I'm aware of.
Does applicative reduction order imply strictness?
Yes.
If so, wouldn't it be sensible to have "applicative" to mean "strict functional"?

No. "Applicative" refers to applying a function, and "applicative language" is a language based on the application of functions. "Applicative order reduction" means that arguments are reduced before a function is applied (which is why it is strict). There's no reason that the special case of applicative order reduction should contaminate the more general use of the term "applicative" in other contexts. (Not that terminology always makes sense, but in this case it does.)

Chris wrote:

The term "Functional", though, is not really a technical term but rather describes a language that allows for the manipulation of functions.

Sabry's What is a Purely Functional Language? makes "purely functional language" a technical term. Once you compromise on properties like purity, though, things get much fuzzier. (Sabry's paper shows that even the pure version is not as easy to define as might be imagined.)