fun discover r = dy <- Openid.discover r.Id; case dy of None => return No dice | Some dy => os <- Openid.association dy.Endpoint; case os of Openid.Error s => error {[s]} | Openid.Handle s => return {[s]} fun main () = return