theory Ex2
imports Main
begin

section {* Proof context data *}

ML {*
  structure My_Data = ProofDataFun(type T = int * string fun init _ = (2, "foo"))
*}

ML {* My_Data.get @{context} *}

ML {* val ctxt0 = @{context} *}
ML {* val ctxt1 = ctxt0 |> My_Data.map (fn (i, s) => (i + 1, s ^ "o")) *}
ML {* val ctxt2 = ctxt1 |> My_Data.map (fn (i, s) => (i + 1, s ^ "o")) *}

ML {* My_Data.get ctxt2 *}

end
