Does anyone have a solid place to start with functional programming? Don't really care too much about the language it's associated with but would really like to jump into learning the concepts behind it.
> Real World OCaml is aimed at programmers who have some experience with conventional programming languages, but not specifically with statically typed functional programming. Depending on your background, many of the concepts we cover will be new, including traditional functional-programming techniques like higher-order functions and immutable data types, as well as aspects of OCaml's powerful type and module systems.
It's a nice segue into the world of functional programming if you're not ready to give up on imperativeness just yet.
If you come from a C# background I really enjoy the book Real World Functional Programming [1]. The way it lays out samples side by side with C# and F# is pretty great and really helped me start to understand functional programming and F#.
That is a pretty excellent book, and definitely agree that it is helpful seeing the C# and F# code for the same example laid out side-by-side to compare. It helps a lot for those situations where you can't just switch to a functional-first language, but you want to use more functional constructs in your code.
After all, if you try hard enough, you could code in a functional style in C.
I like Erlang. It's got an odd syntax so some of the Java/C# baggage is dropped. It's oddity makes it kinda fun in its own right. If you want to do network programming, OTP is pretty neat.
I understand that. I started to make my product in Clojure. Got fairly along. Created an ArangoDB driver and migrator for it. Once I started creating the services, I keep having to go up through essentially the call stack to figure out what shape the data had at various points. I tried using a contract framework (forget its name, but I preferred it to Clojure's recent typing that doesn't type the value of a map). Now I'm back in Java.
The nice thing that either language will help introduce functional ideals. I recommend Erlang since its so unique.
I've recommended this book in the past, and I'll recommend it again. Functional Programming in Scala [1] does a good job of taking traditional stateful object oriented code and refactoring it using pure functional approaches. Coming from an OOP background, I've found it has really helped my understanding of functional programming.
[1] https://www.manning.com/books/functional-programming-in-scal...
For me at least, this site made programming fun again! It's colorfully written and mostly easy to follow, though some of the concepts are a bit mind blowing if you are only familiar with OOP like I was (passing a collection of functions to map really made me stop and think). Oh and it's a pretty neat way to learn emacs if you haven't already.
The last section there is important. In the real world, your language is not always your choice, but it's perfectly possible to put functional structure in most any language.
https://functionalcs.github.io/curriculum/ has a bunch of resources. Robert Harper's Programming in Standard ML book plus the notes from 15-150 at CMU are good for general FP concepts.
> Real World OCaml is aimed at programmers who have some experience with conventional programming languages, but not specifically with statically typed functional programming. Depending on your background, many of the concepts we cover will be new, including traditional functional-programming techniques like higher-order functions and immutable data types, as well as aspects of OCaml's powerful type and module systems.
It's a nice segue into the world of functional programming if you're not ready to give up on imperativeness just yet.