I meant, that in no project, i have been involved in, a functional programming language was used, thus i didn't _need_ to learn one. I will probably just to broaden my horizon.
I also know that i don't need to learn brainfuck, just don't ask me how i know that ;)
> meant, that in no project, i have been involved in, a functional programming language was used, thus i didn't _need_ to learn one.
Ah, fair point.
>I also know that i don't need to learn brainfuck, just don't ask me how i know that
Well, objectively, what would BF teach you? What is it, a stack language? Then Factor or something would be a better place to start. I don't know enough about the language but I'm sure it's the lowest category of whatever category it resides in.
I would point someone to brainfuck if they were trying to understand virtual machines, Turing machines, and fundamental computation concepts.
It's basically a virtual machine with less than ten bytecodes, which can be trivially implemented in a page of C. It's way too simple to be practical, but an hour or two toying with it should give a solid foundation for further study.
After that, I'd recommend implementing a Forth (and/or reading the excellent Jonesforth notes (http://www.annexia.org/forth)), and the Lua source. Lua's VM is really well designed, but the code is still small and reasonably easy to follow.
Brainfuck is generally considered an esoteric programming language and by the definition of Wikipedia esoteric programming languages are not meant to be used for " real-world programming" and are even only written as a "joke".
To learn stack based programming one should look at assembler in my opinion, which i already mentioned.
The point was that i don't have to learn something only to learn that i didn't need to learn it in the first place.
>The point was that i don't have to learn something only to learn that i didn't need to learn it in the first place.
I was looking at more from the point of view of being a large hole in your knowledge base, and one that's likely to get really important soon. I know when I learned my first functional language, Ocaml, it was a really mind bending experience. It took me about a week to finally "get it", where as normally languages are so similar that a couple of hours is easily enough to grasp all the concepts, the rest of time is just getting faster.
With many common languages, "learning" the language has more to do with learning APIs and minor syntactic quirks. You'll learn more if you chase after languages with very different models of computation.
Languages I've found particularly mind-blowing: Perl (esp. coming from C++), Scheme, OCaml, Prolog, Erlang, J / APL.