我有兩個功能這兩者的返回的列表:如何編寫map語句來比較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否則讓第二個列表中的元素保持原樣。
我在這裏做錯了什麼?
編輯:
所以,有一個接地功能的返回這樣的:[[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'功能? – 2014-11-02 21:34:48