map2는 두 개의 목록 ls1과 ls2와 함수 F를 취해 ls1과 ls2 중 가장 짧은 것과 동일한 길이의 목록을 반환합니다. 이는 i 번째 요소가Haskell의 고차 함수 - "No instances for ..."
module Map2 where
map2 lst1 lst2 f = map2_iter lst1 lst2 f len 0 []
where len = (min (length lst1), (length lst2))
map2_iter (x:lst1) (y:lst2) f len i acc = if (i == len)
then acc
else let res = (f x y) in
map2_iter (lst1) (lst2) (f) (len) (i+1) ((res):acc)
map2_iter [] [] f len i acc = []
(순서대로) LS1과 LS2의 i 번째 요소에 F를 적용한 결과입니다 내가 정말 모르겠어요 다음과 같은 오류
Map2.hs:3:20:
No instances for (Eq (Int -> Int), Num (Int -> Int, Int))
arising from a use of `map2_iter'
Possible fix:
add instance declarations for
(Eq (Int -> Int), Num (Int -> Int, Int))
In the expression: map2_iter lst1 lst2 f len 0 []
In an equation for `map2':
map2 lst1 lst2 f
= map2_iter lst1 lst2 f len 0 []
where
len = (min (length lst1), (length lst2))
있어 이 오류가 의미하는 것. 아무도 도움을 줄 수 있습니까?
또한 이것은 hw가 아니라 테스트 준비입니다.
Shoud이 기능을 사용하면 결과가 반대로 나옵니다. 'zipWith'와는 달리, 여러분의 기능이 실제로하는 일을한다고 생각합니다. 그러나이 작업을 시작하기 전에 다른 길이의 목록을 사용하자마자 패턴 일치 오류가 발생합니다. – Ingo