I recommend the fantastic book Haskell Programming from first principles by Christopher Allen and Julie Moronuki. In my opinion this is a great resource to start for someone completely new to pure functional programming.
After learning the basics of Haskell, I recommend participating in the Plutus Pioneer Program. The lectures are openly available on YouTube. There will also be a second iteration of the course later this year.
To add onto what has already been provided, if you want to try and learn more of the theory of Haskell and Haskell like languages (Category Theory and Type Theory), I'd recommend the fantastic courses by Bartosz Milewski:
- Category Theory for Programmers Textbook
- Category Theory for Programmers Part 1 Video Lectures
- Category Theory for Programmers Part 2 Video Lectures
- Category Theory for Programmers Part 3 Video Lectures
This series is a bit dry but it is extraordinarily helpful in understanding how to structure your code so that you can let the language do 90% of the work for you.
Smart contracts on Cardano are actually developed using Haskell which is then compiled into Plutus Core by the Plutus Tx compiler. Plutus Core is a very low-level programming language and programming wouldn't be fun.
The best place to start learning is to participate in the Plutus pioneers program.
More Haskell resources:
If you are not familiar with Haskell, grab a book such as Learn You a Haskell for Great Good!, as it will be very helpful.
If you want to focus on the Haskell features required for programming smart contracts, have a look at the Mongolia class recordings: Haskell and Crypto Mongolia 2020
Also see this YouTube playlist: Haskell for Imperative Programmers
As a dev myself, I'd suggest you wait another year or two for the libraries and tools to stabilize and become more straightforward. Right now it can be a headache just to get a local dev environment running.
That being said, you can start using the Plutus and Marlowe Playgrounds to start hands-on learning about smart contract code.
A good start to learn Plutus is at https://playground.plutus.iohkdev.io/tutorial/index.html
Have a look at the Plutus Pioneer Program: