⍝ Share arrays across space tree: ⎕io←1 k←{,∘'KB'⍕⌊0.5+⍵÷2*10} ⍝ approx KB. nest←⍳¨∘⍳¨∘⍳¨∘⍳¨∘⍳ ⍝ nesting function. nested←nest 3 3 ⍝ complex nested array. :If 32={2×⎕size'⍵'}⍬ ⍝ 32-bit interpreter: k ⎕size'nested' ⍝ size in KB. 19KB k nspack ⎕this ⍝ nspack recovers most of the space. 18KB k nspack ⎕this ⍝ subsequent pack saves no more space. 0KB k ⎕size'nested' ⍝ size _appears_ not to have changed. 19KB (x←⎕ns'').(a b c←⎕ns¨3/⊂'') ⍝ make space and three subspaces. x.(a b c).var←nest¨3/⊂3 3 ⍝ populate subspaces separately. k∘nspack¨x.(a b c) ⍝ packing _within_ spaces saves 18k each. ┌────┬────┬────┐ │18KB│18KB│18KB│ └────┴────┴────┘ k nspack x ⍝ packing _among_ spaces saves further 3K. 3KB :Else ⍝ 64-bit interpreter: k ⎕size'nested' ⍝ size in KB. 38KB k nspack ⎕this ⍝ nspack recovers most of the space. 35KB k nspack ⎕this ⍝ subsequent pack saves no more space. 0KB k ⎕size'nested' ⍝ size _appears_ not to have changed. 38KB (x←⎕ns'').(a b c←⎕ns¨3/⊂'') ⍝ make space and three subspaces. x.(a b c).var←nest¨3/⊂3 3 ⍝ populate subspaces separately. k∘nspack¨x.(a b c) ⍝ packing _within_ spaces saves 18k each. ┌────┬────┬────┐ │35KB│35KB│35KB│ └────┴────┴────┘ k nspack x ⍝ packing _among_ spaces saves further 6K. 6KB :EndIf ⍝∇ nspack Back to: code Back to: Workspaces