-record(simulation, { update :: fun((any(), any()) -> {any(), agnostic@effect:effect(any())}), view :: fun((any()) -> agnostic@vdom@vnode:element(any())), history :: list(agnostic@dev@simulate:event(any())), model :: any(), html :: agnostic@vdom@vnode:element(any()) }).