Identifying Different Student Clusters in Functional Programming Assignments: From Quick Learners to Struggling Students