# Module React.S.Option

    module Option: sig .. end

    val none : 'a option React.signal

`none` is `S.const None`.

    val some : 'a React.signal -> 'a option React.signal

`some s` is `S.map ~eq (fun v -> Some v) None`, where `eq` uses `s`'s equality function to test the `Some v`'s equalities.

    val value : ?eq:('a -> 'a -> bool) ->
           default:[ `Always of 'a React.signal | `Init of 'a React.signal ] ->
           'a option React.signal -> 'a React.signal

`value default s` is `s` with only its `Some v` values. Whenever `s` is `None`, if `default` is ``Always dv` then the current value of `dv` is used instead. If `default` is ``Init dv` the current value of `dv` is only used if there's no value at creation time, otherwise the last `Some v` value of `s` is used.

- [`value ~default s`]t `= v` if [`s`]t `= Some v`
- [`value ~default:(`Always d) s`]t `=` [`d`]t if [`s`]t `= None`
- [`value ~default:(`Init d) s`]0 `=` [`d`]0 if [`s`]0 `= None`
- [`value ~default:(`Init d) s`]t `=` [`value ~default:(`Init d) s`]t' if [`s`]t `= None` and t' is the greatest t' < t with [`s`]t' `<> None` or 0 if there is no such `t'`.