Ваше определение u
явно плохое. Это помогает, если вы даете типовые подписи, поэтому мы немного лучше понимаем, что вы пытаетесь сделать (даже если вы не говорите нам словами).
Вы прокомментировали, что хотите, чтобы все списки имели длину> 1, это то же самое, что получить все ненулевые списки после удаления первого элемента. Так что используйте фильтр, который проверяет каждый элемент отдельно (поэтому вам не нужно map
), и создайте функцию, которая либо проверяет один список на длину> 1, либо его подсписок на ноль:
-- Use the O(n) length for your filter
u = filter ((> 1) . length) y
-- Or use an O(1) drop + null test
u' = filter (not . null . drop 1) y
Без использования композиции функций (.
) эти функции:
u = filter (\sublist -> length (sublist) > 1) y
u' = filter (\sublist -> not (null (drop 1 sublist))) y