Функции union
и intersect
имеются в списках стандартных библиотек, расположенных в Data.List
, но не в самом Prelude
.
Что касается эффективности, я собираюсь сказать «нет» всем вышеперечисленным, как вашей, так и стандартной библиотеке.На самом деле, ни один способ не может быть эффективным в списке операций с ограничением Eq
.Тем не менее, вы все равно можете найти реализацию в Data.List
информативной - см. Ссылки выше, которые я указал непосредственно на соответствующий источник.
Редактировать - ВкратцеВ дополнении ради потомков, обязательно посмотрите ответ Дона о том, что вы на самом деле хотите использовать для этой цели, а не более узкий вопрос "существуют ли эти функции вообще".