Реализация Undo
Имея список истории, достаточно просто реализовать Undo:
if on_item then history.item.undo history.back else message ("Нет команды для отката - undo") endИ снова динамическое связывание играет основную роль. Список истории history является полиморфной структурой данных:

Рис. 3.4. Список истории с различными объектами command
При передвижении курсора влево каждое успешное значение history.item может быть присоединено к объекту любого доступного типа command. Динамическое связывание гарантирует, что в каждом случае history.item.undo автоматически выберет нужную версию undo.