⍝ Trace of function application: ⍝ [tc] uses ⎕← to display monitoring information in the session. ⍝ For testing, we modify the temporary copy of the operator in this ⍝ namespace to output to variable ∆out. sout←'⎕←' '∆out,∘⊂∘⍕←'∘subs ⍝ subs ∆out← for ⎕← ⎕fx sout ⎕cr'tc' ⍝ modify trace operator. ∆out←'' ⍝ initialise output buffer. +/tc ⍳5 ⍝ trace "over" reduction. 15 ↑∆out ⍝ show traced output. +/ 1 2 3 4 5 => 15 ∆out←'' +tc/ ⍳5 ⍝ trace "into" reduction 15 ↑∆out 4 + 5 => 9 3 + 9 => 12 2 + 12 => 14 1 + 14 => 15 ∆out←'' +tc/ 2 4⍴⍳8 ⍝ reduction of matrix 10 26 ↑∆out 3 + 4 => 7 2 + 7 => 9 1 + 9 => 10 7 + 8 => 15 6 + 15 => 21 5 + 21 => 26 ∆out←'' 2(+tc ,tc ×tc)3 ⍝ trace of fork 5 6 ↑∆out 2 × 3 => 6 2 + 3 => 5 5 , 6 => 5 6 ∆out←'' +tc\⍳4 ⍝ trace of scan 1 3 6 10 ↑∆out 1 + 2 => 3 2 + 3 => 5 1 + 5 => 6 3 + 4 => 7 2 + 7 => 9 1 + 9 => 10 ∆out←'' ⊢tc¨⍳4 ⍝ trace of each 1 2 3 4 ↑∆out ⊢ 1 => 1 ⊢ 2 => 2 ⊢ 3 => 3 ⊢ 4 => 4 :If 0 ⍝ for change to evaluation order of inner product: ∆out←'' 2 3 4 5 +tc.(×tc) 6 7 8 9 ⍝ trace inner product. 110 ↑∆out 5 × 9 => 45 4 × 8 => 32 32 + 45 => 77 3 × 7 => 21 21 + 77 => 98 2 × 6 => 12 12 + 98 => 110 :EndIf ⍝∇ tc subs Back to: code Back to: Workspaces