1
왜이 오류가 계속 발생하는지 알 수 있습니까?Haskell 스와핑 목록 요소의 오류
main = do
print $ check [4,3,2] 0 1
-- output expected [3,4,2], means just once check and swap not more
check (modXs, []) _ _ = modXs
check (modXs, [x]) _ _ = x : modXs
check (modXs, (x1:x2:xs)) counter limit
| x1 > x2 && counter < limit = x2:check (x1 : xs) (counter+1) limit
| otherwise = x1 : check (x2 : xs) counter limit
여기에 오류 메시지가 심지어 해달라고 유형에 대해 뭔가 그것을 이해 말한다 :
Couldn't match expected type `([a1], [a1])' with actual type `[a1]'
In the first argument of `check', namely `(x1 : xs)'
In the second argument of `(:)', namely
`check (x1 : xs) (counter + 1) limit'
In the expression: x2 : check (x1 : xs) (counter + 1) limit
오류를 게시 할 수도 있습니까? 그리고'check'에 타입 시그니처를 포함 할 수 있습니까? – bheklilr
당신이'main'에서 잘못된 인수로 확인을하고있는 것처럼 보입니다. 첫 번째 인수는 튜플이며 목록 만 전달합니다. 또한 check는 순수한 것 같아서,'main = print $ check (something, [4,3,2]) 0 1'을 의미할까요? –
사실 고마워.하지만 여전히 같은 문제 야. – Amir