목록의 머리 부분과 끝 부분에 2 개의 뷰를 가질 수있는 목록 데이터 구조를 효과적으로 구현할 수 있습니다. 역순으로 값 비싼 호출을하지 않고도 목록의 꼬리를 항상 가리킬 수 있습니다. 즉 :Haskell의 효율적인 큐
start x = []
end x = reverse start -- []
start1 = [1,2,3] ++ start
end start1 -- [3,2,1]
끝 '역'호출 단순히 자동으로 역에있는 목록의 관점에서 주어진리스트를 보지 않고이 작업을 수행 할 수 있어야합니다. 연결을 시작으로 새 목록을 만들면 동일하게 유지됩니다.
하스켈에서는 값을 변경할 수 없습니다. 'start'는 항상 빈리스트가 될 것이고'end'는 항상 그것의'reverse' 일 것입니다 (빈리스트). 상태를 유지하려면 상태 모나드를 살펴야합니다. –
수정 : 업데이트로 리바 인드를 의미합니다. – TheOne
@Absolute : 하스켈에서 변경할 수없는 것들 ('IO' 모나드에도 불구하고)을 바꿀 수 없다는 궁극적 인 진실은 당신이 무엇이라고 부르는 지 바꾸지 않습니다. 너는 물건을 다시 바인딩 할 수 없다. –