상태 전이
Sectile의 상태 전이는 현재 상태의 원본과 의미 입력을 받아, 완성된 다음 상태와 순서가 정해진 명령을 반환합니다. 입력 거부 사유도 종류가 정해진 오류 값으로 돌려줍니다.
text
applyEvent : State × Event
→ Result<State × OrderedCommand*>보장하는 성질
- 결정적: 같은 상태와 입력은 언제나 같은 결과를 만듭니다.
- 순수함: 포커스와 스크롤 같은 실행 작업을 명령 값으로 계산합니다.
- 원자적: 성공하면 완성된 다음 상태 하나만 공개합니다.
- 실패 원자성: 입력 거부 시 현재 상태와 명령 목록을 보존합니다.
- 순서 보장: 실행할 명령의 순서가 정해져 있습니다.
- 자원 제한: 처리 비용은 모델이 정한 한도 안에 있습니다.
명령
명령은 실행 환경에 요청할 작업을 데이터로 설명합니다.
text
focus · scroll · announce · activate · request · clipboard브라우저 패키지는 포커스 요청을 DOM 포커스로, 터미널 패키지는 터미널의 현재 위치 이동으로 해석합니다. 실제 작업은 달라도 의미상 같은 결과를 유지할 수 있습니다.
변경 차수
부모가 상태를 관리하거나 비동기 작업이 있는 환경에서는 상태에 변경 차수를 붙일 수 있습니다.
text
RevisionSnapshot<State> = {
revision: Natural
state: State
}받아들인 입력은 변경 차수를 정확히 한 번 늘립니다. 이전 차수의 입력과 형식 오류가 있는 입력은 현재 차수와 상태를 보존하며 빈 명령 목록을 돌려줍니다.
원자적 조합
여러 하위 상태 전이를 조합할 때는 먼저 모든 후보 결과를 계산합니다. 전체 결과가 성공이면 상태를 한꺼번에 바꾸고 명령을 정해진 순서로 합칩니다. 한 결과가 실패이면 현재 상태와 명령 목록을 보존합니다.
