⎕session←{ (indented main prompt)←⍵ unindent←{ ⎕rawio←⎕ucs ⍺⍴8 } handleError←{ 0::⍺ (task (error msg taskname))←⍵ ⎕rawio←error,' in [',(⍕task),':',taskname,']' _←{⎕rawio←': ', msg} IF msg≢'' ⎕rawio←⎕ucs 10 ⎕rawio←prompt ≢prompt } handleQuad←{ 0::⍺ data←⍵ ⎕rawio←data ⎕rawio←⎕ucs 10 ⎕rawio←prompt ≢prompt } handleQuoteQuad←{ 0::⍺ data←⍵ ⎕rawio←data ⍺ } handle←{ 0::⍺ (task (type data))←⍵ indented←⍺ _←indented∘unindent IF (indented>0)∧task≢main type≡'!': 0 handleError task data type≡'⎕': 0 handleQuad data type≡'⍞': 0 handleQuoteQuad data ⍵ } {∇ ⍵ handle {1 ⍵}⍇⍬} indented }&'session'⊢0 ⎕self (6⍴' ') ⎕←'Welcome to APL9'