У меня есть две функции, оба из которых возвращает список:Как написать оператор карты для сравнения каждого элемента из двух списков в haskell?
enter earth = head $ do
lst <- earth
return $ map (\x -> if (x == 0) then 2 else x) lst
helper earth = head $ do
lst <- tail (earth)
return lst
, где земля еще одна функция, которая возвращает список списков, как [[1,2,3], [2,3,4], [ 4,7,3]]. В вспомогательной функции я возвращаю второй элемент этого списка списков, т. Е. Головку хвоста. А в функции ввода только голова. Теперь я пишу еще одну функцию, и я хочу передать эти две функции в качестве аргументов. Я делаю это:
see :: [Int] -> [Int] -> [Int]
see enter helper = return $ map (\ x y -> if (x == 2) && (y == 0) then 2 else y) enter helper
Я в основном пытаюсь сделать, это проверить, если список возвращаемого ввести имеет 2 и второй список имеет нуль в этом месте, а затем изменить что 0 до 2 в противном случае пусть элемент во втором списке будет таким, какой он есть.
Что я здесь делаю неправильно?
EDIT:
Итак, есть функция земля возвращение как это: [[0,0,1], [1,0,1], [0,0,0]]. Функция ввода принимает головку земли (которая равна [0,0,1] и делает это следующим образом: [2,2,1]. Вспомогательная функция принимает и возвращает второй элемент (головка хвоста) список списков, возвращаемых землей (это [1,0,1]). Теперь функция see, принимает эти [2,2,1] и [1,0,1] как два аргумента, и если элемент 2 в первом списке и 0 во втором списке (т. Е. Из этого примера, второго элемента в обоих списках, тогда 0 должно стать 2 во втором списке, а то, что должно быть возвращено, должно быть примерно таким: [1, 2,1]
Используйте функцию 'zip'? –