Leonardus
Dissenting LeoScript Operator eq

STACK

$ X\ X\ --\ B $

DESCRIPTION

Pops two objects from the operand stack and pushes true if they are
equal, or false if not. The definition of equality depends on the types
of the objects being compared.

  • Null objects and mark objects are always equal.
  • Simple objects are equal if their types and values are the same.
  • Strings are equal if their lengths and individual elements are equal.
  • Empty arrays are equal.
  • The composite objects arrays, stacks and dictionaries are equal
    only if they share the same value. Separate values are considered unequal,
    even if all the components of those values are the same.

The literal/executable attribute of objects is not considered in comparisons
between objects.

This implementation differs from the red book definition:

  • Strings and names are always not equal, even if they store the same sequence of characters
  • Integers and Reals are always not equal, even if they represent the same number

ORIGIN

Core code registered in systemdict.

CONVERSION

None.