⍝ Multi-line D-input:
⍝ Din uses quote-quad input/output. For testing, we modify copies of
⍝ the function to input from variable ∆i and output to variable ∆o.
⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
⍝
∆in←{(∆i↓⍨←1)⊢⍵,⊃∆i} ⍝ input from buffer ⍝
⍝
qp←'⍞⊣⍞←' '∆in'∘subs ⍝ subs quote-quad prompt ⍝
⍝
_←⎕fx qp ⎕cr'din' ⍝ modify copy of function. ⍝
⍝
⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
∆i ←⊂''
∆i,←⊂' ⍝ blank lines'
∆i,←⊂' ⍝ and comments'
∆i,←⊂'0:⍵ ⍝ preserved'
∆i,←⊂'⍵ ⍵'
∆i,←⊂''
dots ⎕cr din'dup' ⍝ input of regular dfn.
dup←{
· ⍝ blank lines
· ⍝ and comments
· 0:⍵ ⍝ preserved
· ⍵ ⍵
}
⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
∆i←⊂'⍵ ⍵}'
⎕cr din'dup' ⍝ single line input.
dup←{⍵ ⍵}
∆i←⊂'2+3' ⍝ single line input.
din''
5
⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
∆i ←⊂'{' ⍝· {
∆i,←⊂'⍵ ⍵' ⍝· · ⍵ ⍵
∆i,←⊂'∘{' ⍝· }∘{
∆i,←⊂'⍵ ⍵' ⍝· · ⍵ ⍵
∆i,←⊂'0' ⍝· }0
din'' ⍝ multi-line expression.
┌───┬───┐
│0 0│0 0│
└───┴───┘
⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
∆i ←⊂'f←{' ⍝· f←{ ⍝ comments
∆i,←⊂'⍵ ⍵' ⍝· · ⍵ ⍵ ⍝ removed
∆i,←⊂'∘{' ⍝· }∘{
∆i,←⊂'⍵ ⍵' ⍝· · ⍵ ⍵
∆i,←⊂'{' ⍝· }{
∆i,←⊂'⍺⍺ ⍺⍺ ⍵' ⍝· · ⍺⍺ ⍺⍺ ⍵
∆i,←⊂'' ⍝· }
⍎'din'''' ⋄ 0 0⍴0' ⍝ multi-line derived fn:
⎕cr'f'
┌───────────────┬─────────┐
│┌─────┬─┬─────┐│{⍺⍺ ⍺⍺ ⍵}│
││{⍵ ⍵}│∘│{⍵ ⍵}││ │
│└─────┴─┴─────┘│ │
└───────────────┴─────────┘
⍝∇ din dots subs
Back to: code
Back to: Workspaces