Why use `Either` as the underlying type? It is definitely isomorphic, but I think it may be reasonable to expose it with friendlier names.

```haskell
data Trampoline a
    = Done a
    | Continue (() -> Trampoline a)
```

What do you think of this?