> In denotational semantics, every well-formed term in the language must
> have a value. So, what is a value of "fix id"?

There isn't one!

Bottoms will be the null pointers of the 2010's, you watch.

This ×1000. Errors go in an error monad.

Including all possible manifestations of infinite loops?

Some would say that non-termination is a computational effect, and I can argue either way depending on the day of the week.

Of course, the history books show that monads were invented *after* it was decided that Haskell would be a lazy language. Talk about selection bias.

Ben.