filtered тоже не должен быть траверсалом, и паттерн матчинг тоже должен быть всегда полным, и undefined быть не должно, и head должен возвращать maybe или требовать непустой список
мы находимся в мире, где Num в хаскеле это не только законный класс, но и единственный нормальный способ определять для типов числовые литералы, и переопределять +
Пользователь filtered не должен полагаться на то, каким именно образом реализация нарушает законы траверсалов, он просто должен знать, что законы нарушаются, и всё