저는 하스켈에서 완전한 초보자입니다. 나는 하스켈에서 사용하고 튜플의 목록을 가지고 : 그래서 튜플의 목록 인 경우 : 구조는이 [(a,b),(c,d),(e,f),(g,h)]
튜플 목록에서 최대 요소 찾기
내가 원하는 것은 두 번째 값에 따라이 튜플의 최대의 요소를 반환하는 것 같다 [(4,8),(9,10),(15,16),(10,4)]
, 최대 요소를 (15,16)
으로 지정합니다.
하지만 어떻게해야할지 모르겠다. 이것은 지금까지 내 시도,
maximum' :: (Ord a) => (Num a) => [(a,b)] -> a
maximum' [] = error "maximum of empty list"
maximum' [(x,y)] = -1
maximum' (x:xs)
| snd x > snd(xs !! maxTail) = 0
| otherwise = maxTail
where maxTail = maximum' xs + 1
내가 나를 위해 말도 안돼이 오류 메시지가 얻을 :
newjo.hs:23:25:
Could not deduce (a ~ Int)
from the context (Ord a, Num a)
bound by the type signature for
maximum' :: (Ord a, Num a) => [(a, b)] -> a
at newjo.hs:19:14-47
`a' is a rigid type variable bound by
the type signature for maximum' :: (Ord a, Num a) => [(a, b)] -> a
at newjo.hs:19:14
In the second argument of `(!!)', namely `maxTail'
In the first argument of `snd', namely `(xs !! maxTail)'
In the second argument of `(>)', namely `snd (xs !! maxTail)'`
나는이 작업을 수행하는 방법에 대한 몇 가지 도움이 필요합니다.
감사. 나는 이것을 가장 좋아하지만, 다른 모든 해결책도 도움이되었다. –