Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm not that old but I remember that, back in the days, functional meant just that you are able to use plain functions (without objects) and pass them around. By that definition, C is functional language, as scheme or lisp or javascript and many others.

I don't know why, but some years ago, "functional programmers" started to change and twist the definition of functional language step by step, until all those languages fell off and only Haskel remained as "functional enough".



I don't see much use in a definition of "functional language" that includes nearly every computer language. We already have a term for that.


I agree that "nearly every computer language" can be considered functional, as "nearly every computer language" can be considered imperative.

What I do not agree is when "functional programmers" claim that language is not "functional" just because it is not "pure functional" or Haskel alike.


well it's primary use seems to be providing a moving goal post for the functional side during the occasional OO vs Functional skirmishes.


That is required for parity with the OO side. Cf. Alan Kay on OO.


quite. Smalltalk is OO and Haskell is Functional are about the only (currently) accepted facts about the definitions of OO and Functional.


I always thought the fundamental difference between a functional and imperative language is that a functional language is built up from expressions, whereas an imperative one is built up from statements.


I think you at mixing words that look similar. It is a large problem in this sort of discussion:

Pure functions. (Only Haskell and friends are strictly pure, as is SQL if you squint.)

Higher order functions. (Java 7 doesn't allow you to pass around a callable function without embedding a link language with reflection or using one-method Runnable.)

First class functions. (Basic, SQL do not have this.)

Generic functions. (C does not have this. C++ does. Java does.)

These are three orthogonal properties a Lang age may have some or all of.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: