Это будет довольно болезненно для списков, так как вам нужно будет просмотреть их все пары. Примерно так распечатывается правильный ответ, формируя все пары, где они равны, а затем подсчитывая размер.
let xs = [1,2,3,4]
let ys = [1,2,3,4]
length [x | x <- xs, y <- ys, x == y]
Довольно неловко делать это с точки зрения производительности. Для больших списков лучше использовать набор, поскольку вы можете проверить членство быстрее (обычно O (lg N), иногда O (1)), чем со списком (O (N)).