Assuming applying `f` is worked out:

```haskell
iterate f x =
  let go = cons' <| \() -> (x, map f go)
  in go

iterate' f x =
  let go = cons' <| \() -> (x, map f (cons' <| \() -> (x, map f go)))
  in go
```

I cannot tell anymore :/ You can test by importing something observable from the Native file and seeing how many times it happens. My intuition would be to avoid this way if only to avoid using `map`, but I can't really tell how JS will react to either formulation.