struct
    type +'a m = 'a
    
    external return : '-> 'a m = "%identity"
      
    let bind f m = f m
      
    let bind_rev m f = f m
      
    let error = raise
      
    let catch func handler = try func () with | e -> handler e
      
  end