나는 removeList라는 재귀 함수를 만들어야합니다. 아무도 도와 줄 수 없습니까?목록에서 요소를 제거하십시오
1
A
답변
3
makeList
은 데이터 생성자가 아닌 일반 함수이므로 패턴 일치는 할 수 없습니다. Cons
및 Nil
에 패턴 일치가 필요합니다. 목록이 makeList
에 의해 반환되었다는 사실은 관련이 없습니다.
removeList :: Eq a => a -> List a -> List a
removeList _ Nil = Nil
removeList x (Cons y ys) | x == y = ys -- Don't recurse if you only want to remove the *first* occurrence.
| otherwise = Cons y (removeList x ys)
List
유형으로 직접 작업 할 수 있습니다. 결과를 내장 목록으로 작성한 다음 다시 변환 할 필요가 없습니다.
형식 생성자 []
및 데이터 생성자 (:)
이 중위 위치가 아닌 접두사 위치에 사용되는 기본 제공 목록에 구현 된 것과 동일한 기능과 비교됩니다.
removeGeneric :: Eq a => (List a -> List a) -> a -> List a -> List a
removeGeneric _ _ Nil = Nil
removeGeneric f x (Cons y ys) | x == y = f y ys
| otherwise = Cons y (removeGeneric f x ys)
removeFirst = removeGeneric (\y ys -> ys)
removeAll = removeGeneric removeAll
removeGeneric
에 첫 번째 인수는 호출 기능은 다음과 같습니다가 모두 removeFirst
및 removeAll
의 기초로 사용할 수 있도록
removeList' :: Eq a => a -> [] a -> [] a
removeList' _ [] = []
removeList' x ((:) y ys) | x == y = ys
| otherwise = (:) y (removeList' x ys)
그냥 재미를 위해,의이 코드를 일반화 할 수 목록에 처음으로 일치하는 것을 발견 할 때 첫 번째 어커런스를 제거하려면 tail
에 해당하는 것을 호출하면됩니다. 모두를 삭제하려면 번 발생합니다.
관련 문제
- 1. 합계가 0 인 링크 목록에서 요소를 제거하십시오.
- 2. Haskell 목록에서 중복 항목을 제거하십시오.
- 3. 목록에서 유형의 항목을 제거하십시오.
- 4. 목록에서 값을 제거하십시오.
- 5. 목록에서 Mysql 유형을 제거하십시오.
- 6. 목록에서 중복을 제거하십시오.
- 7. 다른 요소의 색인을 변경하지 않고 python 목록에서 요소를 제거하십시오
- 8. 목록에서 파이썬의 숫자로 끝나지 않는 모든 요소를 제거하십시오.
- 9. 패턴을 사용하여 목록의 요소를 제거하십시오.
- 10. Excel - 목록에서 중복 행을 제거하십시오.
- 11. 다른 목록에서 항목 목록을 제거하십시오.
- 12. 루프 목록에서 안전하게 목록을 제거하십시오.
- 13. 계획 - 목록에서 홀수 원자를 제거하십시오.
- 14. 숫자 목록에서 "\ n"을 제거하십시오.
- 15. 다른 목록에서 목록의 내용을 제거하십시오.
- 16. 일반 목록에서 컬렉션 개체를 제거하십시오.
- 17. 정수 목록에서 모든 음수를 제거하십시오.
- 18. 목록에서 마지막으로 나타나는 문자열을 제거하십시오.
- 19. 문자열을 드롭 다운 목록에서 제거하십시오.
- 20. 목록에서 값을 포함하는 행을 제거하십시오.
- 21. SCHEME 목록에서 원자 값을 제거하십시오.
- 22. Zend_Navigation에서 홈 요소를 제거하십시오.
- 23. 컬렉션에서 N 요소를 제거하십시오.
- 24. 목록의 마지막 요소를 제거하십시오.
- 25. jQuery로 iframe의 요소를 제거하십시오.
- 26. node.js에서 요소를 제거하십시오. 버퍼
- 27. 즉석에서 H3 요소를 제거하십시오.
- 28. 루비의 배열에서 요소를 제거하십시오.
- 29. 빈 XML 요소를 제거하십시오.
- 30. 다차원 배열에서 요소를 제거하십시오
모든 항목을 제거하려면 어떻게해야합니까? 호기심을 묻는 것만으로도 –
이됩니다.하지만 대답 해 주셔서 감사합니다. –
죄송합니다 코드에서 언급 한 것을 참조하십시오. –