2014-03-14 5 views
-1

Я пытаюсь запрограммировать программу с помощью Haskell, но я не могу понять одну из моих потребностей.Haskell: сравнить два списка и отобразить двойные элементы

Что мне нужно: Функция сравнения двух списков и отображения двойных элементов (элементов, которые находятся в обоих списках).

К сожалению, я не могу найти что-либо полезное в Интернете.

Любой, кто может помочь или дать мне удар в правильном направлении?

Заранее благодарен!

Eq a => [a] -> [a] -> [a] 
[a] `intersect` [a] 
+3

Действительно? Вы ничего не можете найти? Что вы пробовали? Какая математическая операция может быть полезной здесь? –

+0

пересекаются, но я не могу заставить его работать в функции. (Я новичок в Haskell) – user2021386

+4

Мы можем сказать, что вы новичок. Я предполагаю, что это задание. Есть общее ожидание (по крайней мере, * I * ожидать), что вы пробовали сначала и рассказать нам, что вы пробовали. Что вы подразумеваете под «не может заставить его работать в функции»? Опять же, что вы пробовали? Покажите нам свой код! –

ответ

4

Функция, которая будет принимать два список и дает список элементов, которые происходят в обеих входных списках также потребуют списки, чтобы быть сопоставимыми для равенства. Итак, мой первый догадаться, что подпись что-то вроде

Eq a => [a] -> [a] -> [a] 

Если вы feed this signature to Hoogle вы обнаружите, что функция intersect делает то, что вы хотите:

Prelude Data.List> [5,7,9,8,1,3] `intersect` [3,8,10,4,7,11] 
[7,8,3] 
+0

Большое спасибо. Я нашел что-то вроде этого, но это должна быть функция, которую я могу использовать в любом списке. – user2021386

+0

@ user2021386 Я просто расширил свой ответ, чтобы объяснить, как я нашел эту функцию, т. Е. Как вы можете использовать [Hoogle] (http://www.haskell.org/hoogle/) для поиска функций на основе необходимой вам подписи. –

+0

Ah ok ... Поэтому я должен определить эту подпись для функции. И сравнить два списка с пересечением? Как в коде на мой отредактированный вопрос? – user2021386

Смежные вопросы