anchor.diff:  
   type Workflow = Event list
   
  +type HttpAction =
  +| Download of string * string
  +| Upload of string * string * string
  +
   let DUMMY_GUID = "1020304050102030405010203040501020304050"
   
   // Splits a string into a list by a char
  
positive.code:         printfn "- %s: %s" identifier desc
      List.iter print_action actions
  
  // Uploads a string
  let upload (url: string) (meth: string) (data: string) : HttpResult<exn> =
      try
          use w = new System.Net.WebClient ()
          Ok(w.UploadString(url, meth, data))
      with
      | :? WebException as error ->
          printfn "Got exception: %A" error
          printfn "Error status: %A" error.Status
          match error.Status with
          | WebExceptionStatus.Success ->
              let response: HttpWebResponse = error.Response :?> HttpWebResponse
              let status: int = int response.StatusCode
              printfn "Status code: %d" status
              let message =
                  let encoding = Encoding.GetEncoding(response.ContentEncoding)
                  use is = new System.IO.StreamReader(response.GetResponseStream(), encoding)
                  is.ReadToEnd()
              Error(message, status)
          | _ ->
              ConnectionError
  
  // Downloads a string
  let download (url : string) (data: string) : HttpResult<exn> =
      try
          use w = new System.Net.WebClient ()
          let full_url = sprintf "%s?data=%s" url data
          Ok(w.DownloadString(full_url))
      with
      | :? WebException as error ->
          printfn "Got exception: %A" error
          printfn "Error status: %A" error.Status
          match error.Status with
          | WebExceptionStatus.Success ->
              let response: HttpWebResponse = error.Response :?> HttpWebResponse
              let status: int = int response.StatusCode
              printfn "Status code: %d" status
              let message =
                  let encoding = Encoding.GetEncoding(response.ContentEncoding)
                  use is = new System.IO.StreamReader(response.GetResponseStream(), encoding)
                  is.ReadToEnd()
              Error(message, status)
          | _ ->
              ConnectionError
  
  // Attempts to get a list of the events of a given workflow
  let get_workflow_events (state: State) : (string list) option =
  
negative.code: open System.Text
  
  // A result for the http functions
  type HttpResult =
  | Ok of string
  | Error of string * int
  | ConnectionError
  