isStatic (object -- isKnown)

Inputs

Outputs

isStatic is the historical name of the knownness predicate for the current stack object. It tests whether the object's value is fully known at compile time.

This predicate follows the referenced target for known non-NIL Ref objects. For In-place storage, stability alone is insufficient for TRUE: a stable object may be unknown and reports FALSE, and an unstable or forgotten In-place object reports FALSE; other schemas use their own knownness rules. Current stack Code objects produced by user-visible creation paths such as codeRef, exportFunction, and block assignment to Code still report FALSE. This includes callable non-NIL Code objects reached through those paths and known NIL Code objects.

Behavior

Example

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

  "-- same as known? for In-place values --" printCompilerMessage
  7 isStatic printStack _:;
  7 known? printStack _:;
  unknownValue isStatic printStack _:;
  unknownValue known? printStack _:;
  unknownValue stable? printStack _:;

  "-- same as known? for references --" printCompilerMessage
  @knownValue isStatic printStack _:;
  @knownValue known? printStack _:;
  @unknownValue isStatic printStack _:;
  @unknownValue known? printStack _:;
  0nx knownValue addressToReference isStatic printStack _:; # a NIL Ref
  0nx knownValue addressToReference known? printStack _:;

  "-- same as known? for text, meta, code --" printCompilerMessage
  "hi" isStatic printStack _:;
  "hi" known? printStack _:;
  0nx "" addressToReference isStatic printStack _:;
  0nx "" addressToReference known? printStack _:;
  unknownText isStatic printStack _:;
  unknownText known? printStack _:;
  () isStatic printStack _:;
  () known? printStack _:;
  {} () {} codeRef isStatic printStack _:;
  {} () {} codeRef known? printStack _:;
  @codeLocal isStatic printStack _:;
  @codeLocal known? printStack _:;

  0
] "main" exportFunction

Expected Output During Compilation

-- same as known? for In-place values --
TRUE
TRUE
FALSE
FALSE
TRUE
-- same as known? for references --
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
-- same as known? for text, meta, code --
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE

See also