I think it's different for everyone, though it seems to be a common theme that people need to throw themselves into the deep end and do something more meaningful like a CRUD app or CLI tool in order to be invested. I think people need to be invested if they want to learn, because otherwise there's always other day job or life stuff that's way too easy to be distracted by. In a way it's very similar to adding user stickiness to a product you're selling, except in this case you are your own user and you have to add your own stickiness.
If you're doing a CRUD thing, I'd suggest supporting both JSON and HTML representations of your responses (and Yesod works great for this). I think the art is in the details between the language parts you know and the libraries you end up interfacing with. Once you start doing this for real, that's when the details you learned in isolation in the beginning all begin to fit together.