The callcc.sml example in examples in the RPM's is broken in 2 ways: It thinks that opening MLton will give it access to callcc and throw. In fact you would have to open MLton.Cont. It uses the SML/NJ style curried throw 'a cont -> 'a -> 'b instead of the better new MLton style 'a cont * 'a -> 'b