I think this one is still weird. Possibly weirder because go always has the same `x`? I'd expect this:

```haskell
repeatedly f x =
  cons' <| \() -> (x, repeatedly f (f x))
```

Or if you want it to delay the f'ing:

```haskell
repeatedly f x = cons' <| \() -> (x, repeatedlyHelp f x)
repeatedlyHelp f x =
  cons' <| \() -> let x' = f x in (x', repeatedlyHelp f x')
```

* Used the other name to see it both ways :)