﻿⍝ Futures and Isolate scripts
⍝ Part 3 - ∥ (parallel) and ∥¨ (parallel each)
⍝ ∥   =>   II or isolate.ll
⍝ ∥¨       IÏ    isolate.llEach
z←⎕DL IÏ 3 6 9
isolate.State ''
z
isolate.State ''
iss
)erase iss
isolate.State ''
)copy dfns queens
]disp queens 5
q←queens IÏ ⍳13
≢¨isolate.Values 'q'
isolate.Running 'q'
¯1↑isolate.Values 'q'
≢¨q
⍝ Now open Task Manager
T←⎕AI ⋄ ≢¨queens  ¨ 4⍴12 ⋄ ⎕AI-T
T←⎕AI ⋄ ≢¨queens IÏ 4⍴12 ⋄ ⎕AI-T

⎕FX 'r←loop n' 'r←3⊃⎕AI' ':While 0<n←n-1 ⋄ {}∪10000?10000 ⋄ :End' 'r←(3⊃⎕AI)-r'
⎕VR 'loop'
loop 1000
T←⎕AI ⋄ loop  ¨ 4⍴10000 ⋄ ⎕AI-T
T←⎕AI ⋄ loop IÏ 4⍴10000 ⋄ ⎕AI-T
⍝ Exercise 3a
queens_asynch←queens II              ⍝ f II  ←→ f∥  ⍝ asynchronous version
q13←queens_asynch 13                 ⍝ z is a future
'MYGUI' ⎕WC 'Form' 'Hello Parallel World!' ('Posn' 10 10)('Size' 10 40)
'MYGUI.TEXT'⎕WC'Label'(txt←'# of solutions to queens 13 is ...')('Size'⍬ 90)('Font' 'Courier' 20)
{MYGUI.TEXT.Caption←(¯3↓txt),⍕≢q13}&0
⎕DQ 'MYGUI'
⍝ Exercise 3b