Примерно через 2 года есть некоторые части Haskell, которые я очень хорошо знаю (Ptr вещи, векторные библиотеки), некоторые области, которые я знаю достаточно, чтобы быть опасными (шаблон haskell), и другие, которых я не коснулся (веб-фреймворки, дженерики). В целом, хотя, я думаю, я хорошо понимаю язык.
Большая сложность изучения Хаскелла - это (очень крутая ИМО) кривая обучения. Есть много разных взаимосвязанных вещей, которые вам нужно выучить, прежде чем вы начнете продуктивно работать с языком, и, поскольку они взаимосвязаны, трудно понять их без хотя бы нескольких месяцев опыта. Я советую придерживаться этого, и если вы думаете, что чего-то не понимаете или что-то происходит глубже, вы, вероятно, правы. Если вы не можете понять это сейчас, просто идите и вернитесь к этому через месяц или около того. В конце концов вы достигнете достаточного прогресса на нескольких фронтах, чтобы все стало ясно.
Как и любой язык, лучший способ добиться прогресса - это написать код. Это займет больше времени, потому что Haskell находится дальше от языков, которые вы уже знаете, но это того стоит.