Documentation / @finchart/core / TailChange
Type Alias: TailChange
TailChange = {
count:number;kind:"append"; } | {count:number;kind:"replace"; } | {kind:"none"; }
Defined in: packages/core/src/data/tail-delta.ts:13
두 배열 사이의 변화가 꼬리뿐인지 판정한다.
computation 노드는 입력을 Source.read()로만 받아 변화의 모양을 통지받을 길이 없다 — 대신 점 객체의 신원이 그 정보를 나른다. 바뀌지 않은 점 객체는 재사용되므로(Source 계약), 앞부분의 신원이 전부 같고 꼬리만 다르면 그 변화는 꼬리다.
공유 구간을 전부 확인한다 — 표본 검사가 아니다. 몇 점만 보면 중간 변경을 놓쳐 조용히 틀린 지표가 된다. 전수 확인은 포인터 비교 O(n)이라 아끼려는 재계산(수 패스 O(n))보다 항상 싸다.
Union Members
Type Literal
{ count: number; kind: "append"; }
앞은 그대로고 뒤에 count개가 붙었다.
Type Literal
{ count: number; kind: "replace"; }
앞은 그대로고 마지막 count개가 갈렸다. 이 판정기는 항상 1을 낸다 — 필드는 문(deriveLast·calcLast) 계약의 모양(append와 대칭)을 지킨다.
Type Literal
{ kind: "none"; }
배열 신원은 다른데 내용 신원이 전부 같다 — 계산할 것이 없다.