unconst (object -- mutableView)

Inputs

Outputs

unconst is a current stack-object mutable-view conversion builtin. It converts the current stack object to a mutable view where valid.

For Ref inputs, only the current stack object changes. The referenced storage and any other references remain unchanged.

Behavior

Example

{} 0 {} [
  value: 7;
  codeLocal: {} () {} codeRef;
  unknownText: 0 ("") dynamic @; # an unknown Text
  [] !codeLocal # a non-NIL Code

  "-- current Ref view only --" printCompilerMessage
  value printStack _:;
  value unconst printStack _:;
  value printStack _:;
  @value printStack _:;
  @value unconst printStack _:;
  value isConst printStack _:;
  value unconst isConst printStack _:;
  @value unconst isConst printStack _:;

  "-- accepted non-Ref inputs are unchanged --" printCompilerMessage
  "hi" unconst printStack _:;
  unknownText unconst isConst printStack _:;
  {} () {} codeRef unconst isConst printStack _:;
  @codeLocal unconst isConst printStack _:;
  () unconst isConst printStack _:;

  0
] "main" exportFunction

Expected Output During Compilation

-- current Ref view only --
7 Cref
7 Ref
7 Cref
7 Ref
7 Ref
TRUE
FALSE
FALSE
-- accepted non-Ref inputs are unchanged --
"hi"
TRUE
TRUE
TRUE
FALSE

See also