{protected←0} ##.wsmerge wsid          ⍝ Merge saved ws into current active ws.

[wsmerge]  merges  the saved workspace [wsid] into the current active workspace.
The  optional  left argument (default 0) determines whether incoming objects are
prevented  from  overwriting  existing  ones of the same name. [wsmerge] differs
from  )COPY  and )PCOPY in that it merges, rather than replaces, namespaces with
incoming ones of the same name.

Technical note:

To  deliver a vector of namespace references, [wsmerge] incorporates rather than
calls,  subfunction  →refs←.  This  means that it can be copied as a stand-alone
utility, into an active workspace. See →refs← for details.

Examples:

⍝───────────────────────────────────────────────────────────────────────────────

      )load aaa                     ⍝ load WS "aaa".
··· saved ···

      tree #                        ⍝ show aaa's content.
#
·   ~ aaa ccc
·   notes
·   ·   ~ aaa

      ccc                           ⍝ show aaa's variable "ccc".
aaa's ccc

⍝───────────────────────────────────────────────────────────────────────────────

      )load bbb                     ⍝ load WS "bbb".
··· saved ···

      tree #                        ⍝ show bbb's content.
#
·   ~ bbb ccc
·   notes
·   ·   ~ bbb

      ccc                           ⍝ show bbb's variable "ccc".
bbb's ccc

⍝───────────────────────────────────────────────────────────────────────────────

      )load aaa                     ⍝ load WS "aaa".
··· saved ···

      )copy dfns wsmerge            ⍝ copy wsmerge into "aaa".
··· saved ···

      1 wsmerge 'bbb'               ⍝ PROTECTED merge "bbb".

⍝ Note how content of aaa's and bbb's namespace "notes" has been merged.

      tree #                        ⍝ show merged content.
#
·   ~ aaa bbb ccc
·   ∇ wsmerge
·   notes
·   ·   ~ aaa bbb

      ccc                           ⍝ aaa's variable was protected.
aaa's ccc

⍝───────────────────────────────────────────────────────────────────────────────

      )load aaa                     ⍝ reload WS "aaa".
··· saved ···

      )copy dfns wsmerge            ⍝ copy wsmerge into "aaa".
··· saved ···

      0 wsmerge 'bbb'               ⍝ UNPROTECTED merge "bbb".

      tree #                        ⍝ show merged content.
#
·   ~ aaa bbb ccc
·   ∇ wsmerge
·   notes
·   ·   ~ aaa bbb

      ccc                           ⍝ aaa's variable was overwritten.
bbb's ccc

⍝───────────────────────────────────────────────────────────────────────────────

See also: refs tree wsdiff

Back to: contents

Back to: Workspaces