anchor.diff:    open Fable.Core.JsInterop
   
     let onInput x = onEvent "oninput" (fun e -> x (unbox e?target?value))
  -
  -type Operator =
  -  | Sum
  -  | Sub
  -  | Mul
  -  | Unknown
  -
  -type Model = 
  -  { Operator: Operator
  -    NumberA: int
  -    NumberB: int
  -  }
  -
  -  static member Initial =
  -    {
  -      Operator = Unknown
  -      NumberA = 0
  -      NumberB = 0
  -    }
  -
  -type Page =
  -  | Index
  -  | Sum of int * int
  -  | Sub of int * int
  -  | Mul of int * int
   
   type Actions =
     | NavigateTo of Page
  
positive.code:   | Sum (numA, numB) -> Some (sprintf "/sum/%i/%i" numA numB)
    | Sub (numA, numB) -> Some (sprintf "/sub/%i/%i" numA numB)
    | Mul (numA, numB) -> Some (sprintf "/mul/%i/%i" numA numB)
  
  let mapToRoute route =
    match route with
  
negative.code:   | ChangeNumberB of string
    | ChangeOperator of Operator
  
  and Operator =
    | Sum
    | Sub
    | Mul
    | Divide
    | Unknown
  
  // Routing part
  and Page =
    | Index
    | Sum of int * int
    | Sub of int * int
    | Mul of int * int
    | Divide of int * int
    | Unknown of int * int
  
  let routes =
    [
      runM (NavigateTo Index) (pStaticStr "/" |> (drop >> _end))
      runM1 (fun numbers -> NavigateTo (Unknown numbers)) (pStaticStr "/unknown" </.> pint </> pint |> _end)
      runM1 (fun numbers -> NavigateTo (Sum numbers)) (pStaticStr "/sum" </.> pint </> pint |> _end)
      runM1 (fun numbers -> NavigateTo (Sub numbers)) (pStaticStr "/sub" </.> pint </> pint |> _end)
      runM1 (fun numbers -> NavigateTo (Mul numbers)) (pStaticStr "/mul" </.> pint </> pint |> _end)
      runM1 (fun numbers -> NavigateTo (Divide numbers)) (pStaticStr "/divide" </.> pint </> pint |> _end)
    ]
  
  let resolveRoutesToUrl r =
  