class[['a, 'b]]fmap_engine :'a #engine -> ('a final_state -> 'b final_state) ->['b]engine
Similar to map_engine but different calling conventions: The
mapping function is called when the argument engine reaches a
final state, and this state can be mapped to another final state.