ElGraph.Reducers (ElGraph v0.3.0)

Copy Markdown View Source

내장 reducer 모음. ElGraph.state/3:reducer 옵션에 MFA로 지정한다.

ElGraph.state(graph, :messages, default: [], reducer: {ElGraph.Reducers, :append, []})

reducer 시그니처는 (현재값, 새값) -> 병합값.

Summary

Functions

숫자를 누적 합산한다.

리스트에 새 값(들)을 뒤에 추가한다. 새 값이 리스트가 아니면 단일 원소로 감싼다.

append 후 최근 keep_last개만 유지한다 — 컨텍스트 압축 1단계 (SPEC §3.1).

맵을 병합한다. 키 충돌 시 새 값이 이긴다.

Functions

add(current, new)

@spec add(number(), number()) :: number()

숫자를 누적 합산한다.

append(current, new)

@spec append(list(), term()) :: list()

리스트에 새 값(들)을 뒤에 추가한다. 새 값이 리스트가 아니면 단일 원소로 감싼다.

{:replace, list} 마커는 추가 대신 채널을 통째로 치환한다 — 컨텍스트 압축 (ElGraph.Nodes.Summarize)이 오래된 메시지를 줄일 때 쓴다.

append_trim(current, new, keep_last)

@spec append_trim(list(), term(), pos_integer()) :: list()

append 후 최근 keep_last개만 유지한다 — 컨텍스트 압축 1단계 (SPEC §3.1).

ElGraph.state(graph, :messages, default: [], reducer: {ElGraph.Reducers, :append_trim, [100]})

merge(current, new)

@spec merge(map(), map()) :: map()

맵을 병합한다. 키 충돌 시 새 값이 이긴다.