Reference Notation

Reference notation makes working with references more convenient. Reference notation is indicated by braces ({}). Within reference notation, unreferences are indicated with percent (%). For example:

{"example"} is the same as pureRef "example"
{"answer: " ++ %r} is the same as coMapRef (\v1 -> "answer: " ++ v1) r
{%x + %(y ?? z)} is the same as applyRef (coMapRef (\v1 v2 -> v1 + v2) x) (y ?? z)

If expr :: T, then {expr} :: Ref +T.
If ref :: Ref {-P,+Q}, then %(ref) :: Q within reference notation.

Reference notation works only with the getting of references, and ignores setting. Using := or delete with references created this way will stop (see stop for what stopping means).