Even ignoring the space leak example of Stephen's, the standard says that fun f (ref x) y = ... de-references x only after y is supplied. This always struck me as rather unfortunate.