Source file skyline_input_v1.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
open! Core
open! Bonsai_web
open! Bonsai.Let_syntax

module type S = sig
  type 'a t

  val view : _ t -> Vdom.Node.t
  val value : 'a t -> 'a
  val update : 'a t -> 'a -> unit Effect.t
end

type 'a t =
  { view : Vdom.Node.t
  ; value : 'a
  ; update : 'a -> unit Effect.t
  }

let create view value update =
  let%arr view and value and update in
  { view; value; update }
;;

let view { view; _ } = view
let value { value; _ } = value
let update { update; _ } new_value = update new_value