Module Rizzo.SignalSource

Sourceval (@:) : 'a -> 'a Types.signal Types.later -> 'a Types.signal

Creates a fresh signal given a head and a tail in the form of a delayed computation. Similar to cons (::) on lists.

Example:

 let my_int_signal = 0 @: (filter_map int_of_string_opt console) 
Sourceval const : 'a -> 'a Types.signal

Creates a constant signal. This signal will never tick, invoking head will always return the same value.

Sourceval map : ('a -> 'b) -> 'a Types.signal -> 'b Types.signal

Maps a function over a signal, producing a new signal.

Example:

    let doubled_signal = map (fun x -> x * 2) my_int_signal
Sourceval mapD : ('a -> 'b) -> 'a Types.signal Types.later -> 'b Types.signal Types.later

Maps a function over a delayed signal, producing a new delayed signal.

Creates a delayed signal from any delayed computation. The primary use is to instantiate signals from external channels 'a channel or internal channels trig

Example:

let every_second, every_second_stop = Rizzo.Channel.clock_signal 1.0 in
(* counts the number of seconds since application startup *)
let count_second = scan (fun n _ -> n + 1) 0 every_second in ...
Sourceval mkSig_of_channel : 'a Types.channel -> 'a Types.signal Types.later

Shorthand for mkSig (wait c)

Sourceval head : 'a Types.signal -> 'a

Returns the value for the current time tick. Every head call to a signal s will produce the same value until the tail of s ticks.

Creates a signal that acts as the first until the second argument (a delayed computation) produces a signal, at which point the signal now acts as that.

Example:

let every_second, every_second_stop = Rizzo.Channel.clock_signal 1.0 in
(* counts the number of seconds since application startup *)
let count_second = scan (fun n _ -> n + 1) 0 every_second in
let numbers_from_console : int signal later = filter_map int_of_string_opt console in
let switched = switch count_second numbers_from_console in ...

Switch will act as count_second until the program receives a valid number through the console. Hereafter, switched will output any number that is read from the console.

Sourceval zip : 'a Types.signal -> 'b Types.signal -> ('a * 'b) Types.signal
Sourceval switchS : 'a Types.signal -> ('a -> 'a Types.signal) Types.later -> 'a Types.signal
Sourceval jump : ('a -> 'a Types.signal option) -> 'a Types.signal -> 'a Types.signal
Sourceval sample : 'a Types.signal -> 'b Types.signal -> ('a * 'b) Types.signal
Sourceval scan : ('b -> 'a -> 'b) -> 'b -> 'a Types.signal -> 'b Types.signal
Sourceval scanD : ('a -> 'b -> 'a) -> 'a -> 'b Types.signal Types.later -> 'a Types.signal Types.later
Sourceval interleave : ('a -> 'a -> 'a) -> 'a Types.signal -> 'a Types.signal -> 'a Types.signal
Sourceval filter : ('a -> bool) -> 'a Types.signal Types.later -> 'a Types.signal Types.later
Sourceval filter_map : ('a -> 'b option) -> 'a Types.signal Types.later -> 'b Types.signal Types.later
Sourceval triggerD : ('a -> 'b -> 'c) -> 'a Types.signal Types.later -> 'b Types.signal -> 'c Types.signal Types.later
Sourceval map2 : ('a -> 'b -> 'c) -> 'a Types.signal -> 'b Types.signal -> 'c Types.signal
Sourceval pp_signal : (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a Types.signal -> unit
Sourceval init_signal : 'a Types.channel -> 'a -> 'a Types.signal

init_signal c a = a @: mkSig_of_channel c

Sourceval clock_signal : float -> float Types.signal * (unit -> unit)
Sourceval clock_channel : float -> float Types.channel * (unit -> unit)
Sourceval console_output : string Types.signal -> unit

Outputs the signal head to stdout on each tick

Sourceval console_outputD : string Types.signal Types.later -> unit

Outputs the eventual value of later signal to stdout on each tick

Sourceval port_send_outputD : Unix.inet_addr -> int -> string Types.signal Types.later -> unit

Outputs the eventual value of later signal to the given port at address

Sourceval set_quit : 'a Types.signal Types.later -> unit

Quits the program on first tick

Sourceval start_event_loop : unit -> unit

Misleading name, just blocks the current thread.