If you are new to programming, I usually recommend “How to Design Programs”. It is the only text I know of that seems to teach people how to design programs, rather than expecting that they’ll work it out themselves based on writing code for a few years.
For a starting point for programmers, I usually recommend the Spring 2013 version of CIS194 - “Introduction to Haskell”—from UPenn. The material is good quality and it has great homework. Our meetup group relayed the lectures, so there are videos available here.
“Introduction to Functional Programming using Haskell (2nd Edition)” by Richard Bird is also really good if you want to get some hands on experience with using equational reasoning to prove things about programs, or to partially synthesize programs from their specifications. It is aimed at undergraduates, but is more advanced than CIS194.
“Parallel and Concurrent Programming in Haskell” by Simon Marlow is great for doing more applied work with Haskell, but I’d do CIS194 first.
I currently work for a group that runs free FP courses. There is an introductory course here that can be done on your own but is challenging—we only cover a subset of the content when we actually run the course. There is an applied course here that is easier to tackle without an instructor, but requires that you’re comfortable with the concepts from what we teach during the introductory course.
Most of my resources are Haskell related.
If you are new to programming, I usually recommend “How to Design Programs”. It is the only text I know of that seems to teach people how to design programs, rather than expecting that they’ll work it out themselves based on writing code for a few years.
For a starting point for programmers, I usually recommend the Spring 2013 version of CIS194 - “Introduction to Haskell”—from UPenn. The material is good quality and it has great homework. Our meetup group relayed the lectures, so there are videos available here.
“Introduction to Functional Programming using Haskell (2nd Edition)” by Richard Bird is also really good if you want to get some hands on experience with using equational reasoning to prove things about programs, or to partially synthesize programs from their specifications. It is aimed at undergraduates, but is more advanced than CIS194.
“Parallel and Concurrent Programming in Haskell” by Simon Marlow is great for doing more applied work with Haskell, but I’d do CIS194 first.
I currently work for a group that runs free FP courses. There is an introductory course here that can be done on your own but is challenging—we only cover a subset of the content when we actually run the course. There is an applied course here that is easier to tackle without an instructor, but requires that you’re comfortable with the concepts from what we teach during the introductory course.