functor (Eq : EqType) ->
  sig
    type 'a v = 'a Eq.t
    val create : 'a v -> 'a v signal * (?step:step -> 'a v -> unit)
    val equal : 'a v signal -> 'a v signal -> bool
    val hold : 'a v -> 'a v event -> 'a v signal
    val app : ('a -> 'b v) signal -> 'a signal -> 'b v signal
    val map : ('a -> 'b v) -> 'a signal -> 'b v signal
    val filter : ('a v -> bool) -> 'a v -> 'a v signal -> 'a v signal
    val fmap : ('a -> 'b v option) -> 'b v -> 'a signal -> 'b v signal
    val when_ : bool signal -> 'a v -> 'a v signal -> 'a v signal
    val dismiss : 'b event -> 'a v -> 'a v signal -> 'a v signal
    val accum : ('a v -> 'a v) event -> 'a v -> 'a v signal
    val fold : ('a v -> 'b -> 'a v) -> 'a v -> 'b event -> 'a v signal
    val merge : ('a v -> 'b -> 'a v) -> 'a v -> 'b signal list -> 'a v signal
    val switch : 'a v signal signal -> 'a v signal
    val bind : 'b signal -> ('b -> 'a v signal) -> 'a v signal
    val fix : 'a v -> ('a v signal -> 'a v signal * 'b) -> 'b
    val l1 : ('a -> 'b v) -> 'a signal -> 'b v signal
    val l2 : ('a -> 'b -> 'c v) -> 'a signal -> 'b signal -> 'c v signal
    val l3 :
      ('a -> 'b -> 'c -> 'd v) ->
      'a signal -> 'b signal -> 'c signal -> 'd v signal
    val l4 :
      ('a -> 'b -> 'c -> 'd -> 'e v) ->
      'a signal -> 'b signal -> 'c signal -> 'd signal -> 'e v signal
    val l5 :
      ('a -> 'b -> 'c -> 'd -> 'e -> 'f v) ->
      'a signal ->
      'b signal -> 'c signal -> 'd signal -> 'e signal -> 'f v signal
    val l6 :
      ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g v) ->
      'a signal ->
      'b signal ->
      'c signal -> 'd signal -> 'e signal -> 'f signal -> 'g v signal
  end