
The C language is purely functional - beza1e1
http://conal.net/blog/posts/the-c-language-is-purely-functional/
======
ajross
Cute. There's actually a much more pedestrian point hidden in there, which is
that cpp really is an extraordinarily expressive (if hideously clunky)
environment, and you can do all sorts of good things with macros if you're
willing to learn the tricks.

It's really sad that a bunch of people who never did learn the tricks ended up
declaring macros as "bad" by fiat, to the extent that newer languages have had
to invent less expressive versions (C++) or omit the facility entirely (Java).
These days, it's almost a lost art.

~~~
russell
Actually, it was a bunch of people who thought that the rest of us were not
competent enough to use them without shooting ourselves in the foot, head, or
other parts of our anatomy. (James Gosling are you listening?)

I used macros to great effect to create constant data structures for such
things as keyword tables in parsers. The art of programming has advanced a
long ways since the early days of C. I think the badness of macros is more a
function of those times than inherent problems with macros themselves.

~~~
burke
"...without shooting ourselves in the foot, head, or other parts of our
anatomy."

I hear macros are useful for shooting yourself in the gun.

------
stcredzero
Not that again! Someone comes up with some reason to say that C is really
Functional about every one and a half years.

~~~
magv
The article wasn't really about C at all.

The author was making a joke about how Haskell uses monads to remain pure.

"cpp" is Haskell, "C" is the way IO monad is used.

~~~
dagheti
Isn't it important though how good CPP is at being Haskell, and how good IO is
at being C?

This seems to come back to that original Scala-is-not-functional article,
which seems to argue that it isn't features or purity that makes a language
"functional" or not, it's how good the language is at working with that style.

------
jlouis
Corollary: There are no C and C++ programmers. Only CPP programmers using C
and C++ for monadic computations :)

------
dimitar
Kernighan of K&R didn't invent C. Only the "R", Ritchie did. They wrote a good
book together thought.

