이것은 좋은 예는 아니지만 내가 요청하는 것을 이해하기에 충분히 쉽습니다. 목록을 재귀 적으로 다시 작성하고 목록이 작성된 후 정렬 기능을 적용하고 싶다고 가정 해보십시오. 여기에 올바른 답을 얻었지만 내가 원하는 방식이 아닌 구현이 있습니다.
import Data.List
rebuild_and_sort :: [Int] -> [Int]
rebuild_and_sort [] = []
rebuild_and_sort (b:bs) = sort (b:rebuild_and_sort bs)
문제는 인수 목록의 모든 요소에 대해 정렬이 호출된다는 것입니다. 필요한 인수를 변경하지 않고 목록이 완전히 재구성 된 후에 정렬이 한 번만 호출되도록 만드는 방법이 있습니까?
재귀를 작업자 함수에 위임하고 최상위 수준에서 정렬을 호출합니다.
import Data.List(sort)
rbsort :: [Int] -> [Int]
rbsort = sort . go
where go [] = []
go (x:xs) = x: go xs -- here you should be doing something useful
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다