Case 020
Duplicate remover
duplicate_remover.eml removes duplicates from a sample grocery-basket list while preserving first-seen order — one of a seven-case self-authored batch of list/collection utilities for the EML case corpus (see [examples/list-statistics/](../list-statistics/), [examples/list-rotator/](../list-rotator/), [examples/matrix-transpose-manual/](../matrix-transpose-manual/), [examples/intersection-union-finder/](../intersection-union-finder/), [examples/second-largest-finder/](../second-largest-finder/), and [examples/shopping-cart-total/](../shopping-cart-total/) for the other six).
ok: true — round-trip fixpoint reached (python1 == python2)updated 2026-07-19
EML
eml# Self-authored for the EML case corpus (no external origin). Removes
# duplicates from a sample list while preserving first-seen order, using a
# dict as a hash-based "seen" tracker (`item => True` on first sight, `in`
# membership check thereafter) plus list growth via `+` (no `.append()`).
# A real Python `set` was tried first for "seen" tracking, but every way to
# grow one — `set(existing_list)` conversion or the `.add()` method — is an
# `eml:unsupported` construct the interpreter defers on entirely, which
# skips the `eml:equiv` equivalence check rather than just flagging an
# anomaly; a dict-as-set (a common pre-`set()` Python idiom) gives the same
# O(1) membership behavior while staying fully interpreter-modeled.
items^+["apple", "banana", "apple", "cherry", "banana", "date", "apple",
"elderberry", "cherry", "fig"]
seen^+{}
result^+[]
for item in items:
if not item in seen:
True => seen[item]
result + [item] => result
"Original: " + str(items) => msg1
msg1^0
"De-duplicated (order preserved): " + str(result) => msg2
msg2^0Python (deterministic transpilation)
pythonitems = ["apple", "banana", "apple", "cherry", "banana", "date", "apple", "elderberry", "cherry", "fig"]
seen = {}
result = []
for item in items:
if not item in seen:
seen[item] = True
result = result + [item]
msg1 = "Original: " + str(items)
print(msg1)
msg2 = "De-duplicated (order preserved): " + str(result)
print(msg2)stdout (executed)
textOriginal: ['apple', 'banana', 'apple', 'cherry', 'banana', 'date', 'apple', 'elderberry', 'cherry', 'fig']
De-duplicated (order preserved): ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']Trace event types
eml:run:starteml:assigneml:outputeml:run:done