⍝ Space reference match:
'xy'⎕ns¨⊂'' ⊣x y←0 ⍝ distinct spaces x and y.
x refmatch x ⍝ space matches self.
1
x refmatch y ⍝ distinct spaces match.
1
⍝ populate with:
(x y).(⎕io ⎕ml num)←⊂1 2 3 ⍝ vars,
(x y).(⎕fx'z←sum v' 'z←+/v') ⍝ function,
(x y).(z←⎕ns'') ⍝ space.
(x y).z.(⎕io ⎕ml num)←⊂0 1 3 ⍝ populate subspace.
x refmatch y ⍝ spaces match.
1
x.z.num←3 ⍝ replace with same value.
x refmatch y ⍝ still match.
1
x.z.num←4 ⍝ replace with distinct value.
x refmatch y ⍝ mismatch.
0
⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝ Cycles:
x y←⎕ns¨'' '' ⊣x y←0 ⍝ ┌←┐ ┌←┐ refs to parent: match
⍝ x─│─┐ y─│─┐
(x y).z ← x y ⍝ │ z │ │ z │
x refmatch y ⍝ └───┘ └───┘
1
⍝ ┌─→─#─←─┐ refs to common ancestor
⍝ x─│─┐ y─│─┐
(x y).z ← # ⍝ │ z │ │ z │
x refmatch y ⍝ └───┘ └───┘
1
⍝ ┌←┬──────←┐ refs to same space
⍝ x─│─┐ y─│─┐
(x y).z ← x ⍝ │ z │ │ z │
x refmatch y ⍝ └───┘ └───┘
1
⍝ ┌──←──┐ cross-refs to aunt/uncle
⍝ ┌───x ┌─│─┐
⍝ │ z │ │ z │
(x y).z ← y x ⍝ └─│─┘ y───┘
x refmatch y ⍝ └──←──┘
1
⍝∇ refmatch
Back to: code
Back to: Workspaces