set name indexer? modifier-expression? to value

set string-sink-function-call to value


In the first form, set assigns a value to a shelf item; the shelf item's previous value is replaced with the new value.

  import "ombcd.xmd" unprefixed
     local integer i
     local string  s
     local switch  w
     local bcd     x
     set i to 78
     set s to "Hello, World!%n"
     set w to true
     set x to 10.56

The value appearing on the right-hand side of a set must have the correct type for the shelf item appearing on the left-hand side of the set, or a conversion function must exist that can convert an instance of right-hand side's type to an instance of the left-hand side's type:

  define string conversion-function value switch w
     return w -> "TRUE" | "FALSE"
     local string s
     local switch w initial { true }
     set s to w

In the second form, set invokes the given string sink function; within the function invocation, #current-input is initially set to value.

  define string sink function
     hexify (value string sink s)
     using output as s
     repeat scan #current-input
     match any => t
        output "16r2fzd" % binary t
     set hexify (#main-output) to "Hello, World!%n"

When the type of the shelf item on the left-hand side is stream, set is equivalent to an open of the stream, writing to the stream, then a close. For this reason, any modifiers that can be used with open can also be used with set:

     local stream s size 2
     set s[1] with referents-allowed defaulting { "" } to "Hello, World!%n"
     set s[2] with referents-displayed                 to s