I try to create a monad:
datatype result a x = Ok of a | Err of x fun mreturn [a] [x] (r : a) : result a x = Ok r fun mbind [a] [b] [x] (r : result a x) (f : a -> result b x) : result b x = case r of Ok r => f r | Err x => Err x val result_monad = mkMonad { Return = @@mreturn, Bind = @@mbind } I think the error message tries to tell me that x is not defined enough. Is there a way to fix this? When I remove x from result, it compiles.
_______________________________________________ Ur mailing list Ur@impredicative.com http://www.impredicative.com/cgi-bin/mailman/listinfo/ur