anchor.diff:          onWarning = None
       }
   
  +let private defaultViewProps() = {
  +    map = None
  +    reduce = None
  +}
  +
   let private toConfig<'doctype> (props: CouchProps) =
       let config = Davenport.Configuration(props.couchUrl, props.databaseName)
       config.Username <- Option.defaultValue "" props.username
  
positive.code:     onWarning: (IEvent<EventHandler<string>,string> -> unit) option
  }
  
  let private defaultCouchProps() = {
          username = None
          password = None
  
negative.code:       Rev = r.Rev
        Ok = Option.ofNullable r.Ok |> Option.defaultValue false }
  
  let asyncMap (fn: 't -> 'u) task = async {
      let! result = task
  
      return fn result
  }
  
  let asyncMapSeq (fn: 't -> 'u) task = async {
      let! result = task
  
      return Seq.map fn result
  }
  
  /// Creates a sequence with a length of one out of the object given.
  let toSeq x = Seq.ofList [x]
  
  /// Used to create a DesignDoc view.
  let mapFunction func = { defaultViewProps() with map = Some func }
  
  /// Used to create a DesignDoc view.
  let reduceFunction func props = { props with reduce = Some func }
  
  /// Creates a DesignDoc view object.
  let view name (props: ViewProps) =
      let v = View()
      v.Name <- name
      v.MapFunction <- Option.toObj props.map
      v.ReduceFunction <- Option.toObj props.reduce
      v
  
  /// Creates a DesignDoc object for use with the `configureDatabase` and `createDesignDocs` functions.
  let designDoc name (views: View seq) =
      let d = DesignDocConfig()
      d.Name <- name
      d.Views <- views
      d
  
  let database name couchUrl =
      { defaultCouchProps() with databaseName = name; couchUrl = couchUrl }
  