I would not call it challenging, but it was a fun and interesting experience.
Learning functional programming through the CS 3110 course at Cornell University
Here is the link:
https://courses.cs.cornell.edu/cs3110/2021sp/textbook/
The OCaml part is free, well structured and does not take long to complete.