On 1/17/2019 11:41 AM, Anthony Carrico wrote:
Weird!

A procedure is a (branching) sequence of instructions.

Non-programmers have an accurate notion of the word from outside of
computer programming in recipes and instruction manuals.

A function maps inputs to outputs.

Non-programmers often use the word to denote a relationship between values.

Computer programmers lost or muddled the distinction (probably because
the same syntactic abstraction mechanism was used for both ideas).

Historically, many computer language designers were mathematicians, and they deliberately sought to distinguish "computer" functions from "mathematical" functions.

It has yet to work completely - witness the legions of newbies every year who don't understand that computer arithmetic differs from the math they were taught in school.


However, for practical reasons, the programming community is now placing
more emphasis on the distinction between functional and procedural
abstraction, so I'm very surprised to see the Racket community rally to
eliminate it. Even within the same abstraction mechanism, the two ideas
are very useful.

The problem is that quite a lot of the talk about functional programming is just marketing.  The languages can't live up to the promise of mathematical purity, and implementations, for the most part, don't even recognize and apply all the static optimizations that use of pure functions would make possible.

WRT eliminating the distinction - that was dead and buried before Racket began.  There are no pure functional computer languages, and there never will be:  real programs have to interact with the impure real world.

YMMV,
George

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to