지퍼 란 무엇이며 나무와 같은 구조와 어떤 관련이 있습니까?


15

나는 LYAH 에서 실제로 이해가되지 않는 장을 읽고있었습니다 . 나는 지퍼가 나무와 같은 구조를 임의로 가로 지르는 것을 이해하지만 그것에 대해 약간의 설명이 필요합니다. 또한 지퍼를 모든 데이터 구조로 일반화 할 수 있습니까?


3
지퍼를 일반화하는 작업에는 꽤 많은 기술 기계가 필요하지만 이것은 아마도 컴퓨터 과학에 더 적합합니다 .
Dave Clarke

6
지퍼는 특히 나무를 횡단 할 때 항상 닫아 두어야하는 것입니다.
Andrej Bauer

답변:


14

지퍼는 일반적으로 구멍이있는 데이터 구조입니다. 지퍼는 데이터 구조를 이송 / 조작하는 데 사용되며 구멍은 이송의 현재 초점 에 해당합니다. 일반적으로 고려중인 데이터 구조의 요소가 있으므로 하나는 (목록) 지퍼와 목록 또는 (트리) 지퍼와 나무를 갖습니다. 지퍼를 사용하면 프로그래머가 데이터 구조를 효율적으로 이동할 수 있으며 초점이 맞춰진 요소를 대체 할 수도 있습니다. 지퍼의 쌍과 초점의 요소는 구멍의 초점에 요소를 배치하면 원래의 데이터 구조를 제공한다는 제약을 충족시킵니다.

지퍼는 임의의 유도 데이터 유형으로 일반화 할 수 있습니다. 개념은 유형 색인 방식으로 정의 할 수 있습니다 ( 유형 색인 데이터 유형 참조 ). 그것들은 또한 데이터 구조의 미분에 대한 아이디어와 관련이 있으며 , 범주 이론적 관점 에서 연구되었습니다 .


2

지퍼는 일반적으로 한 의 것입니다. 구멍 이있는 구조이며 초점 은 구조의 위치를 경로 와 함께 나타내며 초점 을 얻은 방법을 기록합니다. (이 경로는 LYAH의 빵 부스러기 흔적입니다.)

경로는 실제로 구조에 변경 사항을 적용하는 방법입니다. "아래로 이동, 왼쪽으로 이동, 값 증가". 반복 ( "가서"적용함으로써 go_up에서 Huet의 논문 이 시점에서), 당신은 당신의 단계를 되돌아 할 수 있고 원래 구조의 새로운, 돌연변이, 복사와 끝까지.

그들은 실제로 다른 구조로 일반화 될 수 있습니다 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.