############################################################################## ################################################################################ ############################################################################## Testfile: AAA0_Global_Settings.tc ################################################################################ ______ _ __ __ __ ___ ____ __ / ____// | / // / / / / | / __ \ / / / / __ / |/ // / / / / /| | / /_/ // / / /_/ // /| // /_/ / / ___ | / ____// /___ \____//_/ |_/ \____/ /_/ |_|/_/ /_____/ Welcome to GNU APL version 1.3 / 6476 Copyright (C) 2008-2014 Dr. Jürgen Sauermann Banner by FIGlet: www.figlet.org This program comes with ABSOLUTELY NO WARRANTY; for details run: /home/elias/src/apl/dist/bin/apl --gpl. This program is free software, and you are welcome to redistribute it according to the GNU Public License (GPL) version 3 or later. ⍝ AAA0.tc: set-up logging etc. for all testcases ⍝ ---------------------------------------------- ⍝ ]LOG 2 ⍝ ]XTERM OFF ⍝ ---------------------------------- ⍝ AAA1 ⍝ ---------------------------------- )ERASE JUMPS ∇JUMPS JUMPS Line 1 1 Line 6 6 Line 2 2 Line 5 5 Line 3 3 Line 4 4 ⍝ ---------------------------------- )CHECK OK - no stale functions OK - no stale values OK - no stale indices ⍝ AAA2.tc ⍝ ---------------------------------- ⍝ FUNCTION RETURN VALUE )ERASE FOO ∇Z←FOO FOO FOO-RESULT X←FOO X FOO-RESULT ⍎'FOO' FOO-RESULT Y←⍎'FOO' Y FOO-RESULT )ERASE FOO ⍝ ---------------------------------- )ERASE FOO ∇Z←FOO B Q←FOO 1 9 3 Q 13 ⍝ ================================== ⍝ AAA3.tc ⍝ nested vector p. 10 ---------------------------------- 4⎕CR 1 2 'MORE' (3 'A') (2 2ρι4) 'B' ┏→━━━━━━━━━━━━━━━━━━━━━━━┓ ┃1 2 ┏→━━━┓ ┏→━━┓ ┏→━━┓ B┃ ┃ ┃MORE┃ ┃3 A┃ ↓1 2┃ ┃ ┃ ┗━━━━┛ ┗━━━┛ ┃3 4┃ ┃ ┃ ┗━━━┛ ┃ ┗∊━━━━━━━━━━━━━━━━━━━━━━━┛ 4⎕CR 1 2 'MORE' (3 'OR') (2 2ρι4) 'B' ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃1 2 ┏→━━━┓ ┏→━━━━━┓ ┏→━━┓ B┃ ┃ ┃MORE┃ ┃3 ┏→━┓┃ ↓1 2┃ ┃ ┃ ┗━━━━┛ ┃ ┃OR┃┃ ┃3 4┃ ┃ ┃ ┃ ┗━━┛┃ ┗━━━┛ ┃ ┃ ┗∊━━━━━┛ ┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━┛ ⍝ vector notation p. 14 ---------------------------------- 3 4 5 6 3 4 5 6 2 6 'D' 4 'W' 2 6 D 4 W 'F' 'A' 'C' 'E' FACE X←6 2 3 X 36 2 3 6 36 ⍝ simple vector p. 14 ---------------------------------- X1←1 2 X1 1 2 X2←1(2) X2 1 2 X3←(1)2 X3 1 2 X4←(1)(2) X4 1 2 X5←1 2 X5 1 2 X1≡X2 1 X1≡X3 1 X1≡X4 1 X1≡X5 1 2 'X' 8 2 X 8 2'X'8 2 X 8 2('X')8 2 X 8 (2('X')(8)) 2 X 8 ⍝ ---------------------------------- ('F' 'A' 'C' 'E') FACE 'FACE' FACE ⍝ nested vector p. 15 ---------------------------------- (1 2 3)(4 5 6)(7 8) 1 2 3 4 5 6 7 8 ⍴(1 2 3)(4 5 6)(7 8) 3 'RED' 'WHITE' 'BLUE' RED WHITE BLUE ⍴'RED' 'WHITE' 'BLUE' 3 (9 7 4)'BOX'(7 'F' 9 'G') 9 7 4 BOX 7 F 9 G ('UP' 'UP')'AND' 'AWAY' UP UP AND AWAY ⍴('UP' 'UP')'AND' 'AWAY' 3 V←3 5 6 'O' V 'X' O 3 5 6 X ⍴'O' V 'X' 3 ⍝ general# ---------------------------------- ⎕IO←1 ⎕IO 1 ⍝ AAA4_Function_headers ⍝ ---------------------------------- ⍝ niladic )ERASE F0 ∇F0 )ERASE Z_F0 ∇Z←Z_F0 ⍝ monadic no result )ERASE F1_B ∇F1_B B )ERASE F1_X_B ∇F1_X_B [X] B )ERASE LO_OP1_B ∇(LO LO_OP1_B) B )ERASE LO_OP1_X_B ∇(LO LO_OP1_X_B) [X] B )ERASE LO_OP1_X_B ∇(LO LO_OP2_RO_B RO) B ⍝ monadic with result )ERASE Z_F1_B ∇Z←Z_F1_B B )ERASE Z_F1_X_B ∇Z←Z_F1_X_B [X] B )ERASE Z_LO_OP1_B ∇Z←(LO Z_LO_OP1_B) B )ERASE Z_LO_OP1_X_B ∇Z←(LO Z_LO_OP1_X_B) [X] B )ERASE Z_LO_OP1_X_B ∇Z←(LO Z_LO_OP2_RO_B RO) B ⍝ dyadic no result )ERASE A_F2_B ∇A A_F2_B B )ERASE A_F2_X_B ∇A A_F2_X_B [X] B )ERASE A_LO_OP1_B ∇A (LO A_LO_OP1_B) B )ERASE A_LO_OP1_X_B ∇A (LO A_LO_OP1_X_B) [X] B )ERASE A_LO_OP2_RO_B ∇A (LO A_LO_OP2_RO_B RO) B ⍝ dyadic with result )ERASE Z_A_F2_B ∇Z←A Z_A_F2_B B )ERASE Z_A_F2_X_B ∇Z←A Z_A_F2_X_B [X] B )ERASE Z_A_LO_OP1_B ∇Z←A (LO Z_A_LO_OP1_B) B )ERASE Z_A_LO_OP1_X_B ∇Z←A (LO Z_A_LO_OP1_X_B) [X] B )ERASE Z_A_LO_OP2_RO_B ∇Z←A (LO Z_A_LO_OP2_RO_B RO) B ⍝ check line numbers displayed by ]SYMBOL ! ⍝ ]SYMBOL Z_A_LO_OP2_RO_B Symbol Z_A_LO_OP2_RO_B [0] Operator Z_A_LO_OP2_RO_B Result: Z Left Argument: A Left Op Arg: LO Right Op Arg: RO Right Argument: B Body Lines: 2 Creator: AAA4_Function_headers.tc:98 ⍝ Add.tc ⍝------------------ 5+1 2 3 6 7 8 1 2 3+4 5 6 5 7 9 .4+6 6.4 ¯5+¯.3 6 3J4 ¯5.3 1 ¯2J4 1J2+3J4 4J6 0 .3 ¯8+0 ¯.3 8 0 0 0 ⍝ Regression: with axis ⍝ ⍝ lrm p. 24 ⍝ .3 .2 .1 +[1] 3 4ρι12 1.3 2.3 3.3 4.3 5.2 6.2 7.2 8.2 9.1 10.1 11.1 12.1 (3 5⍴1)+[1]⍳3 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 (4 3 5⍴1)+[1 2] 4 3⍴⍳3 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 (3 5⍴1) +[2] ⍳5 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6 ⍝ And.tc 0 0 1 1∧0 1 0 1 0 0 0 1 ⍝ AP100.tc ⍝ ---------------------------------- ⍝ share variable OS with AP100 and allow ⎕SVO to complete 100 ⎕SVO 'OS' ◊ 0⍴⎕DL 0.2 1 ⍝ make sure that OS is coupled ⎕SVO 'OS' 2 ⍝ after coupling, dyadic ⎕SVO should be the same as monadic 100 ⎕SVO 'OS' 2 ⍝ status right after coupling (seems not to change) ⎕SVS 'OS' 0 0 1 1 ⍝ control right after coupling (seems not to change) ⎕SVC 'OS' 0 0 0 1 ⍝ issue command pwd OS←'pwd' /home/elias/Downloads/testcases OS 0 ⍝ issue bad command bad___command OS←'bad___command' sh: 1: bad___command: not found OS 127 ⍝ retract variable OS with AP100 ⎕SVR 'OS' 2 ⍝ check variable OS again (should be normal variable now) ⎕SVO 'OS' 0 ⍝ ================================== ⍝ AP210.tc ⍝ ---------------------------------- )CLEAR CLEAR WS ⍝ ⎕DL 1 ⍝² VARS←2 4⍴'C210D210' ⍝ Offer C210 and D210 to AP210 (210 ⎕SVO VARS)∈¨1 (1 2) ◊ 0⍴⎕DL 0.2 1 1 ⍝ check status after coupling ⎕SVS VARS 0 0 1 1 0 0 1 1 ⍝ check control after coupling (seems not to change) ⎕SVC VARS 0 0 0 1 0 0 0 0 ⍝ ⍝ 1. create FILE ⍝ C210←'IW,FILE' ⎕SVS VARS 0 1 0 1 0 1 0 1 ⎕SVC VARS 0 0 0 1 0 0 0 0 ⍝ ⍝ 2. check result of 'create FILE' ⍝ C210 0 ⎕SVS VARS 0 0 1 1 0 1 0 1 ⍝ set write data ⍳10 D210←⍳10 ⎕SVS VARS 0 0 1 1 1 0 1 0 ⍝ ⍝ 3. write data command (this sets C210 and reads D210) ⍝ C210←5 ⎕SVS VARS 0 1 0 1 0 0 1 1 ⍝ ⍝ 4. write 2 3⍴⍳6 to FILE ⍝ D210←2 3⍴⍳6 ◊ C210←5 C210 0 ⍝ ⍝ 5. close FILE ⍝ C210←'' C210 0 ⍝ ⍝ 6. open FILE for reading and check result and length ⍝ C210←'IR,FILE' ⎕SVS VARS 0 1 0 1 0 1 0 1 C210 0 ⎕SVS VARS 0 0 1 1 0 1 0 1 D210 112 ⎕SVS VARS 0 0 1 1 0 0 1 1 ⍝ ⍝ 7. write 'read data' command ⍝ C210←4 1 ⎕SVS VARS 0 1 0 1 0 1 0 1 ⍝ ⍝ 8. read 'read data' result ⍝ C210 0 ⎕SVS VARS 0 0 1 1 0 1 0 1 ⍝ ⍝ 9. read FILE data ⍝ D210 1 2 3 4 5 6 ⎕SVS VARS 0 0 1 1 0 0 1 1 ⍝ ⍝ 10. check Control vectors ⍝ ⎕SVC VARS 0 0 0 1 0 0 0 0 ⍝ ⍝ 11. retract variables ⍝ ⎕SVR VARS[1;] 2 ⎕SVR VARS[2;] 2 ⍝ Allow ⎕SVR debug output to finish 0⍴⎕DL 0.2 )ERASE VARS ⍝ ================================== ⍝ Binding.tc ⍝ ---------------------------------- ⍝ Vector notation vs. left function arg ⍝ A←1 2 3 A 4 + 10 11 12 13 14 (A 4) + 10 11 12 13 14 A (4 + 10) 1 2 3 14 A←B←C←1 2 3 A 1 2 3 B 1 2 3 C 1 2 3 ⍝ selective spec ---------------------------------- D←(A B C)←4 5 6 A 4 B 5 C 6 D 4 5 6 D←(A B C)←⊂4 5 6 A 4 5 6 B 4 5 6 C 4 5 6 D 4 5 6 ⍝ ================================== )ERASE A B C D ⍝ Binomial.tc 2!8 28 2!5 10 2!3J2 1J5 2 3 4!6 18 24 15 816 10626 3!.05 2.5 ¯3.6 0.0154375 0.3125 ¯15.456 A←¯6+ι11 A ∘.!A 1 ¯4 6 ¯4 1 0 0 0 0 0 0 0 1 ¯3 3 ¯1 0 0 0 0 0 0 0 0 1 ¯2 1 0 0 0 0 0 0 0 0 0 1 ¯1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 ¯5 ¯4 ¯3 ¯2 ¯1 0 1 2 3 4 5 15 10 6 3 1 0 0 1 3 6 10 ¯35 ¯20 ¯10 ¯4 ¯1 0 0 0 1 4 10 70 35 15 5 1 0 0 0 0 1 5 ¯126 ¯56 ¯21 ¯6 ¯1 0 0 0 0 0 1 0 1 2 3!3 1 3 3 1 ⍝ BobSmithChars.tc ⍝ ---------------------------------- ⍝ Alternative characters provided by Bob Smith ⍝ ⍎⎕←'1',(⎕UCS 16⊥2 2 1 2),'1' ⍝ Minus 1−1 0 ⍎⎕←'1',(⎕UCS 16⊥0 0 2 13),'1' ⍝ Minus 1-1 0 ⍎⎕←'1',(⎕UCS 16⊥2 2 2 3),'1' ⍝ Modulus 1∣1 0 ⍎⎕←'1',(⎕UCS 16⊥0 0 7 12),'1' ⍝ Modulus 1|1 0 ⍎⎕←'1',(⎕UCS 16⊥2 2 12 6),'1' ⍝ Star 1⋆1 1 ⍎⎕←'1',(⎕UCS 16⊥0 0 2 10),'1' ⍝ Star 1*1 1 ⍎⎕← (⎕UCS 16⊥2 2 3 12),'1' ⍝ Tilde ∼1 0 ⍎⎕← (⎕UCS 16⊥0 0 7 14),'1' ⍝ Tilde ~1 0 ⍎⎕←'1',(⎕UCS 16⊥2 3 7 1),'1' ⍝ Nor 1⍱1 0 ⍎⎕←'1',(⎕UCS 16⊥2 2 11 13),'1' ⍝ Nor 1⊽1 0 ⍎⎕←'1',(⎕UCS 16⊥2 3 7 2),'1' ⍝ Nand 1⍲1 0 ⍎⎕←'1',(⎕UCS 16⊥2 2 11 12),'1' ⍝ Nand 1⊼1 0 ⍎⎕←'1',(⎕UCS 16⊥2 2 2 7),'1' ⍝ And 1∧1 1 ⍎⎕←'1',(⎕UCS 16⊥0 0 5 14),'1' ⍝ And 1^1 1 ⍎⎕←'1',(⎕UCS 16⊥2 2 6 4),'1' ⍝ Not More 1≤1 1 ⍎⎕←'1',(⎕UCS 16⊥2 10 7 13),'1' ⍝ Not More 1⩽1 1 ⍎⎕←'1',(⎕UCS 16⊥2 2 6 5),'1' ⍝ Not Less 1≥1 1 ⍎⎕←'1',(⎕UCS 16⊥2 10 7 14),'1' ⍝ Not less 1⩾1 1 ⍎⎕←'1',(⎕UCS 16⊥2 5 14 6),'.=1' ⍝ Jot 1◦.=1 1 ⍎⎕←'1',(⎕UCS 16⊥2 2 1 8),'.=1' ⍝ Jot 1∘.=1 1 ⍎⎕←'1',(⎕UCS 16⊥2 6 10 10),'1' ⍝ Circle 1⚪1 0.8414709848 ⍎⎕←'1',(⎕UCS 16⊥2 5 12 11),'1' ⍝ Circle 1○1 0.8414709848 ⍎⎕←'1',(⎕UCS 16⊥2 11 2 6),'1' ⍝ Diamond 1⬦1 1 1 ⍎⎕←'1',(⎕UCS 16⊥2 2 12 4),'1' ⍝ Diamond 1⋄1 1 1 ⍎⎕←'1',(⎕UCS 16⊥2 5 12 10),'1' ⍝ Diamond 1◊1 1 1 ⍎⎕← (⎕UCS 16⊥2 5 10 15) ⍝ Quad ▯ ⎕: 5 5 ⍎⎕← (⎕UCS 16⊥2 3 9 5) ⍝ Quad ⎕ ⎕: 6 6 ⍝ ================================== ⍝ Boolean.tc L←0 0 1 1 R←0 1 0 1 0 ∧ R 0 0 0 0 L ∧ R 0 0 0 1 L > R 0 0 1 0 L 0 0 1 1 L < R 0 1 0 0 R 0 1 0 1 L ≠ R 0 1 1 0 L ∨ R 0 1 1 1 L ⍱ R 1 0 0 0 L = R 1 0 0 1 ∼R 1 0 1 0 L ≥ R 1 0 1 1 ∼L 1 1 0 0 L ≤ R 1 1 0 1 L ⍲ R 1 1 1 0 1 ∨ R 1 1 1 1 ⍝ Regression ⍝ 0J0 = 0J0 1 0J0 ≠ 0J0 0 ⍝ Bracket_Index.tc ⍝ ---------------------------------- LANG←'APPLE PIE' LANG[1 7 4] APL M1←2 2⍴⍳4 M1[;2] 2 4 ⍝ Check ⎕IO ---------------------------------- ⎕IO←1 'CURTAIL'[1 2 4] CUT ⎕IO←0 'CURTAIL'[0 1 3] CUT ⎕IO←1 ⍝ Index vector ---------------------------------- A←23 9 6.3 8 ¯3 7 Z←A[3] Z 6.3 ρZ Z←A[2 5 1] Z 9 ¯3 23 ρZ 3 B←2 3ρ1 4 3 2 6 5 B 1 4 3 2 6 5 ρB 2 3 Q←A[B] Q 23 8 6.3 9 7 ¯3 ρQ 2 3 ⍝ Index matrix ---------------------------------- C←'ABCDEFGHIJKLMNOPQR' C←3 6ρC C ABCDEF GHIJKL MNOPQR J←C[2;3] J I ρJ P←C[1;3 1 4] P CAD ρP 3 M←C[1 2;1 3] M AC GI ρM 2 2 N←C[1 3;2 3ρ6 1 3 4 5 2] N FAC DEB RMO PQN ρN 2 2 3 ⍝ Elided index ---------------------------------- D←3 4ρC[1 2;] D ABCD EFGH IJKL D[;1] AEI D[3;] IJKL ⍝ repeated index values ---------------------------------- H←2 4ρ3 4 1 2 2 3 4 1 H 3 4 1 2 2 3 4 1 'EMIT'[H] ITEM MITE 'NAB'[3 2 1 2 1 2] BANANA ⍝ higher rank index ---------------------------------- U←2 3 4ρ(,C),'STUVWX' U ABCD EFGH IJKL MNOP QRST UVWX U[1;2;4] H U[2;1;1 3 4] MOP U[;2;4] HT U[1;1 3;2 4] BD JL U[1;;3] CGK U[2;1;] MNOP U[;3;] IJKL UVWX ⍝ nested array index ---------------------------------- V←'H' 'HI' ('HIM' 'HIS') Z←V[1] Z H ≡Z 0 ρρZ 0 E←V[2] E HI ≡E 2 S←V[3] S HIM HIS ≡S 3 ρρS 0 ⍝ selective specification ---------------------------------- ρV 3 ≡V 3 V[3]←'H' V H HI H ≡V 2 W←2 3ρ'ABCDEF' W[1;1 3]←8 9 W 8 B 9 D E F B←3 4 5 B[]←9 B 9 9 9 ⍝ Regression ⍝ (1 1⍴0)[0;] INDEX ERROR (1 1⍴0)[0;] ^ ^ → )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⍝ Catenate.tc ⍝ ---------------------------------- M1←2 2⍴⍳4 M2←2 2⍴'ABCD' M2,M1 AB 1 2 CD 3 4 ⍝ Catenate ---------------------------------- Z←2 4 6,1 3 5 Z 2 4 6 1 3 5 ρZ 6 Z←'ABC',1 2 3 4 Z ABC 1 2 3 4 ρZ 7 K←2 3ρι6 K 1 2 3 4 5 6 Q←2 2ρ7 8 9 10 Q 7 8 9 10 H←K,Q H 1 2 3 7 8 4 5 6 9 10 ⍝ Catenate and Vector Notation ---------------------------------- M←2,3 M 2 3 N←2 3 M≡N 1 X←9 8 7,6 5 4 X 9 8 7 6 5 4 Q←9 8 7 6 5 4 X≡Q 1 ⍝ Note ---------------------------------- E←'TO', 'KEN' E TOKEN ρE 5 ≡E 1 F←'TO' 'KEN' F TO KEN ρF 2 ≡F 2 ⍝ Arguments same Rank ---------------------------------- A←3 4ρ'BLUESHOEFOOT' A BLUE SHOE FOOT B←3 5ρ'BERRYLACESSTOOL' B BERRY LACES STOOL Z←A,B Z BLUEBERRY SHOELACES FOOTSTOOL C←2 1ρ'THOMAS' 'WILLIAM' ≡C 2 D←2 1ρ('AQUINAS' 'MORE')('OCKHAM' 'SHAKESPEARE') ≡D 3 C,D THOMAS AQUINAS MORE WILLIAM OCKHAM SHAKESPEARE ≡C,D 3 J←'',ι0 ↑J 0 K←(ι0),'' ↑K ⍝ One Arguments is a Skalar ---------------------------------- 'S',2 4ρ'PRIGTRAY' SPRIG STRAY (2 2 3ρι12),'*' 1 2 3 * 4 5 6 * 7 8 9 * 10 11 12 * ⍝ Arguments differ in Rank by 1 ---------------------------------- U←'SAT' U SAT V←3 4⍴'TEAMMAZERAIL' V TEAM MAZE RAIL U,V STEAM AMAZE TRAIL W←'1: ' '2: ' Y←,[ι0]'LOG ON' 'LOG OFF' G←W,Y G 1: LOG ON 2: LOG OFF ρG 2 2 ≡G 2 ⍝ Catenate_with_Axis.tc ⍝ ---------------------------------- M1←2 2⍴⍳4 M2←2 2⍴'ABCD' M2,[1]M1 A B C D 1 2 3 4 ⍝ One Arguments is a Skalar ---------------------------------- A←3 4ρ'BATHBEATBIND' A BATH BEAT BIND A,[1]'X' BATH BEAT BIND XXXX 0,[1]2 5ρι10 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 ⍝ Arguments same Rank ---------------------------------- A BATH BEAT BIND B←2 4ρ'ZOOMZERO' B ZOOM ZERO A,[1]B BATH BEAT BIND ZOOM ZERO C←2 2 3ρι12 D←2 3 3ρ-ι18 C,[2]D 1 2 3 4 5 6 ¯1 ¯2 ¯3 ¯4 ¯5 ¯6 ¯7 ¯8 ¯9 7 8 9 10 11 12 ¯10 ¯11 ¯12 ¯13 ¯14 ¯15 ¯16 ¯17 ¯18 ⍝ Arguments differ in Rank by 1 ---------------------------------- H←'words' H words K←2 5ρ'STRAWBERRY' K STRAW BERRY H,[1]K words STRAW BERRY Q←3 5ρι15 S←3 3 5ρ∣ι45 Z←Q,[1]S ρZ 4 3 5 Z←Q,[2]S ρZ 3 4 5 ⍝ Ceiling.tc ⍝ ---------------------------------- ⌈.4 ¯.3 ¯3.4 1 0 ¯3 ⍝ ---------------------------------- ⌈2.3 3 ⌈¯2.7 3 .5 ¯2 3 1 ⌈1.5J2.5 1J3 ⌈1J2 1.2J2.5 ¯1.2J¯2.5 1J2 1J3 ¯1J¯2 ⍝ Circle_Functions.tc ⍝ ---------------------------------- 1○1.5708 1 2○.25 0.9689124217 ⍝ ---------------------------------- 1○1.570796327 1 2○1 0.5403023059 3○2 ¯2.185039863 ÷3○2 ¯0.4576575544 1○○30÷180 0.5 2○○45÷180 0.7071067812 ⍝ Inverses of Circular Functions ---------------------------------- ¯1○1 1.570796327 ¯2○.54032023059 0.9999786982 ⍝ Hyperbolic Functions ---------------------------------- 5○1 1.175201194 6○1 1.543080635 ¯5○1.175201194 1 ¯6○1.543080635 1 ⍝ Complex Number Functions ---------------------------------- 9 10 11 12○3J4 3 5 4 0.927295218 ¯12○ ○1 ¯1 8 ¯8○0J1 0 0 8 ¯8○2 0J¯2.236067977 0J2.236067977 ⍝ Circle Functions with Complex arguments ---------------------------------- 6 1⍴¯7 ¯6 ¯5 ¯3 ¯2 ¯1○1J1 0.4023594781J1.017221968 1.061275062J0.9045568943 1.061275062J0.6662394325 1.017221968J0.4023594781 0.9045568943J¯1.061275062 0.6662394325J1.061275062 ⍝ Commute.tc ⍝ ---------------------------------- ⍝ Duplicate ⍝ +⍨1 2 3 2 4 6 ,⍨1 2 3 1 2 3 1 2 3 (∘.≤)⍨1 2 3 1 1 1 0 1 1 0 0 1 ∘.≤⍨1 2 3 1 1 1 0 1 1 0 0 1 ⍝ Commute ⍝ 5 - 4 1 5 -⍨ 4 ¯1 ⍝ Regression ⍝ ,[0.5]⍨'foo' foo foo ⍝ ================================== ⍝ Compress.tc ⍝ ---------------------------------- 1 1 0 0 1/'STRAY' STY Q←3 4ρι12 Q 1 2 3 4 5 6 7 8 9 10 11 12 1 0 1 0/Q 1 3 5 7 9 11 ⍝ selective spec ---------------------------------- M←3 2ρι6 M 1 2 3 4 5 6 (1 0/M)←'ABC' M A 2 B 4 C 6 ⍝ Compress_with_axis.tc ⍝ ---------------------------------- N←3 2 4ρ'HIGHLOW HOT COLD UP DOWN' N HIGH LOW HOT COLD UP DOWN 1 0/[2]N HIGH HOT UP 1 0 1/[1]N HIGH LOW UP DOWN ⍝ selective spec ---------------------------------- M←3 2ρι6 M 1 2 3 4 5 6 T←2 2ρ'ABCD' (1 0 1/[1]M)←T M A B 3 4 C D ⍝ Conjugate.tc ⍝ ---------------------------------- +.4 ¯5 3J4 ¯3J¯4 0.4 ¯5 3J¯4 ¯3J4 ⍝ ---------------------------------- +¯4 ¯4 +4 2.3 ¯3 ¯.7 4 2.3 ¯3 ¯0.7 +1J2 1J¯2 1J2×+1J2 5 ⍝ Deal.tc ⍝ ---------------------------------- ⍝ ---------------------------------- ⎕IO←1 ⎕RL←100000 5?10 1 2 7 5 9 ⎕RL 865007240 10?10 10 1 6 8 7 2 3 5 9 4 ⎕IO←0 5?10 4 6 2 1 3 ⎕RL 1117649630 10?10 8 6 5 0 9 7 2 3 4 1 ⎕IO←1 ⍝ Decode.tc ⍝ ---------------------------------- 2⊥1 0 0 1 9 60 60 60⊥1 30 20 5420 ⍝ ---------------------------------- 3⊥1 2 1 16 1J1⊥1 2 3 4 5J9 2⊥1 1 1 1 15 ⍝ Conformability ---------------------------------- L←2 1ρ2 10 L 2 10 R←3 2ρ1 4 0 3 1 2 R 1 4 0 3 1 2 L⊥R 5 24 101 432 24 60 60⊥2 23 12 8592 ⍝ ---------------------------------- 2⊥1 1 1 1 15 ⍝ Depth.tc ⍝ ---------------------------------- ≡4 0 ≡2 2⍴⍳4 1 ≡2 2⍴1 2 3 (4 5) 2 ⍝ ---------------------------------- ≡5 0 ≡'A' 0 ≡2 2ρι4 1 ≡3 2 4 5ρι120 1 B←'JIM' 'AL' 'EV' ρB 3 ≡B 2 ≡¨B 1 1 1 C←'AB' 1 2 3 ρC 4 ≡C 2 ≡¨C 1 0 0 0 ⍝ ---------------------------------- D←'ONE' 'TWO' ('BUCKLE' ('MY' 'SHOE')) ρD 3 ≡D 4 ≡¨D 1 1 3 ≡¨¨D 0 0 0 0 0 0 1 2 ⍝ empty R ---------------------------------- ≡ι0 1 ↑ι0 0 ≡'' 1 ↑'' H←0ρ⊂1 2 3 ρH 0 ≡H 2 ↑H 0 0 0 Q←0ρ15(⊂1 2 3) ρQ 0 ≡Q 1 ↑Q 0 S←0ρ⊂(1 2 3(3 4))5 6 ρS 0 ≡S 4 ↑S 0 0 0 0 0 0 0 ⍝ Direction.tc ⍝ ---------------------------------- ׯ5 0 5 ¯1 0 1 ×3J4 ¯3J4 0.6J0.8 ¯0.6J0.8 ⍝ ---------------------------------- ׯ5 ¯1 ׯ4 0 4 ¯1 0 1 ×3J4 0.6J0.8 ×0J1 0J¯1 0J1 0J¯1 ⍝ Disclose.tc ⍝ ---------------------------------- ⍝ same shapes ---------------------------------- ⊃(1 2 3)(4 5 6) 1 2 3 4 5 6 ⊃(2 3 4)(5 6) 2 3 4 5 6 0 R←2 3ρ(ι4)'ABCD' '****'(5 6 7 8)'EFGH' '∆∆∆∆' R 1 2 3 4 ABCD **** 5 6 7 8 EFGH ∆∆∆∆ ρR 2 3 ≡R 2 Z←⊃R Z 1 2 3 4 A B C D * * * * 5 6 7 8 E F G H ∆ ∆ ∆ ∆ ρZ 2 3 4 ≡Z 1 ⍝ shapes differ ---------------------------------- E←(2 4ρι8) 9 (3 2ρ'ABCDEF') E 1 2 3 4 9 AB 5 6 7 8 CD EF N←⊃E N 1 2 3 4 5 6 7 8 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 A B C D E F ρN 3 3 4 ≡N 1 ⍝ wheel of fortune ---------------------------------- D←'WHEEL' 'OF' 'FORTUNE' V←⊃D V WHEEL OF FORTUNE ρV 3 7 ≡V 1 ⍝ Disclose_with_axis.tc ⍝ ---------------------------------- ⍝ ---------------------------------- H←'ABCD' (1 2 3 4) 'WXYZ' Z←⊃[1]H Z A 1 W B 2 X C 3 Y D 4 Z ρZ 4 3 ≡Z 1 W←⊃[2]H W A B C D 1 2 3 4 W X Y Z ρW 3 4 ≡W 1 ⍝ ---------------------------------- Z←2 4ρ'PA' 'MA' 'WE' 'BY' 'IT' 'UP' 'ON' 'HI' R←(2 4ρι8) (2 4ρ'ABCDEFGH') (Z) B←⊃[1 2]R ρB 2 4 3 B 1 A PA 2 B MA 3 C WE 4 D BY 5 E IT 6 F UP 7 G ON 8 H HI ≡B 2 Y←⊃[1 3]R ρY 2 3 4 Y 1 2 3 4 A B C D PA MA WE BY 5 6 7 8 E F G H IT UP ON HI V←⊃[2 3]R ρV 3 2 4 V 1 2 3 4 5 6 7 8 A B C D E F G H PA MA WE BY IT UP ON HI ⍝ order of axes matters ---------------------------------- N←⊃[2 1]R N 1 A PA 5 E IT 2 B MA 6 F UP 3 C WE 7 G ON 4 D BY 8 H HI M←⊃[3 1]R M 1 5 A E PA IT 2 6 B F MA UP 3 7 C G WE ON 4 8 D H BY HI P←⊃[3 2]R P 1 5 2 6 3 7 4 8 A E B F C G D H PA IT MA UP WE ON BY HI ⍝ shapes differ ---------------------------------- Q←(ι3) 'JUMP' N←⊃[1]Q N 1 J 2 U 3 M 0 P E←(ι5) 'JUMP' J←⊃[1]E J 1 J 2 U 3 M 4 P 5 S←(2 6ρ'ABCDEFGHIJKL') (3 4ρι12) S ABCDEF 1 2 3 4 GHIJKL 5 6 7 8 9 10 11 12 ρS 2 ρ¨S 2 6 3 4 ⌈/(ρ¨S)∼⊃ι0 3 6 D←⊃[2 3]S ρD 2 3 6 D A B C D E F G H I J K L 1 2 3 4 0 0 5 6 7 8 0 0 9 10 11 12 0 0 ⍝ empty axis needed ---------------------------------- T←⊂¨'ONE' 'FOUR' 'THREE' ≡¨T 2 2 2 ⊃[ι0]T ONE FOUR THREE ⍝ Divide.tc ⍝ ---------------------------------- 3÷2 1.5 9 4 7 10÷.25 36 16 28 40 0J12÷4 0J3 .3 5 1÷0J1 ¯2 1 0J¯0.3 ¯2.5 1 0÷5 0 0÷0 1 ⍝ Drop.tc ⍝ ---------------------------------- ⍝ ---------------------------------- 3↓12 31 45 10 57 10 57 ¯3↓12 31 45 10 57 12 31 ⍝ nonskalar right argument ---------------------------------- A←3 5ρ'STRIPERODEPLANT' B←'STOREFIRSTMIGHTHATER' B←B,'SHEETTHEREMETROERASE' B←3 4 5ρB,'BREADOTHERANVILEVADE' A STRIP ERODE PLANT 1 2↓A ODE ANT B STORE FIRST MIGHT HATER SHEET THERE METRO ERASE BREAD OTHER ANVIL EVADE C←¯1 2 ¯2 C↓B MIG HAT MET ERA K←3 2 4ρ'ABCDEFGH',(ι8),'abcdefgh' K A B C D E F G H 1 2 3 4 5 6 7 8 a b c d e f g h Z←2 1 3↓K Z h ρZ 1 1 1 ⍝ dropping none ---------------------------------- 0↓'INTACT' INTACT 0 2↓3 5ρι15 3 4 5 8 9 10 13 14 15 ⍝ overdrop ---------------------------------- W←5↓23 41 73 26 ρW 0 H←2 3ρ'ABCDEF' Y←3 1↓H ρY 0 2 M←2 3↓H ρM 0 0 ⍝ skalar right argument ---------------------------------- J←0↓4 J 4 ρJ 1 K←0 0 0↓4 K 4 ρK 1 1 1 ⍝ effect on depth ---------------------------------- D←'A' 'AN'('ANT' 'ANTE') D A AN ANT ANTE ρD 3 ≡D 3 S←¯1↓D S A AN ≡S 2 T←¯2↓D T A ρT 1 ≡T 1 ⍝ selective spec ---------------------------------- U←'ABCDE' (2↓U)←ι3 U AB 1 2 3 V←3 4ρ'ABCDEFGHIJKL' V ABCD EFGH IJKL (1 ¯1↓V)←2 3ρι6 V A B C D 1 2 3 H 4 5 6 L ⍝ Drop_with_axis.tc ⍝ ---------------------------------- ⍝ ---------------------------------- A←3 4ρ'FOLDBEATRODE' A FOLD BEAT RODE 1↓[1]A BEAT RODE 1 0↓A BEAT RODE 1↓[2]A OLD EAT ODE 0 1↓A OLD EAT ODE ⍝ Permitted axes ---------------------------------- Q←3 2 4ρ'ABCDEFGH',(ι8),'abcdefgh' Q A B C D E F G H 1 2 3 4 5 6 7 8 a b c d e f g h 1 ¯1↓[2 3]Q E F G 5 6 7 e f g 1 ¯1↓[3 2]Q B C D 2 3 4 b c d ⍝ Effect on Depth ---------------------------------- T←'W' 'WE'('WEE' 'WEED')'B' 'BE'('BEE' 'BEEP') U←2 3ρT U W WE WEE WEED B BE BEE BEEP ≡U 3 Q←1↓[1]U ≡Q 3 Q B BE BEE BEEP ρQ 1 3 M←¯1↓[2]U ≡M 2 M W WE B BE ρM 2 2 N←¯2↓[2]U ≡N 1 N W B ρN 2 1 ⍝ Selective specification ---------------------------------- V←3 4ρ'ABCDEFGHIJKL' V ABCD EFGH IJKL (1↓[1]V)←2 4ρι8 V A B C D 1 2 3 4 5 6 7 8 ⍝ Each_dyadic.tc ⍝ ---------------------------------- ⍝ ---------------------------------- Z←4 6ρ¨'ME' 'YOU' Z MEME YOUYOU ρZ 2 ρ¨Z 4 6 ≡Z 2 'SET',¨'HES' SH EE TS ⍝ skalar argument ---------------------------------- 2ρ¨3 4 5 3 3 4 4 5 5 (⊂2 3)ρ¨4 6 4 4 4 6 6 6 4 4 4 6 6 6 ⍝ empty argument ---------------------------------- Z←5↑¨0ρ⊂0 0 0 ρZ 0 ρ↑Z 5 ⍝ Each_monadic.tc ⍝ ---------------------------------- ⍝ ---------------------------------- Z←ρ¨'TOM' 'DICK' Z 3 4 ρZ 2 ≡Z 2 W←ι¨1 2 3 4 W 1 1 2 1 2 3 1 2 3 4 ρW 4 ≡W 2 ⍝ Enclose.tc ⍝ ---------------------------------- ⍝ ---------------------------------- A←2 3 4ρι24 A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρA 2 3 4 ρρA 3 ≡A 1 Z←⊂A Z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρZ ρρZ 0 ≡Z 2 ⍝ compared to vector notation ---------------------------------- D←'ON' 'UP' 'BY' ρD 3 ≡D 2 S←15 0 29 ρS 3 ≡S 1 S[2]←⊂'NONE' S 15 NONE 29 ρS 3 ≡S 2 T←3 5+⊂0 1 T 3 4 5 6 ρT 2 Q←'LOUIS' 'CROIX' Z←(⊂'ST. '),¨Q Z ST. LOUIS ST. CROIX W←,⊂15 0 29 W 15 0 29 ρW 1 Y←⊂,5 ρρY 0 ≡Y 2 ⍝ Enclose_with_axis.tc ⍝ ---------------------------------- ⍝ ---------------------------------- A←2 3ρι6 A 1 2 3 4 5 6 Z←⊂[1]A Z 1 4 2 5 3 6 ρZ 3 ρ¨Z 2 2 2 ≡Z 2 Y←⊂[2]A Y 1 2 3 4 5 6 ρY 2 ρ¨Y 3 3 ≡Y 2 B←3 4ρ'PINEODORDATA' B PINE ODOR DATA X←⊂[1]B X POD IDA NOT ERA ρX 4 ρ¨X 3 3 3 3 ≡X 2 W←⊂[2]B W PINE ODOR DATA ρW 3 ρ¨W 4 4 4 ≡W 2 ⍝ empty axis ---------------------------------- C←2 3ρι6 V←⊂[ι0]C V 1 2 3 4 5 6 ρV 2 3 ≡V 1 Q←2 3ρ'CAT' 'DOG' 'FOX' 'COW' 'BAT' 'YAK' Q CAT DOG FOX COW BAT YAK ρQ 2 3 ≡Q 2 H←⊂[ι0]Q H CAT DOG FOX COW BAT YAK ρH 2 3 ≡H 3 ⍝ order of axes ---------------------------------- S←2 3 4ρ'LESSSOMENONEMOREMANYMOST' S LESS SOME NONE MORE MANY MOST P←⊂[2 3]S P LESS MORE SOME MANY NONE MOST ρP 2 ρ¨P 3 4 3 4 ≡P 2 Q←⊂[3 2]S Q LSN MMM EOO OAO SMN RNS SEE EYT ρQ 2 ρ¨Q 4 3 4 3 ≡Q 2 ⍝ all axes in X ---------------------------------- T←2 3 4ρι24 T 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρT 2 3 4 J←⊂[1 2 3]T J 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ≡J 2 ⊂[1 3 2]T 1 5 9 2 6 10 3 7 11 4 8 12 13 17 21 14 18 22 15 19 23 16 20 24 (⊂[1 3 2]T)≡⊂(⍋ 1 3 2)⍉T 1 ⍝ Encode.tc ⍝ ---------------------------------- ⍝ ---------------------------------- 2 2 2 2⊤15 1 1 1 1 24 60 60⊤8592 2 23 12 ⍝ ---------------------------------- 2 2 2 2⊤15 1 1 1 1 10⊥2 2 2 2⊤15 1111 ⍝ ---------------------------------- 2 2 2 2 2⊤15 0 1 1 1 1 2 2 2⊤15 1 1 1 ⍝ ---------------------------------- ((⌊1+2⍟135)ρ2)⊤135 1 0 0 0 0 1 1 1 ⍝ ---------------------------------- 24 60 60⊤162507 21 8 27 0 24 60 60⊤162507 1 21 8 27 ⍝ ---------------------------------- 10 10 10⊤215 345 7 2 3 0 1 4 0 5 5 7 L←4 2ρ8 2 L 8 2 8 2 8 2 8 2 L⊤15 0 1 0 1 1 1 7 1 ⍝ Regression ⍝ 1⊤2 0 ⍝ Enlist.tc ⍝ ---------------------------------- ⍝ ---------------------------------- C←'ALE' 'BEER' 'STOUT' Z←∈C Z ALEBEERSTOUT ρZ 12 ≡Z 1 ⍝ ---------------------------------- H←(2 2ρι4)(2 2ρ(5 6(2 2ρ7 8 9 10)11))'ABCD' ∈H 1 2 3 4 5 6 7 8 9 10 11 ABCD ρ∈H 15 ≡∈H 1 ⍝ selective spec ---------------------------------- A←(10 20 30) 'AB' (∈A)←ι5 A 1 2 3 4 5 ⍝ Execute.tc ⍝ ---------------------------------- ⍝ ---------------------------------- ⍎'ι4' 1 2 3 4 1+⍎'ι4' 2 3 4 5 ⍎'195÷5×13' 3 ⍎'MATRIX←3 3⍴ι9' MATRIX 1 2 3 4 5 6 7 8 9 ⍎'''AGNES''' AGNES ⍝ TODO: valueless expression ---------------------------------- ⍝ Conditional execution ---------------------------------- V←ι0 ⍎(0=⍴V)/'''EMPTY''' EMPTY CTR←0 ⍎(1=CTR)/'124' CTR←1 ⍎(1=CTR)/'124' 124 ⍝ Expand.tc ⍝ ---------------------------------- ⍝ ---------------------------------- 1 0 1 0 0 1\1 2 3 1 0 2 0 0 3 H←(1 2) (3 4 5) 6 1 0 1 1 0\H 1 2 0 0 3 4 5 6 0 0 1 0 1 0 0 1\'ABC' A B C K←1 (2 3) (4 5 6) 1 0 1 1 0\K 1 0 2 3 4 5 6 0 ⍝ multidimensional arrays ---------------------------------- R←1 2 3 4 'A' 4 'C' 2 6 R←R, 'X' 7 'Y' 1 'D' 'E' R←5 4⍴R,5 'F' 'G' 'H' 'I' R 1 2 3 4 A 4 C 2 6 X 7 Y 1 D E 5 F G H I 1 0 0 1 1 0 1\R 1 0 0 2 3 0 4 A 4 C 2 6 0 0 X 7 0 Y 1 0 0 D E 0 5 F G H I ⍝ conformability ---------------------------------- 1 0 0\5 5 0 0 S←3 1⍴7 8 9 0 1 0\S 0 7 0 0 8 0 0 9 0 ⍝ compared with replicate ---------------------------------- W←7 8 9 1 0 0 1 0 1\W 7 0 0 8 0 9 1 ¯2 1 ¯1 1/W 7 0 0 8 0 9 ⍝ empty arrays ---------------------------------- Z←(ι0)\2 0⍴0 ⍴Z 2 0 B←1 0 1\0 2⍴0 B ⍴B 0 3 A←(ι0)\,[ι0]6 7 8 ⍴A 3 0 C←0 0 0\2 0⍴0 ⍴C 2 3 C 0 0 0 0 0 0 ⍝ selective spec ---------------------------------- M←'ABC' (1 0 1 0 1\M)←ι5 M 1 3 5 N←2 3⍴ι6 N 1 2 3 4 5 6 T←2 4⍴'ABCDEFGH' (1 0 1 1\N)←T N ACD EGH ⍝ Expand_with_axis.tc ⍝ ---------------------------------- ⍝ ---------------------------------- R←2 3 4ρι24 ((,R)[1 3 14 16])←'ACDE' R A 2 C 4 5 6 7 8 9 10 11 12 13 D 15 E 17 18 19 20 21 22 23 24 1 1 0 1\[2]R A 2 C 4 5 6 7 8 0 0 9 10 11 12 13 D 15 E 17 18 19 20 0 0 21 22 23 24 F←2 2 2ρ⊂[2]8 2ρι16 F 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 0 1\[2]F 1 2 3 4 0 0 0 0 5 6 7 8 9 10 11 12 0 0 0 0 13 14 15 16 G←2 2 2ρ1 (2 3) 4 (5 6) 7 (8 9) 10 (11 12) G 1 2 3 4 5 6 7 8 9 10 11 12 1 0 1\[2]G 1 2 3 0 0 0 4 5 6 7 8 9 0 0 0 10 11 12 ⍝ Conformability ---------------------------------- T←2 1 3ρι6 T 1 2 3 4 5 6 1 0 0 1\[2]T 1 2 3 0 0 0 0 0 0 1 2 3 4 5 6 0 0 0 0 0 0 4 5 6 ⍝ Applied to first axis ---------------------------------- M←3 4ρ'A' 'B' 1 'C' 2 3 4 5 6 7 8 9 M A B 1 C 2 3 4 5 6 7 8 9 1 0 0 1 1⍀M A B 1 C 0 0 2 3 4 5 6 7 8 9 1 0 0 1 1⍀[1]M A B 1 C 0 0 2 3 4 5 6 7 8 9 ⍝ selective specification ---------------------------------- M←3 2ρι6 M 1 2 3 4 5 6 (1 1 0 0 1\[1]M)←5 2ρ-ι10 M ¯1 ¯2 ¯3 ¯4 ¯9 ¯10 ⍝ Exponential.tc ⍝ ---------------------------------- ⍝ ---------------------------------- ⋆1 2.718281828 *0 1 *0J1 0.5403023059J0.8414709848 *○0J1 ¯1 ⍝ Regression ⍝ 1⋆1J1 1 2⋆1J1 1.538477803J1.277922553 1J1⋆1 1J1 2J2⋆2 0J8 ⍝ Factorial.tc ⍝ ---------------------------------- ⍝ ---------------------------------- !4 24 !1 2 3 4 5 1 2 6 24 120 !3J2 ¯3.01154037J1.770168194 !.05 ¯.05 0.9735042656 1.031453317 !20 22 44 66 88 2432902008176640000 1.124000728E21 2.658271575E54 5.443449391E92 1.854826423E134 !170 7.257415615E306 !171 DOMAIN ERROR !171 ^ → ⍝ File_IO.tc ⍝ ---------------------------------- ⍝ 1. Fix native function FILE_IO ⍝ 'lib_file_io.so' ⎕FX 'FILE_IO' FILE_IO ⍝ fopen this file readonly ⍝ Filename←'testcases/File_IO.tc' ⎕←Handle←FILE_IO[3] Filename ¯1 ⍝ get statistics ⍝ ⎕←FILE_IO[18] Handle DOMAIN ERROR ⎕←FILE_IO[18]Handle ^ ^ ⍝ ⎕←FILE_IO[4] Handle DOMAIN ERROR ⎕←FILE_IO[4]Handle ^ ^ ⍝ FILE_IO[4] Handle DOMAIN ERROR FILE_IO[4]Handle ^ ^ → ⍝ create new file ⍝ Filename← 'FILE_IO.test' ⎕←Handle←'w' FILE_IO[3] Filename 6 ⍝ write 3 lines ⍝ ⎕←(⎕UCS "Hello\n") FILE_IO[7] Handle 6 ⎕←(⎕UCS "World\n") FILE_IO[7] Handle 6 ⎕←(⎕UCS "Line 3...\n") FILE_IO[7] Handle 10 ⍝ close the file ⍝ FILE_IO[4] Handle 0 ⍝ print the file ⍝ )HOST cat FILE_IO.test Hello World Line 3... 0 ⍝ open file again for reading ⍝ ⎕←Handle← FILE_IO[3] 'FILE_IO.test' 6 ⍝ read one line (default max_len) ⍝ Z←FILE_IO[8] Handle ⎕UCS Z Hello ⍝ read another line (max_len 200) ⍝ Z←200 FILE_IO[8] Handle ⎕UCS Z World ⍴Z 6 ⍝ end of file ? (no) ⍝ FILE_IO[10] Handle 0 ⍝ read more bytes ⍝ Z←FILE_IO[6] Handle ⍴Z 10 ⍝ end of file ? (yes) ⍝ FILE_IO[10] Handle 1 ⍝ get statistics ⍝ ⎕←FILE_IO[18] Handle 2050 32905255 33206 1 1000 1000 0 22 4096 8 1398950714 1398950714 1398950714 ⍝ close the file ⍝ FILE_IO[4] Handle 0 ⍝ delete the file ⍝ FILE_IO[19] Filename 0 ⍝ delete the file again (should fail) ⍝ Error←FILE_IO[19] Filename FILE_IO[2] Error No such file or directory ⍝ printf ⍝ )ERASE FORMAT FORMAT←"⎕everything %d Pi %e String %s\n" FORMAT 42 (○1) 'Hello' FILE_IO[22] 1 ⎕everything 42 Pi 3.141593e+00 String Hello 44 ⍝ fwrite with UCS in UTF8 out ⍝ Filename← 'FILE_IO.test1' ⎕←Handle←'w' FILE_IO[3] Filename 6 'HELLO ⍋ ⌽ ⍒ ⍴ ⍵' FILE_IO[23] Handle 25 FILE_IO[4] Handle ⍝ close file 0 )HOST cat FILE_IO.test1 HELLO ⍋ ⌽ ⍒ ⍴ ⍵ 0 ⍝ popen "r" ⍝ Command←'ls FILE_IO*' Handle← FILE_IO[24] Command Z←20000 FILE_IO[6] Handle ⍴Z 14 FILE_IO[25] Handle ⍝ close command (returning its exit code) 0 ⍝ read entire file ⍝ ⎕UCS FILE_IO[26] 'FILE_IO.test1' 72 69 76 76 79 32 226 141 139 32 226 140 189 32 226 141 146 32 226 141 180 32 226 141 181 )ERASE FORMAT ⍝ ================================== )SI not cleared at the end of File_IO.tc: ⋆ ⎕←FILE_IO[4] Handle ^ ⋆ ⎕←FILE_IO[18] Handle ^ ⍝ Find.tc ⍝ ---------------------------------- 'AB'⋸'ABABABABA' 1 0 1 0 1 0 1 0 0 1 2 3⋸1 2 3 4 1 2 3 1 0 0 0 1 0 0 H←4 5ρ'ABCABA' H ABCAB AABCA BAABC ABAAB K←2 3ρ'BCAABC' K BCA ABC K⋸H 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ⍝ rank of A smaller than rank of B ---------------------------------- 'BA'⋸H 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 ⍝ rank of A greater than rank of B ---------------------------------- Q←2 3ρ'ABCABB' Q ABC ABB Q⋸'ABCABB' 0 0 0 0 0 0 ⍝ nested arrays ---------------------------------- S←'GO' 'ON' 'GO' 'TO' S GO ON GO TO ρS 4 ≡S 2 'GO' 'TO'⋸S 0 0 1 0 'GOTO'⋸S 0 0 0 0 ⍝ ⍷ instead of ⋸ ---------------------------------- 'GO' 'TO'⍷S 0 0 1 0 ⍝ deleting multiple blanks ---------------------------------- S←'AB DEF' (∼' '⋸S)/S AB DEF )SI not cleared at the end of Find.tc: ⋆ ⎕←FILE_IO[4] Handle ^ ⋆ ⎕←FILE_IO[18] Handle ^ ⍝ First.tc ⍝ ---------------------------------- ⍝ ---------------------------------- A←'DO' 'RE' 'ME' Z←↑A Z DO ≡Z 1 ρZ 2 Y←'ABCDE' ≡Y 1 W←↑Y W A ≡W 0 B←(2 3) ((4 5 6) 7) ≡B 3 J←↑B J 2 3 ≡J 1 C←⌽B C 4 5 6 7 2 3 S←↑C S 4 5 6 7 ρS 2 ≡S 2 ≡C[1] 3 ⍝ empty argument ---------------------------------- ↑ι0 0 ↑'' D←0 3ρ(2 3ρ0) 0 ρD 0 3 T←↑D T 0 0 0 0 0 0 H←0 2ρ(0 0) (0 0 0) H ρH 0 2 U←↑H U 0 0 ⍝ selective spec ---------------------------------- K←'RED' 'WHITE' 'BLUE' K RED WHITE BLUE ρK 3 (↑K)←'YELLOW' K YELLOW WHITE BLUE ≡K 2 )SI not cleared at the end of First.tc: ⋆ ⎕←FILE_IO[4] Handle ^ ⋆ ⎕←FILE_IO[18] Handle ^ ⍝ Floor.tc ⍝ ---------------------------------- ⍝ ---------------------------------- ⌊2.3 2 ⌊¯2.7 3 .5 ¯3 3 0 ⍝ complex ---------------------------------- ⌊1.5J2.5 2J2 ⌊1J2 1.2J2.5 ¯1.2J¯2.5 1J2 1J2 ¯1J¯3 )SI not cleared at the end of Floor.tc: ⋆ ⎕←FILE_IO[4] Handle ^ ⋆ ⎕←FILE_IO[18] Handle ^ ⍝ Format_by_example.tc ⍝ ---------------------------------- ⍝ ---------------------------------- L←' 55@ $55.50 EA' R←3 2ρ3 4.99 7 7.45 12 .5 R 3 4.99 7 7.45 12 0.5 Z←L⍕R Z 3@ $ 4.99 EA 7@ $ 7.45 EA 12@ $ .50 EA ρZ 3 15 ρL 15 EXPR←234.67 456.23 987.65 34.23 'TOTAL ORDER COST: $5,555.50'⍕+/EXPR TOTAL ORDER COST: $1,712.78 ⍝ ⎕FC ---------------------------------- ' 55.55'⍕345 .6789 DOMAIN ERROR ' 55.55'⍕345 0.6789 ^ ^ )SIC ⎕FC[4]←'?' ' 55.55'⍕345 .6789 ?????? .68 ⎕FC←'' ⍝ Format chars '5' . , ---------------------------------- ' 55.55'⍕.10 1.1 1.01 10.019 .11 .1 1.1 1.01 10.02 .11 ' 55.55'⍕2 2.2 0 2.22 2 2.2 2.22 ⍝ Format char '0' ---------------------------------- ' 055.50'⍕.3 33.2 0 300 000.30 033.20 000.00 300.00 ⍝ Format char '1' ---------------------------------- ' -55.10'⍕¯3.4 0 4.5 ¯2.12 -3.40 .00 4.50 -2.12 ' (55.10)'⍕¯3.4 0 4.5 ¯2.12 (3.40) .00 4.50 (2.12) ⍝ Format char '2' ---------------------------------- ' +552.50'⍕¯4 40 ¯400 4.00 +40.00 400.00 ' -551.20CR'⍕¯4 40 ¯400 -4.00 40.00CR -400.00 ⍝ Format char '3' ---------------------------------- ' $555.50'⍕3.1 32.23 324 $ 3.10 $ 32.23 $324.00 ' $553.50'⍕3.1 32.23 324 $3.10 $32.23 $324.00 ⍝ Format char '4' ---------------------------------- ' -551.20CR'⍕¯1 10 ¯100 -1.00 10.00CR -100.00 ' -551.40CR'⍕¯1 10 ¯100 -1.00CR 10.00CR -100.00CR ⍝ Format char '6' ---------------------------------- '0006/06/06 06:06'⍕1991 12 17 12 35 1991/12/17 12:35 ⍝ Format char '7' ---------------------------------- ' ¯1.7000E¯01'⍕¯25.784 .0034 ¯2.5784E 01 3.4000E¯03 ⍝ Format char '8' ---------------------------------- ' 85555.50'⍕17.3 56.43 ⋆⋆⋆17.30 ⋆⋆⋆56.43 ⎕FC[3]←'∘' ' 85555.50'⍕17.3 56.43 ∘∘∘17.30 ∘∘∘56.43 ' -85555.10'⍕¯17.3 56.43 -∘∘∘17.30 ∘∘∘56.43 ⎕FC←'' ⍝ Format char '9' ---------------------------------- ' 9995.59'⍕14.7 0 56.43 0014.70 0056.43 ' 9995.19-'⍕¯17.3 0 56.43 0017.30- 0056.43 ⍝ regression tests ---------------------------------- '06.006' ⍕ 11 37 11.037 ⍝ Format_by_spec.tc ⍝ ---------------------------------- ⍝ ---------------------------------- R←3 2ρ1 .468987 2 57.276 3 27963 R 1 0.468987 2 57.276 3 27963 4 2 12 ¯5⍕R 1.00 4.6899E¯1 2.00 5.7276E1 3.00 2.7963E4 4 0 10 2⍕R 1 .47 2 57.28 3 27963.00 ⍝ ---------------------------------- 2⋆70 1.180591621E21 22 0⍕2⋆70 1180591620717411303300 ⍝ ⎕FC ---------------------------------- ⎕FC[4]←'?' 10 0⍕2*70 ?????????? ⎕FC←'' ⍝ Conformability ---------------------------------- S←3 2ρι6 7 2⍕S 1.00 2.00 3.00 4.00 5.00 6.00 3⍕S 1.000 2.000 3.000 4.000 5.000 6.000 ⍝ Alignment of data ---------------------------------- A←4 2ρ'AMT' 'PERCENT' 5 26.31 6 31.5 8 42.11 A AMT PERCENT 5 26.31 6 31.5 8 42.11 3 0 9 2⍕A AMT PERCENT 5 26.31 6 31.50 8 42.11 0⍕A AMT PERCENT 5 26 6 32 8 42 D←'ITEM' 'PENS' 'BOOKS' 'PAPER',A D ITEM AMT PERCENT PENS 5 26.31 BOOKS 6 31.5 PAPER 8 42.11 5 0 5 0 9 2⍕D ITEM AMT PERCENT PENS 5 26.31 BOOKS 6 31.50 PAPER 8 42.11 2⍕1(2 3) DOMAIN ERROR 2⍕1 (2 3) ^^ → B←3 2ρ(1 2) (3 4 5) 6 7 (8 9) 10 2⍕¨B 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00 ⍝ Format.tc ⍝ ---------------------------------- R←2 3ρ'ONE' 1 1 'TWO' 2 22 R ONE 1 1 TWO 2 22 Z←⍕R Z ONE 1 1 TWO 2 22 ρZ 2 10 ⍝ printing width ---------------------------------- ⎕PW←30 T←34559898 449449449 13981 93891293 T 34559898 449449449 13981 93891293 U←⍕T U 34559898 449449449 13981 93891 293 ⎕PW←79 ⍝ simple char arrays ---------------------------------- M←'3 5 SIX' M 3 5 SIX N←⍕M N 3 5 SIX N≡M 1 S←4×ι4 S 4 8 12 16 Y←⍕S Y 4 8 12 16 S≡Y 0 ρS 4 ρY 9 ⍝ nested arrays ---------------------------------- B←(2 3 4) 5 (⊂7 8 (9 10 11)) ρB 3 ≡B 4 C←⍕B ρC 27 B 2 3 4 5 7 8 9 10 11 C 2 3 4 5 7 8 9 10 11 ⍝2^3^4^^5^^^7^8^^9^10^11^^^ D←(1 2) (3 4 5) 6 (2 2 3ρ6+ι12) D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 E←⍕D ρE 5 27 E 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ⍝1^2^^3^4^5^^6^^^^^7^^8^^9^ ⍝^^^^^^^^^^^^^^^^^10^11^12^ ⍝^^^^^^^^^^^^^^^^^^^^^^^^^^ ⍝^^^^^^^^^^^^^^^^^13^14^15^ ⍝^^^^^^^^^^^^^^^^^16^17^18^ ⍝ effect of printing precision ---------------------------------- ⎕PP←5 H←÷3 6 H 0.33333 0.16667 I←⍕H I 0.33333 0.16667 ⎕PP←8 H 0.33333333 0.16666667 I 0.33333 0.16667 ⎕PP←10 ⍝ Grade_down.tc ⍝ ---------------------------------- ⎕IO←1 ⍒23 11 13 31 12 4 1 3 5 2 ⎕IO←0 ⍒23 11 13 31 12 3 0 2 4 1 ⎕IO←1 A←23 11 13 31 12 A[⍒A] 31 23 13 12 11 ⍝ identical subarrays ---------------------------------- ⍒23 14 23 12 14 1 3 2 5 4 ⍝ rank B > 1 ---------------------------------- B←5 3ρ 4 16 37 2 9 26 5 11 63 3 18 45 5 11 54 B 4 16 37 2 9 26 5 11 63 3 18 45 5 11 54 ⍒B 3 5 1 4 2 B[⍒B;] 5 11 63 5 11 54 4 16 37 3 18 45 2 9 26 C←4 23 54 28 2 11 51 26 C←C,4 29 17 43 3 19 32 41 C←3 2 4ρC,4 23 54 28 1 25 31 16 C 4 23 54 28 2 11 51 26 4 29 17 43 3 19 32 41 4 23 54 28 1 25 31 16 ⍒C 2 1 3 C[⍒C;;] 4 29 17 43 3 19 32 41 4 23 54 28 2 11 51 26 4 23 54 28 1 25 31 16 ⍝ Grade_down_with_collating_sequence ⍝ ---------------------------------- ⎕IO←1 'ABCDE'⍒'BEAD' 2 4 1 3 ⎕IO←0 'ABCDE'⍒'BEAD' 1 3 0 2 ⎕IO←1 A←5 4ρ'DEADBADECEDEBEADDEED' A DEAD BADE CEDE BEAD DEED 'ABCDE'⍒A 5 1 3 4 2 C←'FACE$' B←'@$&ABCDEF' B⍒C 1 4 3 2 5 C[B⍒C] FECA$ ⍝ diffs in spelling ---------------------------------- K←5 4ρ'dealDealdeadDeadDEED' K deal Deal dead Dead DEED H←2 12ρ'abcdefghijklABCDEFGHIJKL' H abcdefghijkl ABCDEFGHIJKL Z←H⍒K K[Z;] DEED Deal deal Dead dead ⍝ DCS ---------------------------------- DCS←10 2 28⍴' ' DCS[1;1;1+⍳26]←⎕UCS 64+⍳26 DCS[1;2;1+⍳26]←⎕UCS 944+⍳26 DCS[2;2;1+⍳26]←⎕UCS 96+⍳26 DCS[;1;28]←'0123456789' DCS ABCDEFGHIJKLMNOPQRSTUVWXYZ0 αβγδεζηθικλμνξοπρςστυφχψωϊ 1 abcdefghijklmnopqrstuvwxyz 2 3 4 5 6 7 8 9 DCS⍒'AVENUE' 2 5 4 3 6 1 H←'YZOMMXA' DCS⍒H 2 1 6 3 4 5 7 H[DCS⍒H] ZYXOMMA Q←5 4ρ'SENT ZAPDOWNALSOBOA ' Q SENT ZAP DOWN ALSO BOA DCS⍒Q 1 3 5 4 2 Q[DCS⍒Q;] SENT DOWN BOA ALSO ZAP K deal Deal dead Dead DEED DCS⍒K 5 1 2 3 4 K[DCS⍒K;] DEED deal Deal dead Dead S←⊃'X1' 'X10' 'X2' 'X21' 'X3' 'X9' 'X11' 'x3' S X1 X10 X2 X21 X3 X9 X11 x3 DCS⍒S 4 7 2 8 6 5 3 1 S[DCS⍒S;] X21 X11 X10 x3 X9 X3 X2 X1 ⍝ identical subarrays ---------------------------------- 'ABCDE'⍒'DABBED' 5 1 6 3 4 2 'DABBED'['ABCDE'⍒'DABBED'] EDDBBA ⍝ item not in collating sequence ---------------------------------- Q←'BLEAT' W←'ABCDE'⍒Q W 2 5 3 1 4 Q[W] LTEBA ⍝ Grade_up.tc ⍝ ---------------------------------- ⎕IO←1 ⍋23 11 13 31 12 2 5 3 1 4 ⎕IO←0 ⍋23 11 13 31 12 1 4 2 0 3 ⍝ sort right argument ---------------------------------- ⎕IO←1 A←23 11 13 31 12 A[⍋A] 11 12 13 23 31 ⍝ identical subarrays ---------------------------------- ⍋23 14 23 12 14 4 2 5 1 3 ⍝ rank R is two or more ---------------------------------- B←5 3ρ4 16 37 2 9 26 5 11 63 3 18 45 5 11 54 B 4 16 37 2 9 26 5 11 63 3 18 45 5 11 54 ⍋B 2 4 1 5 3 B[⍋B;] 2 9 26 3 18 45 4 16 37 5 11 54 5 11 63 C←4 23 54 28 2 11 51 26 C←C,4 29 17 43 3 19 32 41 C←3 2 4ρC,4 23 54 28 1 25 31 16 C 4 23 54 28 2 11 51 26 4 29 17 43 3 19 32 41 4 23 54 28 1 25 31 16 ⍋C 3 1 2 C[⍋C;;] 4 23 54 28 1 25 31 16 4 23 54 28 2 11 51 26 4 29 17 43 3 19 32 41 ⍝ Regression ⍝ Q←(2 2) (2 2) (2 1) (1 1) (2 2) (1 2) (1 1) (2 2) (1 2) (1 2) ⍋Q 4 7 6 9 10 3 1 2 5 8 Q[⍋Q] 1 1 1 1 1 2 1 2 1 2 2 1 2 2 2 2 2 2 2 2 ⍝ Grade_up_with_collating_sequence.tc ⍝ ---------------------------------- ⎕IO←1 'ABCDE'⍋'BEAD' 3 1 4 2 ⎕IO←0 'ABCDE'⍋'BEAD' 2 0 3 1 ⎕IO←1 A←5 4ρ'DEADBADECEDEBEADDEED' A DEAD BADE CEDE BEAD DEED 'ABCDE'⍋A 2 4 3 1 5 Q←'FACE$' S←'@$&ABCDEF' S⍋Q 5 2 3 4 1 Q[S⍋Q] $ACEF K←5 4ρ'dealDealdeadDeadDEED' K deal Deal dead Dead DEED H←2 12ρ'abcdefghijklABCDEFGHIJKL' H abcdefghijkl ABCDEFGHIJKL Z←H⍋K Z 3 4 1 2 5 K[Z;] dead Dead deal Deal DEED ⍝ DCS ---------------------------------- DCS←10 2 28⍴' ' DCS[1;1;1+⍳26]←⎕UCS 64+⍳26 DCS[1;2;1+⍳26]←⎕UCS 944+⍳26 DCS[2;2;1+⍳26]←⎕UCS 96+⍳26 DCS[;1;28]←'0123456789' DCS ABCDEFGHIJKLMNOPQRSTUVWXYZ0 αβγδεζηθικλμνξοπρςστυφχψωϊ 1 abcdefghijklmnopqrstuvwxyz 2 3 4 5 6 7 8 9 DCS⍋'AVENUE' 1 3 6 4 5 2 H←'LWLOIBY' DCS⍋H 6 5 1 3 4 2 7 H[DCS⍋H] BILLOWY K←5 4ρ'SENT ZAPDOWNALSOBOA ' K SENT ZAP DOWN ALSO BOA DCS⍋K 2 4 5 3 1 K[DCS⍋K;] ZAP ALSO BOA DOWN SENT K←5 4ρ'dealDealdeadDeadDEED' K deal Deal dead Dead DEED DCS⍋K 4 3 2 1 5 K[DCS⍋K;] Dead dead Deal deal DEED S←⊃'X1' 'X10' 'X2' 'X21' 'X3' 'X9' 'X11' 'x3' S X1 X10 X2 X21 X3 X9 X11 x3 DCS⍋S 1 3 5 6 8 2 7 4 S[DCS⍋S;] X1 X2 X3 X9 x3 X10 X11 X21 ⍝ identical subarrays ---------------------------------- 'ABCDE'⍋'DABBED' 2 3 4 1 6 5 ⍝ items not in collating sequence ---------------------------------- W←'ABCDE'⍋'EXACT' W 3 4 1 2 5 'EXACT'[W] ACEXT ⍝ Index_Of.tc ⍝ ---------------------------------- ⎕IO←1 8 4 2 7 3ι3 8 4 5 1 2 'SPORT'ι'TOP' 5 3 2 ⎕IO←0 8 4 2 7 3ι3 8 4 4 0 1 'SPORT'ι'TOP' 4 2 1 ⎕IO←1 A←(2 3) (ι0) 'ME' Aι'ME' (ι0) 3 2 ⍝ Item not found ---------------------------------- ⎕IO←1 8 9 5ι2 5 8 4 3 1 L←'OH' 'NO' 'I' Lι'NO' 'ON' 2 4 'OHNOI'ι'NO' 'ON' 6 6 'WIZARD'ι'OZ' 7 3 6 7 4ι4 7 (ι0) 3 2 4 ⍝ Item recurs ---------------------------------- 5 5 8 8 9ι8 9 5 3 5 1 'BANANA'ι'BANANA' 1 2 3 2 3 2 ⍝ ---------------------------------- ⍝ Index.tc ⍝ ---------------------------------- (ι0)⌷42 42 ⍝ ---------------------------------- ⎕IO←1 V←2 2.3 ¯5 999 .01 3⌷V ¯5 (⊂3 4)⌷V ¯5 999 (⊂2 3ρ1 2 1 4 1 2)⌷V 2 2.3 2 999 2 2.3 ⍝ Indexing a matrix ---------------------------------- ⎕IO←1 M←3 4ρι12 M 1 2 3 4 5 6 7 8 9 10 11 12 3 1⌷M 9 3 (1 3)⌷M 9 11 (2 3) 4⌷M 8 12 (2 3)(,4)⌷M 8 12 ρ(1 2)(3 4ρ3)⌷M 2 3 4 ρ(ι0)(ι0)⌷M 0 0 ⍝ Regression ---------------------------------- ⍝ (2 2⍴⍳4)[1;⍬] ⍴(2 2⍴⍳4)[1;⍬] 0 ⍝ Index_with_axis.tc ⍝ ---------------------------------- ⎕IO←1 A←2 3 4ρι24 A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2⌷[1]A 13 14 15 16 17 18 19 20 21 22 23 24 A[2;;] 13 14 15 16 17 18 19 20 21 22 23 24 (1 3)4⌷[2 3]A 4 12 16 24 A[;1 3;4] 4 12 16 24 ⍝ ---------------------------------- ⍝ Inner_product.tc ⍝ ---------------------------------- M←4 4ρ1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 M 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 M∧.=M 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 K←3 8ρ'SATURDAY7/04/99 JULY 4 ' K SATURDAY 7/04/99 JULY 4 K+.ε'01234567890' 0 5 1 (2 3ρι6)⌊.⌈3 4ρι12 1 2 3 4 4 4 4 4 J←3 2ρι6 J 1 2 3 4 5 6 P←2 2ρ.1×⍳4 P 0.1 0.2 0.3 0.4 J,.+P 1.1 2.3 1.2 2.4 3.1 4.3 3.2 4.4 5.1 6.3 5.2 6.4 ⍝ TODO: double-check J,.+P result indentation S←3 5ρ'SANDYBETTYGRACE' S SANDY BETTY GRACE S∧.='SANDY' 1 0 0 ⍝ empty argument ---------------------------------- U←(0 2ρ0)+.×2 0 ⍴0 ρU 0 0 Q←(2 0ρ0)+.×0 4ρ5 Q 0 0 0 0 0 0 0 0 ρQ 2 4 ⍝ Intersection.tc ⍝ ---------------------------------- 1 2 3 4 ∩ 3 4 5 6 3 4 4 3 2 1 ∩ 3 4 5 6 3 4 ⍝ ================================== ⍝ Interval.tc ⍝ ---------------------------------- ⎕IO←1 ι6 1 2 3 4 5 6 ⎕IO←0 ι6 0 1 2 3 4 5 ⍝ zero argument---------------------------------- Z←ι0 Z ρZ 0 ⍝ artihmetic progressions ---------------------------------- ⎕IO←0 ι5 0 1 2 3 4 10+ι5 10 11 12 13 14 .1×10+ι5 1 1.1 1.2 1.3 1.4 ⎕IO←1 ⍝ Regression ⍝ ⍳¯1 DOMAIN ERROR ⍳¯1 ^ → ⍝ Lambda.tc ⍝ ---------------------------------- ⍝ Regression ⍝ R ← { ⍵ }¨⍳15 R 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 foo←{⍵} foo 3 3 )ERASE foo ( { ⍵ }¨⍳10 ), ( { - ⍵ }¨ ⍳10) 1 2 3 4 5 6 7 8 9 10 ¯1 ¯2 ¯3 ¯4 ¯5 ¯6 ¯7 ¯8 ¯9 ¯10 ⍝ Laminate.tc ⍝ ---------------------------------- A←'FOR' B←'AXE' Z←A,[.5]B Z FOR AXE ρZ 2 3 ≡Z 1 H←(1 2) (3 4) K←'AB' 'CD' Y←H,[.5]K Y 1 2 3 4 AB CD ρY 2 2 ≡Y 2 W←A,[1.1]B W FA OX RE ρW 3 2 ≡W 1 V←H,[1.1]K V 1 2 AB 3 4 CD ρV 2 2 ≡V 2 ⍝ Conformability ---------------------------------- Q←3 3ρ'STYHIMRED' Q STY HIM RED 'A',[.1]Q AAA AAA AAA STY HIM RED 'A',[1.1]Q AAA STY AAA HIM AAA RED 'A',[2.1]Q AS AT AY AH AI AM AR AE AD ⍝ ================================== ⍝ Logarithm.tc ⍝ ---------------------------------- 2⍟256 8 2⍟0J2 1J2.266180071 10⍟100 500 1000 2 2.698970004 3 1⍟1 1 ⍝ ================================== ⍝ Magnitude.tc ⍝ ---------------------------------- ∣¯4.2 4.2 ∣2J¯3 3.605551275 ∣2 ¯2 .3 ¯.3 2 2 0.3 0.3 ∣0J1 2J¯2 4J3 1 2.828427125 5 ⍝ ================================== ⍝ Match.tc ⍝ ---------------------------------- 'TO' 'ME'≡'TO ME' 0 'TO' 'ME'≡'TO' 'ME' 1 1 2 3 4≡1 2 3 4 1 1 2 3 4=1 2 3 4 1 1 1 1 ⍝ empty arrays---------------------------------- ''≡ι0 0 (0 2ρ0)≡(0 2ρ' ') 0 ''≡'' 1 (0 2ρ0)≡(0 2ρ0) 1 ⍝ ================================== ⍝ MatrixDivide.tc ⍝ ---------------------------------- R←2 2ρ1 0 0 2 R 1 0 0 2 L←2 2ρ1 2 4 8 L 1 2 4 8 1 4⌹R 1 2 L⌹R 1 2 2 4 R←2 2ρ 0J1 0 0 2 R 0J1 0 0 2 1 4⌹R 0J¯1 2 L⌹R 0J¯1 0J¯2 2 4 ⍝ Square difference ---------------------------------- A←6 5 14 12 13 3 B←6 4⍴1 2 1 3 1 1 2 4 7 9 10 4 10 9 3 10 11 18 10 4 4 20 18 23 B 1 2 1 3 1 1 2 4 7 9 10 4 10 9 3 10 11 18 10 4 4 20 18 23 X←A⌹B X 2.007570692 ¯1.079004921 0.9769585543 ¯0.01596092849 A-B+.×X 5.221363381 2.181360834 ¯0.04769238556 ¯1.135929011 0.6330691345 ¯0.6683369726 (A-B+.×X)⋆2 27.26263556 4.758335089 0.002274563641 1.290334717 0.400776529 0.446674309 +/,(A-B+.×X)⋆2 34.16103076 ⍝ curve fitting ---------------------------------- ⎕PP←8 V←1 1.2 1.4 1.6 1.8 2 L←!V L 1 1.1018025 1.2421693 1.4296246 1.6764908 2 1.6⊥⌽L⌹V∘.⋆0,ι2 1.434011 1.6⊥⌽L⌹V∘.⋆0,ι3 1.4289585 1.6⊥⌽L⌹V∘.⋆0,ι4 1.4295805 1.6⊥⌽L⌹V∘.⋆0,ι5 1.4296246 ⎕PP←10 2⌹3 0.6666666667 ⍝ ================================== ⍝ MatrixInverse.tc ⍝ ---------------------------------- R←3 3ρ1 0 0 0 2 0 2 0 4 R 1 0 0 0 2 0 2 0 4 Z←⌹R Z 1 0 0 0 0.5 0 ¯0.5 0 0.25 Z+.×R 1 0 0 0 1 0 0 0 1 ⎕PP←4 R←3 3ρ1 2 3 2 4 5 3 5 6 R 1 2 3 2 4 5 3 5 6 Z←⌹R Z 1 ¯3 2.000E0 ¯3 3 ¯1.000E0 2 ¯1 2.358E¯15 R+.×Z 1 0 0 0 1 0 0 0 1 ⎕PP←10 ⍝ ================================== ⍝ Maximum.tc ⍝ ---------------------------------- 3⌈4 4 5⌈4 5 7 5 5 7 ¯2⌈¯3 ¯2 3.3 0 ¯6.7⌈3.1 ¯4 ¯5 3.3 0 ¯5 ⍝ ================================== ⍝ Member.tc ⍝ ---------------------------------- 'BANANA'∈'AN' 0 1 1 1 1 1 5 1 2∈6 5 4 1 9 1 1 0 A←2 3ρ8 3 5 8 4 8 A 8 3 5 8 4 8 A∈1 8 9 3 1 1 0 1 0 1 ⍝ nested arrays---------------------------------- B←'AH' 'HA' 'AH' 'NO' B AH HA AH NO ρB 4 ≡B 2 B∈'AH' 0 0 0 0 B∈⊂'AH' 1 0 1 0 C←(1 2) (ι0) (3 4) C 1 2 3 4 ρC 3 ≡C 2 C∈(1 2) (3 5) (ι0) 1 1 0 ⍝ empty right arument---------------------------------- 8 9 7 3∈ι0 0 0 0 0 ⍝ ================================== ⍝ Minimum.tc ⍝ ---------------------------------- 3⌊4 3 5⌊4 5 7 4 5 5 ¯2⌊¯3 ¯3 3.3 0 ¯6.7⌊3.1 ¯4 ¯5 3.1 ¯4 ¯6.7 ⍝ Regression ⍝ 1 ⌊ 0J0 0 2J0 ⌊ 0 0 ⍝ ================================== ⍝ Multiply.tc ⍝ ---------------------------------- 3×4 12 3×0 ¯2 5 .7 0 ¯6 15 2.1 1J2×3J4 ¯5J10 1 ¯3 .8×1 .5 ¯.2 1 ¯1.5 ¯0.16 ⍝ Regression test (Kacper Gutowski) ⍝ 2 × 0J1 0J2 0J1 × 2 0J2 ⍝ Regression: with axis ⍝ (3 5⍴1) ×[1] ⍳3 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 ⍝ ================================== ⍝ NativeFunctions.tc ⍝ ---------------------------------- A←B←X←1 ⍝ category F0 ---------------------------------------- ⍝ 'lib_template_F0.so' ⎕FX 'NATIVE_F0' NATIVE_F0 NATIVE_F0 eval_() called ⍝ category F12 --------------------------------------- ⍝ 'lib_template_F12.so' ⎕FX 'NATIVE_F12' NATIVE_F12 NATIVE_F12 B eval_B() called A NATIVE_F12 B eval_AB() called NATIVE_F12[X] B eval_XB() called A NATIVE_F12[X] B eval_AXB() called ⍝ category OP1 --------------------------------------- ⍝ 'lib_template_OP1.so' ⎕FX 'NATIVE_OP1' NATIVE_OP1 + NATIVE_OP1 B eval_LB() called A + NATIVE_OP1 B eval_ALB() called + NATIVE_OP1[X] B eval_LXB() called A + NATIVE_OP1[X] B eval_ALXB() called ⍝ category OP2 --------------------------------------- ⍝ 'lib_template_OP2.so' ⎕FX 'NATIVE_OP2' NATIVE_OP2 + NATIVE_OP2 × B eval_LRB() called A + NATIVE_OP2 × B eval_ALRB() called + NATIVE_OP2 × [X] B eval_LRXB() called A + NATIVE_OP2 × [X] B eval_ALRXB() called ⍝ ================================== ⍝ selective spec ---------------------------------- ⍝ NaturalLogarithm.tc ⍝ ---------------------------------- ⍟1 0 ⍟¯1 0J3.141592654 ⍟2.7182818284 1 ⍟0J1 0J1.570796327 ⍝ ================================== ⍝ Negative.tc ⍝ ---------------------------------- -5 ¯5 -3 ¯1 .6 7 ¯3 1 ¯0.6 ¯7 -2J4 ¯2J¯4 -0J1 ¯3J4 ¯2J¯1 0J¯1 3J¯4 2J1 ⍝ ================================== ⍝ Numbers.tc ⍝ ---------------------------------- ⍝ integers ⍝ P←×\12⍴10 ◊ I←¯1 0 1 P ∘.+ I 9 10 11 99 100 101 999 1000 1001 9999 10000 10001 99999 100000 100001 999999 1000000 1000001 9999999 10000000 10000001 99999999 100000000 100000001 999999999 1000000000 1000000001 9999999999 10000000000 10000000001 99999999999 100000000000 100000000001 999999999999 1000000000000 1000000000001 (-P) ∘.+ I ¯11 ¯10 ¯9 ¯101 ¯100 ¯99 ¯1001 ¯1000 ¯999 ¯10001 ¯10000 ¯9999 ¯100001 ¯100000 ¯99999 ¯1000001 ¯1000000 ¯999999 ¯10000001 ¯10000000 ¯9999999 ¯100000001 ¯100000000 ¯99999999 ¯1000000001 ¯1000000000 ¯999999999 ¯10000000001 ¯10000000000 ¯9999999999 ¯100000000001 ¯100000000000 ¯99999999999 ¯1000000000001 ¯1000000000000 ¯999999999999 (○P) ∘.+ I 3.041592654E1 3.141592654E1 3.241592654E1 3.131592654E2 3.141592654E2 3.151592654E2 3.140592654E3 3.141592654E3 3.142592654E3 3.141492654E4 3.141592654E4 3.141692654E4 3.141582654E5 3.141592654E5 3.141602654E5 3.141591654E6 3.141592654E6 3.141593654E6 3.141592554E7 3.141592654E7 3.141592754E7 3.141592644E8 3.141592654E8 3.141592664E8 3.141592653E9 3.141592654E9 3.141592655E9 3.141592653E10 3.141592654E10 3.141592654E10 3.141592654E11 3.141592654E11 3.141592654E11 3.141592654E12 3.141592654E12 3.141592654E12 P←×\12⍴100 P ∘.+ I 9.900000000E1 1E2 1.01000000E2 9.999000000E3 1E4 1.00010000E4 9.999990000E5 1E6 1.00000100E6 9.999999900E7 1E8 1.00000001E8 9.999999999E9 1E10 1.00000000E10 1.000000000E12 1E12 1.00000000E12 1.000000000E14 1E14 1.00000000E14 1.000000000E16 1E16 1.00000000E16 1.000000000E18 1E18 1.00000000E18 1.000000000E20 1E20 1.00000000E20 1.000000000E22 1E22 1.00000000E22 1.000000000E24 1E24 1.00000000E24 (-P) ∘.+ I ¯1.01000000E2 ¯1E2 ¯9.900000000E1 ¯1.00010000E4 ¯1E4 ¯9.999000000E3 ¯1.00000100E6 ¯1E6 ¯9.999990000E5 ¯1.00000001E8 ¯1E8 ¯9.999999900E7 ¯1.00000000E10 ¯1E10 ¯9.999999999E9 ¯1.00000000E12 ¯1E12 ¯1.000000000E12 ¯1.00000000E14 ¯1E14 ¯1.000000000E14 ¯1.00000000E16 ¯1E16 ¯1.000000000E16 ¯1.00000000E18 ¯1E18 ¯1.000000000E18 ¯1.00000000E20 ¯1E20 ¯1.000000000E20 ¯1.00000000E22 ¯1E22 ¯1.000000000E22 ¯1.00000000E24 ¯1E24 ¯1.000000000E24 (○P) ∘.+ I 3.131592654E2 3.141592654E2 3.151592654E2 3.141492654E4 3.141592654E4 3.141692654E4 3.141591654E6 3.141592654E6 3.141593654E6 3.141592644E8 3.141592654E8 3.141592664E8 3.141592653E10 3.141592654E10 3.141592654E10 3.141592654E12 3.141592654E12 3.141592654E12 3.141592654E14 3.141592654E14 3.141592654E14 3.141592654E16 3.141592654E16 3.141592654E16 3.141592654E18 3.141592654E18 3.141592654E18 3.141592654E20 3.141592654E20 3.141592654E20 3.141592654E22 3.141592654E22 3.141592654E22 3.141592654E24 3.141592654E24 3.141592654E24 P←×\12⍴1000000 P ∘.+ I 9.99999E5 1E6 1.000001E6 1.00000E12 1E12 1.000000E12 1.00000E18 1E18 1.000000E18 1.00000E24 1E24 1.000000E24 1.00000E30 1E30 1.000000E30 1.00000E36 1E36 1.000000E36 1.00000E42 1E42 1.000000E42 1.00000E48 1E48 1.000000E48 1.00000E54 1E54 1.000000E54 1.00000E60 1E60 1.000000E60 1.00000E66 1E66 1.000000E66 1.00000E72 1E72 1.000000E72 (-P) ∘.+ I ¯1.000001E6 ¯1E6 ¯9.99999E5 ¯1.000000E12 ¯1E12 ¯1.00000E12 ¯1.000000E18 ¯1E18 ¯1.00000E18 ¯1.000000E24 ¯1E24 ¯1.00000E24 ¯1.000000E30 ¯1E30 ¯1.00000E30 ¯1.000000E36 ¯1E36 ¯1.00000E36 ¯1.000000E42 ¯1E42 ¯1.00000E42 ¯1.000000E48 ¯1E48 ¯1.00000E48 ¯1.000000E54 ¯1E54 ¯1.00000E54 ¯1.000000E60 ¯1E60 ¯1.00000E60 ¯1.000000E66 ¯1E66 ¯1.00000E66 ¯1.000000E72 ¯1E72 ¯1.00000E72 (○P) ∘.+ I 3.141591654E6 3.141592654E6 3.141593654E6 3.141592654E12 3.141592654E12 3.141592654E12 3.141592654E18 3.141592654E18 3.141592654E18 3.141592654E24 3.141592654E24 3.141592654E24 3.141592654E30 3.141592654E30 3.141592654E30 3.141592654E36 3.141592654E36 3.141592654E36 3.141592654E42 3.141592654E42 3.141592654E42 3.141592654E48 3.141592654E48 3.141592654E48 3.141592654E54 3.141592654E54 3.141592654E54 3.141592654E60 3.141592654E60 3.141592654E60 3.141592654E66 3.141592654E66 3.141592654E66 3.141592654E72 3.141592654E72 3.141592654E72 P←×\12⍴10000000000000000 P ∘.+ I 1E16 1E16 1E16 1E32 1E32 1E32 1E48 1E48 1E48 1E64 1E64 1E64 1E80 1E80 1E80 1E96 1E96 1E96 1E112 1E112 1E112 1E128 1E128 1E128 1E144 1E144 1E144 1E160 1E160 1E160 1E176 1E176 1E176 1E192 1E192 1E192 (-P) ∘.+ I ¯1E16 ¯1E16 ¯1E16 ¯1E32 ¯1E32 ¯1E32 ¯1E48 ¯1E48 ¯1E48 ¯1E64 ¯1E64 ¯1E64 ¯1E80 ¯1E80 ¯1E80 ¯1E96 ¯1E96 ¯1E96 ¯1E112 ¯1E112 ¯1E112 ¯1E128 ¯1E128 ¯1E128 ¯1E144 ¯1E144 ¯1E144 ¯1E160 ¯1E160 ¯1E160 ¯1E176 ¯1E176 ¯1E176 ¯1E192 ¯1E192 ¯1E192 (○P) ∘.+ I 3.141592654E16 3.141592654E16 3.141592654E16 3.141592654E32 3.141592654E32 3.141592654E32 3.141592654E48 3.141592654E48 3.141592654E48 3.141592654E64 3.141592654E64 3.141592654E64 3.141592654E80 3.141592654E80 3.141592654E80 3.141592654E96 3.141592654E96 3.141592654E96 3.141592654E112 3.141592654E112 3.141592654E112 3.141592654E128 3.141592654E128 3.141592654E128 3.141592654E144 3.141592654E144 3.141592654E144 3.141592654E160 3.141592654E160 3.141592654E160 3.141592654E176 3.141592654E176 3.141592654E176 3.141592654E192 3.141592654E192 3.141592654E192 ⍝ ================================== ⍝ Oper_negative.tc ⍝ ---------------------------------- ⍝ negative testing for operators ⍝ (10×2 3⍴⍳6){(⍺+⍵)⊣⎕←'LEFT: ⍺=',(⍕⍺),', ⍵=',(⍕⍵)}.{(⍺×⍵)⊣⎕←'RIGHT: ⍺=',(⍕⍺),', ⍵=',(⍕⍵)}(1000×2 3⍴⍳6) RIGHT: ⍺=10 20 30, ⍵=1000 4000 LENGTH ERROR λ1[1] λ←(⍺×⍵)⊣⎕←'RIGHT: ⍺=',(⍕⍺),', ⍵=',(⍕⍵) ^ ^ )SIC )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⍝ ================================== ⍝ Oper_userfun.tc ⍝ test Primitive operators with user defined functions. ⍝ ---------------------------------- )ERASE PLUS ∇Z←A PLUS B )ERASE MINUS ∇Z←A MINUS B )ERASE TIMES ∇Z←A TIMES B )ERASE ENCODE ∇Z←A ENCODE B )ERASE NEG ∇Z←NEG B )ERASE INDEX ∇Z←INDEX B 3 4 5 + 4 5 6 7 9 11 3 4 5 PLUS 4 5 6 7 9 11 NEG 0 2 4 0 ¯2 ¯4 ⍝ dyadic ¨ ------------------------ ⍝ 3 4 5 +¨ 4 5 6 ◊ 3 4 5 PLUS¨ 4 5 6 7 9 11 7 9 11 ⍝ monadic ¨ ------------------------ ⍝ -¨ 0 2 4 ◊ NEG¨ 0 2 4 0 ¯2 ¯4 0 ¯2 ¯4 ⍝ monadic f/ ------------------------ ⍝ +/⍳6 ◊ PLUS/⍳6 21 21 ⍝ dyadic f/ ------------------------ ⍝ 2 +/⍳6 ◊ 2 PLUS/⍳6 3 5 7 9 11 3 5 7 9 11 4 +/ ⍳6 ◊ 4 PLUS/ ⍳6 ◊ 10 14 18 10 14 18 2 -/⍳6 ◊ 2 MINUS/⍳6 ¯1 ¯1 ¯1 ¯1 ¯1 ¯1 ¯1 ¯1 ¯1 ¯1 4 -/ ⍳6 ◊ 4 MINUS/ ⍳6 ◊ ¯2 ¯2 ¯2 ¯2 ¯2 ¯2 ⍝ f\ ------------------------ ⍝ +\⍳6 ◊ PLUS\⍳6 ◊ 1 3 6 10 15 21 1 3 6 10 15 21 -\⍳6 ◊ MINUS\⍳6 ◊ 1 ¯1 2 ¯2 3 ¯3 1 ¯1 2 ¯2 3 ¯3 ⍝ monadic ⍨ ------------------------ ⍝ +⍨1 2 3 ◊ PLUS⍨1 2 3 ◊ 2 4 6 2 4 6 ⍝ dyadic ⍨ ------------------------ ⍝ 5 -⍨ 4 ◊ 5 MINUS ⍨ 4 ◊ ¯1 ¯1 ⍝ ∘.f ------------------------ ⍝ 1 2 3 ∘.+ 10 20 30 ◊ 1 2 3 ∘.PLUS 10 20 30 11 21 31 12 22 32 13 23 33 11 21 31 12 22 32 13 23 33 ⍝ f.g ------------------------ ⍝ +.× ⍨ 4 4⍴⍳16 90 100 110 120 202 228 254 280 314 356 398 440 426 484 542 600 +.TIMES ⍨ 4 4⍴⍳16 90 100 110 120 202 228 254 280 314 356 398 440 426 484 542 600 PLUS.× ⍨ 4 4⍴⍳16 90 100 110 120 202 228 254 280 314 356 398 440 426 484 542 600 PLUS.TIMES ⍨ 4 4⍴⍳16 90 100 110 120 202 228 254 280 314 356 398 440 426 484 542 600 ⍝ f⍤[X] B ------------------------ ⍝ ⎕←N3←⍳3 1 2 3 ⍳⍤0 N3 1 0 0 1 2 0 1 2 3 INDEX⍤[0] N3 1 0 0 1 2 0 1 2 3 INDEX⍤0 N3 1 0 0 1 2 0 1 2 3 ⍝ A f⍤[X] B ------------------------ ⍝ N5←⍳5 2 2 2⊤⍤1 0 N5 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 2 2 2 ENCODE ⍤1 0 N5 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 2 2 2 ENCODE ⍤[1 0] N5 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 ⍝ ================================== ⍝ OuterProduct.tc ⍝ ---------------------------------- (ι4)∘.+ι5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 10 20∘.,1 2 3 10 1 10 2 10 3 20 1 20 2 20 3 (ι4)∘.=ι4 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 R←'⎕⎕⎕⎕' '∆∆∆∆∆' 3 4∘.↑R ⎕⎕⎕ ∆∆∆ ⎕⎕⎕⎕ ∆∆∆∆ ⍝ ================================== ⍝ Partition.tc ⍝ ---------------------------------- 4⎕CR 1 1 2⊂'ABC' ┏→━━━━━━━┓ ┃┏→━┓ ┏→┓┃ ┃┃AB┃ ┃C┃┃ ┃┗━━┛ ┗━┛┃ ┗∊━━━━━━━┛ 4⎕CR 1 0 1⊂'ABC' ┏→━━━━━━┓ ┃┏→┓ ┏→┓┃ ┃┃A┃ ┃C┃┃ ┃┗━┛ ┗━┛┃ ┗∊━━━━━━┛ 1 0 1⊂'ABCD' LENGTH ERROR 1 0 1⊂'ABCD' ^ ^ → 4⎕CR 2 1 2⊂10 20 30 ┏→━━━━━━━━━━━┓ ┃┏→━━━━┓ ┏→━┓┃ ┃┃10 20┃ ┃30┃┃ ┃┗━━━━━┛ ┗━━┛┃ ┗∊━━━━━━━━━━━┛ OTB←'ONE' 'TWO' 'BUCKLE MY SHOE' 4⎕CR OTB ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→━━┓ ┏→━━┓ ┏→━━━━━━━━━━━━━┓┃ ┃┃ONE┃ ┃TWO┃ ┃BUCKLE MY SHOE┃┃ ┃┗━━━┛ ┗━━━┛ ┗━━━━━━━━━━━━━━┛┃ ┗∊━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 4⎕CR 1 1 2⊂OTB ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→━━━━━━━━━━┓ ┏→━━━━━━━━━━━━━━━┓┃ ┃┃┏→━━┓ ┏→━━┓┃ ┃┏→━━━━━━━━━━━━━┓┃┃ ┃┃┃ONE┃ ┃TWO┃┃ ┃┃BUCKLE MY SHOE┃┃┃ ┃┃┗━━━┛ ┗━━━┛┃ ┃┗━━━━━━━━━━━━━━┛┃┃ ┃┗∊━━━━━━━━━━┛ ┗∊━━━━━━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ X←' A STITCH IN TIME ' 4⎕CR X ┏→━━━━━━━━━━━━━━━━━━━━━┓ ┃ A STITCH IN TIME ┃ ┗━━━━━━━━━━━━━━━━━━━━━━┛ 4⎕CR (' '≠X)⊂X ┏→━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→┓ ┏→━━━━━┓ ┏→━┓ ┏→━━━┓┃ ┃┃A┃ ┃STITCH┃ ┃IN┃ ┃TIME┃┃ ┃┗━┛ ┗━━━━━━┛ ┗━━┛ ┗━━━━┛┃ ┗∊━━━━━━━━━━━━━━━━━━━━━━━┛ 4⎕CR (1+' '≠X)⊂X ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→━┓ ┏→━┓ ┏→━━━━━━━┓ ┏→━━┓ ┏→━━━━━━┓┃ ┃┃ ┃ ┃A ┃ ┃STITCH ┃ ┃IN ┃ ┃TIME ┃┃ ┃┗━━┛ ┗━━┛ ┗━━━━━━━━┛ ┗━━━┛ ┗━━━━━━━┛┃ ┗∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 4⎕CR (1+' '=X)⊂X ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→━━┓ ┏→━━━━━━┓ ┏→━━━┓ ┏→━━━━┓ ┏→━━┓┃ ┃┃ A┃ ┃ STITCH┃ ┃ IN┃ ┃ TIME┃ ┃ ┃┃ ┃┗━━━┛ ┗━━━━━━━┛ ┗━━━━┛ ┗━━━━━┛ ┗━━━┛┃ ┗∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ M←3 12ρ'1 10 3.1422 100 6.2833 1000 9.425' 4⎕CR M ┏→━━━━━━━━━━━┓ ↓1 10 3.142┃ ┃2 100 6.283┃ ┃3 1000 9.425┃ ┗━━━━━━━━━━━━┛ 4⎕CR (∼∧⌿' '=M)⊂M ┏→━━━━━━━━━━━━━━━━━┓ ↓┏→┓ ┏→━━━┓ ┏→━━━━┓┃ ┃┃1┃ ┃ 10┃ ┃3.142┃┃ ┃┗━┛ ┗━━━━┛ ┗━━━━━┛┃ ┃┏→┓ ┏→━━━┓ ┏→━━━━┓┃ ┃┃2┃ ┃ 100┃ ┃6.283┃┃ ┃┗━┛ ┗━━━━┛ ┗━━━━━┛┃ ┃┏→┓ ┏→━━━┓ ┏→━━━━┓┃ ┃┃3┃ ┃1000┃ ┃9.425┃┃ ┃┗━┛ ┗━━━━┛ ┗━━━━━┛┃ ┗∊━━━━━━━━━━━━━━━━━┛ ⍝ ================================== ⍝ Partition_with_axis.tc ⍝ ---------------------------------- N←4 3ρι12 4⎕CR N ┏→━━━━━━━┓ ↓ 1 2 3┃ ┃ 4 5 6┃ ┃ 7 8 9┃ ┃10 11 12┃ ┗━━━━━━━━┛ 4⎕CR 1 0 1 1⊂[1]N ┏→━━━━━━━━━━━━━━━━━━━┓ ↓┏→┓ ┏→┓ ┏→┓ ┃ ┃┃1┃ ┃2┃ ┃3┃ ┃ ┃┗━┛ ┗━┛ ┗━┛ ┃ ┃┏→━━━┓ ┏→━━━┓ ┏→━━━┓┃ ┃┃7 10┃ ┃8 11┃ ┃9 12┃┃ ┃┗━━━━┛ ┗━━━━┛ ┗━━━━┛┃ ┗∊━━━━━━━━━━━━━━━━━━━┛ ⍝ ================================== ⍝ Pick.tc ⍝ ---------------------------------- R←'FOUR' 'TO' 'GO' ≡R 2 ⎕IO←1 Z←2⊃R Z TO ρZ 2 ≡Z 1 ⎕IO←0 1⊃R TO ⎕IO←1 A←'S' 'SI' ('SIR' 'SIRE') ≡A 3 W←2⊃A W SI ρW 2 ≡W 1 X←3⊃A X SIR SIRE ρX 2 ≡X 2 ⍝ pick from higher rank array ---------------------------------- C←2 2ρ'ONE' 'TWO' 'BUCKLE' ('MY' 'SHOE') 4⎕CR C ┏→━━━━━━━━━━━━━━━━━━━━━┓ ↓┏→━━┓ ┏→━━┓ ┃ ┃┃ONE┃ ┃TWO┃ ┃ ┃┗━━━┛ ┗━━━┛ ┃ ┃┏→━━━━━┓ ┏→━━━━━━━━━━┓┃ ┃┃BUCKLE┃ ┃┏→━┓ ┏→━━━┓┃┃ ┃┗━━━━━━┛ ┃┃MY┃ ┃SHOE┃┃┃ ┃ ┃┗━━┛ ┗━━━━┛┃┃ ┃ ┗∊━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━┛ ρC 2 2 ≡C 3 Y←(⊂2 2)⊃C Y MY SHOE ρY 2 ≡Y 2 D←C,[.5]2 2ρ'THREE' 'FOUR' 'SHUT' ('THE' 'DOOR') 4⎕CR D ┏→━━━━━━━━━━━━━━━━━━━━━━┓ ↓┏→━━┓ ┏→━━┓ ┃ ┃┃ONE┃ ┃TWO┃ ┃ ┃┗━━━┛ ┗━━━┛ ┃ ┃┏→━━━━━┓ ┏→━━━━━━━━━━┓ ┃ ┃┃BUCKLE┃ ┃┏→━┓ ┏→━━━┓┃ ┃ ┃┗━━━━━━┛ ┃┃MY┃ ┃SHOE┃┃ ┃ ┃ ┃┗━━┛ ┗━━━━┛┃ ┃ ┃ ┗∊━━━━━━━━━━┛ ┃ ┃ ┃ ┃┏→━━━━┓ ┏→━━━┓ ┃ ┃┃THREE┃ ┃FOUR┃ ┃ ┃┗━━━━━┛ ┗━━━━┛ ┃ ┃┏→━━━┓ ┏→━━━━━━━━━━━┓┃ ┃┃SHUT┃ ┃┏→━━┓ ┏→━━━┓┃┃ ┃┗━━━━┛ ┃┃THE┃ ┃DOOR┃┃┃ ┃ ┃┗━━━┛ ┗━━━━┛┃┃ ┃ ┗∊━━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━┛ ρD 2 2 2 ≡D 3 Q←(⊂2 1 2)⊃D Q FOUR ρQ 4 ≡Q 1 ⍝ specifying the left argument ---------------------------------- Q←'FLY' 'PAPER' 2 4⊃Q E S←2 3ρ'AB' 'CD' 'EF' 'GH' 'IJ' 'KL' S AB CD EF GH IJ KL (1 3) 2⊃S F M←'B' 'BA' ('BAT' 'BATH') M B BA BAT BATH ≡M 3 N←(ι0)⊃M N B BA BAT BATH ≡N 3 A←(ι0)⊃0 2ρ0 ρA 0 2 ≡A 1 ⍝ additional examples ---------------------------------- H←2 2ρ'BUCKS' 'TWANG' 'LYMPH' 'FROZE' 4⎕CR H ┏→━━━━━━━━━━━━━━┓ ↓┏→━━━━┓ ┏→━━━━┓┃ ┃┃BUCKS┃ ┃TWANG┃┃ ┃┗━━━━━┛ ┗━━━━━┛┃ ┃┏→━━━━┓ ┏→━━━━┓┃ ┃┃LYMPH┃ ┃FROZE┃┃ ┃┗━━━━━┛ ┗━━━━━┛┃ ┗∊━━━━━━━━━━━━━━┛ ≡H 2 S←(2 1) 4⊃H S P ≡S 0 G←'I' 'AM' ('FOR' 'APL2') 4⎕CR G ┏→━━━━━━━━━━━━━━━━━━━━┓ ┃I ┏→━┓ ┏→━━━━━━━━━━━┓┃ ┃ ┃AM┃ ┃┏→━━┓ ┏→━━━┓┃┃ ┃ ┗━━┛ ┃┃FOR┃ ┃APL2┃┃┃ ┃ ┃┗━━━┛ ┗━━━━┛┃┃ ┃ ┗∊━━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━┛ ≡G 3 T←3 2⊃G T APL2 ρT 4 ≡T 1 3 2 1⊃G A E←2 3ρ'CRY' 'VOX' 'KID' 'JAB' (2 3ρι6) ('LEG' 'NTH') 4⎕CR E ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ↓┏→━━┓ ┏→━━┓ ┏→━━┓ ┃ ┃┃CRY┃ ┃VOX┃ ┃KID┃ ┃ ┃┗━━━┛ ┗━━━┛ ┗━━━┛ ┃ ┃┏→━━┓ ┏→━━━━┓ ┏→━━━━━━━━━━┓┃ ┃┃JAB┃ ↓1 2 3┃ ┃┏→━━┓ ┏→━━┓┃┃ ┃┗━━━┛ ┃4 5 6┃ ┃┃LEG┃ ┃NTH┃┃┃ ┃ ┗━━━━━┛ ┃┗━━━┛ ┗━━━┛┃┃ ┃ ┗∊━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━┛ (2 2) (2 3)⊃E 6 ρE 2 3 ≡E 3 U←(2 3) 2⊃E U NTH ≡U 1 J←(2 3) 2 3⊃E J H ≡J 0 K←'ELM' 'TAX' 'SPY' 'JOB' 'WIN' K←2 3ρK,⊂(2 3ρ'QUE' 'ZiG' 'HaD' 'FoR') 4⎕CR K ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ↓┏→━━┓ ┏→━━┓ ┏→━━┓ ┃ ┃┃ELM┃ ┃TAX┃ ┃SPY┃ ┃ ┃┗━━━┛ ┗━━━┛ ┗━━━┛ ┃ ┃┏→━━┓ ┏→━━┓ ┏→━━━━━━━━━━━━━━━━┓┃ ┃┃JOB┃ ┃WIN┃ ↓┏→━━┓ ┏→━━┓ ┏→━━┓┃┃ ┃┗━━━┛ ┗━━━┛ ┃┃QUE┃ ┃ZiG┃ ┃HaD┃┃┃ ┃ ┃┗━━━┛ ┗━━━┛ ┗━━━┛┃┃ ┃ ┃┏→━━┓ ┏→━━┓ ┏→━━┓┃┃ ┃ ┃┃FoR┃ ┃QUE┃ ┃ZiG┃┃┃ ┃ ┃┗━━━┛ ┗━━━┛ ┗━━━┛┃┃ ┃ ┗∊━━━━━━━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ρK 2 3 ≡K 3 P←(2 3)(1 2)⊃K P ZiG ≡P 1 I←(2 3)(1 2) 3⊃K I G ≡I 0 ⍝ selective spec ---------------------------------- B←'P' 'PI' ('PIE' 'PIER') B P PI PIE PIER 4⎕CR B ┏→━━━━━━━━━━━━━━━━━━━━┓ ┃P ┏→━┓ ┏→━━━━━━━━━━━┓┃ ┃ ┃PI┃ ┃┏→━━┓ ┏→━━━┓┃┃ ┃ ┗━━┛ ┃┃PIE┃ ┃PIER┃┃┃ ┃ ┃┗━━━┛ ┗━━━━┛┃┃ ┃ ┗∊━━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━┛ (2⊃B)←'MY' B P MY PIE PIER 4⎕CR B ┏→━━━━━━━━━━━━━━━━━━━━┓ ┃P ┏→━┓ ┏→━━━━━━━━━━━┓┃ ┃ ┃MY┃ ┃┏→━━┓ ┏→━━━┓┃┃ ┃ ┗━━┛ ┃┃PIE┃ ┃PIER┃┃┃ ┃ ┃┗━━━┛ ┗━━━━┛┃┃ ┃ ┗∊━━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━┛ (2 1⊃B)←'TR' B P TR Y PIE PIER 4⎕CR B ┏→━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃P ┏→━━━━━┓ ┏→━━━━━━━━━━━┓┃ ┃ ┃┏→━┓ Y┃ ┃┏→━━┓ ┏→━━━┓┃┃ ┃ ┃┃TR┃ ┃ ┃┃PIE┃ ┃PIER┃┃┃ ┃ ┃┗━━┛ ┃ ┃┗━━━┛ ┗━━━━┛┃┃ ┃ ┗∊━━━━━┛ ┗∊━━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━┛ (3 2 1⊃B)←'T' B P TR Y PIE TIER 4⎕CR B ┏→━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃P ┏→━━━━━┓ ┏→━━━━━━━━━━━┓┃ ┃ ┃┏→━┓ Y┃ ┃┏→━━┓ ┏→━━━┓┃┃ ┃ ┃┃TR┃ ┃ ┃┃PIE┃ ┃TIER┃┃┃ ┃ ┃┗━━┛ ┃ ┃┗━━━┛ ┗━━━━┛┃┃ ┃ ┗∊━━━━━┛ ┗∊━━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━┛ ⍝ ================================== )SI )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⍝ ]OWNERS ⍝ PiTimes.tc ⍝ ---------------------------------- ○1 3.141592654 ○3J2 9.424777961J6.283185307 ○¯2 ¯6.283185307 ○2.75⋆2 23.75829444 ⍝ ================================== ⍝ Power.tc ⍝ ---------------------------------- 4⋆3 64 10⋆0 1 2⋆0 1 2 3 4 5 1 2 4 8 16 32 10⋆1 10 ⍝ roots ---------------------------------- 5*¯2 0.04 ¯16⋆÷2 0J4 ¯125⋆÷3 2.5J4.330127019 16⋆÷2 4 125⋆÷3 5 0J2⋆3 0J¯8 ⍝ ================================== ⍝ Quad_AF.tc ⍝ ---------------------------------- ⎕IO←0 ⎕AV≡⎕AF⍳256 1 (⍳256)≡⎕AF ⎕AV 1 X←33 34 35 , 'Hello' ⍴X 8 ⎕AF X !"# 72 101 108 108 111 ⍴⎕AF X 8 ⎕IO←1 ⍝ ================================== ⍝ Quad_AI.tc ⍝ ---------------------------------- ⍴⎕AI 4 ⎕AI 1001 2529 2529 0 ⍝ ================================== ⍝ Quad_ARG.tc ⍝ ---------------------------------- ⎕IO←1 ⎕ARG[⍳3] /home/elias/src/apl/dist/bin/apl --noColor -T ⍝ ================================== ⍝ Quad_AT.tc ⍝ ---------------------------------- ⍝ A←1 valences ---------------------------------- ⎕FX 'TOTAL R' '⎕←''TOTAL IS'',+/R' TOTAL 1 ⎕AT 'TOTAL' 0 1 0 ⎕FX 'Z←TOTAL R' 'Z←+/R' TOTAL 1 ⎕AT 'TOTAL' 1 1 0 ANSWER←TOTAL 1 9 3 1 ⎕AT 2 6ρ'TOTAL ANSWER' 1 1 0 1 0 0 ⍝ A←2 : creation time ---------------------------------- 2 ⎕AT 'TOTAL' 0 0 0 0 0 0 0 ⍝ A←3 : execution properties ---------------------------------- 3 ⎕AT 'TOTAL' 0 0 0 0 1 0 0 0 ⎕FX ⎕CR 'TOTAL' TOTAL 3 ⎕AT 'TOTAL' 1 0 0 0 3 ⎕AT '⎕FX' 1 1 1 0 ⍝ A←4 : CDR sizes ---------------------------------- 4 ⎕AT 'TOTAL' 0 0 4 ⎕AT '⎕FX' 0 0 VARIABLE←10 20 30 4 ⎕AT 'VARIABLE' 32 12 VARIABLE←'ABC' 4 ⎕AT 'VARIABLE' 32 3 VARIABLE←'A' 'BC' 4 ⎕AT 'VARIABLE' 96 3 VARIABLE←'' 4 ⎕AT 'VARIABLE' 32 1 VARIABLE←⍳0 4 ⎕AT 'VARIABLE' 32 1 4 ⎕AT '⎕IO' 32 1 ⍝ ================================== )ERASE TOTAL ⍝ Quad_AV.tc ⍝ ---------------------------------- ⍴⎕AV 256 ⎕IO←0 (128↑⎕AV)≡⎕UCS ⍳128 1 ⍝ replace ⎕AV control chars and DEL by ☹ ⍝ AV←⎕AV AV[127,⍳32]←⎕UCS 9785 16 32⍴,' ',[0.5]AV ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ☹ ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ☹ ¥ € ⇄ ∧ ∼ ≬ ⋆ ⋸ ⌸ ⌺ ⌼ ⌾ ⍁ ¡ ⍄ ⍅ ⎕ ⍞ ⌹ ⍆ ⍤ ⍇ ⍈ ⍊ ⊤ λ ⍍ ⍏ £ ⊥ ⍶ ⌶ ⍐ ⍑ χ ⍔ ⍖ ⍗ ⍘ ⍚ ⍛ ⌈ ⍜ ⍢ ∪ ⍨ ⍕ ⍎ ⍬ ⍪ ∣ │ ┤ ⍟ ∆ ∇ → ╣ ║ ╗ ╝ ← ⌊ ┐ └ ┴ ┬ ├ ─ ┼ ↑ ↓ ╔ ╚ ╩ ╦ ╠ ═ ╬ ≡ ⍸ ⍷ ∵ ⌷ ⍂ ⌻ ⊢ ⊣ ◊ ┘ ┌ █ ▄ ▌ ▐ ▀ ⍺ ⍹ ⊂ ⊃ ⍝ ⍲ ⍴ ⍱ ⌽ ⊖ ○ ∨ ⍳ ⍉ ∈ ∩ ⌿ ⍀ ≥ ≤ ≠ × ÷ ⍙ ∘ ⍵ ⍫ ⍋ ⍒ ¯ ¨   ⎕PW←80 ⎕UCS ⎕AV[⍳32] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 (⎕AV[⍳32])=⎕UCS ⍳32 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (⎕AV[⍳32])≡⎕UCS ⍳32 1 ⎕IO←1 ⍝ ================================== ⍝ Quad_CR.tc ⍝ monadic ---------------------------------- )ERASE TOTAL ∇Z←TOTAL R ⎕CR 'TOTAL' Z←TOTAL R Z←+/R ⍝ ⎕CR of other than non-displayable function is the empty matrix ⍝ A←89 34 4 Z←⎕CR 'A' Z ρZ 0 0 1 0 0 0 ⎕FX 'Z←TOTAL R' 'Z←+/R' TOTAL 3 ⎕AT 'TOTAL' 1 0 0 0 Z←⎕CR 'TOTAL' Z ρZ 0 0 )ERASE TOTAL ⍝ dyadic ---------------------------------- A←'A' 'AB' 1 (1 2) (1 2 (3 4)) 1 ⎕CR A 'A' 'AB' 1 (1 2) (1 2 (3 4)) 2 ⎕CR A A .→-. 1 .→--. .→--------. |AB| |1 2| |1 2 .→--.| '--' '---' | |3 4|| | '---'| '∊--------' 3 ⎕CR A A ┏→━┓ 1 ┏→━━┓ ┏→━━━━━━━━┓ ┃AB┃ ┃1 2┃ ┃1 2 ┏→━━┓┃ ┗━━┛ ┗━━━┛ ┃ ┃3 4┃┃ ┃ ┗━━━┛┃ ┗∊━━━━━━━━┛ 4 ⎕CR A ┏→━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃A ┏→━┓ 1 ┏→━━┓ ┏→━━━━━━━━┓┃ ┃ ┃AB┃ ┃1 2┃ ┃1 2 ┏→━━┓┃┃ ┃ ┗━━┛ ┗━━━┛ ┃ ┃3 4┃┃┃ ┃ ┃ ┗━━━┛┃┃ ┃ ┗∊━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━┛ 5 ⎕CR 'ABCDEFGHIJKLMNO' 4142434445464748494A4B4C4D4E4F 6 ⎕CR 'ABCDEFGHIJKLMNO' 4142434445464748494a4b4c4d4e4f 7 ⎕CR A A ┌→─┐ 1 ┌→──┐ ┌→────────┐ │AB│ │1 2│ │1 2 ┌→──┐│ └──┘ └───┘ │ │3 4││ │ └───┘│ └∊────────┘ 8 ⎕CR A ┌→─────────────────────────┐ │A ┌→─┐ 1 ┌→──┐ ┌→────────┐│ │ │AB│ │1 2│ │1 2 ┌→──┐││ │ └──┘ └───┘ │ │3 4│││ │ │ └───┘││ │ └∊────────┘│ └∊∊────────────────────────┘ 9 ⎕CR A ╔══════════════════════════╗ ║A ┏→━┓ 1 ┏→━━┓ ┏→━━━━━━━━┓║ ║ ┃AB┃ ┃1 2┃ ┃1 2 ┏→━━┓┃║ ║ ┗━━┛ ┗━━━┛ ┃ ┃3 4┃┃║ ║ ┃ ┗━━━┛┃║ ║ ┗∊━━━━━━━━┛║ ╚══════════════════════════╝ ⍝ trigger a domain error if new left arguments are implemented ⍝ without adding a testcase ⍝ 10 ⎕CR A DOMAIN ERROR 10 ⎕CR A ^ ^ → ⍝ base64 encoding (see RFC 4648) ⍝ 16 ⎕CR 13 ⎕CR '14fb9c03d97e' FPucA9l+ 16 ⎕CR 13 ⎕CR '14fb9c03d9' FPucA9k= 16 ⎕CR 13 ⎕CR '14fb9c03' FPucAw== 16 ⎕CR '' 16 ⎕CR 'f' Zg== 16 ⎕CR 'fo' Zm8= 16 ⎕CR 'foo' Zm9v 16 ⎕CR 'foob' Zm9vYg== 16 ⎕CR 'fooba' Zm9vYmE= 16 ⎕CR 'foobar' Zm9vYmFy ¯16 ⎕CR 16 ⎕CR 'foobar' foobar ¯16 ⎕CR 16 ⎕CR 'fooba' fooba ¯16 ⎕CR 16 ⎕CR 'foob' foob ¯16 ⎕CR 16 ⎕CR 'foo' foo ¯16 ⎕CR 16 ⎕CR 'fo' fo ¯16 ⎕CR 16 ⎕CR 'f' f ¯16 ⎕CR 16 ⎕CR '' ⍝ ================================== ⍝ Quad_CT.tc ⍝ ---------------------------------- ⍝ check that assigned values > 1E¯9 are rounded down to 1E¯9 ⍝ ⎕PP←15 ⎕CT←0.1 ⎕CT 1E¯9 A←12 D←1E¯12 A←(A-D),A,(A+D) A 12 12 12 ⎕CT←1E¯14 A←12 A←(A-D),A,(A+D) A 11.999999999999 12 12.000000000001 )ERASE CT_OP ∇Z←(LO CT_OP) B ⍝ A differs by: 10E¯12 ⍝ ⎕CT 1E¯10 (left matrix), ⍝ or 1E¯14 (middle matrix) ⍝ Differences shown in right matrix ⍝ ⍝ ⍝ = CT_OP A 1 1 1 1 0 0 _≠≠ 1 1 1 0 1 0 ≠_≠ 1 1 1 0 0 1 ≠≠_ ≠ CT_OP A 0 0 0 0 1 1 _≠≠ 0 0 0 1 0 1 ≠_≠ 0 0 0 1 1 0 ≠≠_ < CT_OP A 0 0 0 0 1 1 _≠≠ 0 0 0 0 0 1 __≠ 0 0 0 0 0 0 ___ > CT_OP A 0 0 0 0 0 0 ___ 0 0 0 1 0 0 ≠__ 0 0 0 1 1 0 ≠≠_ ≤ CT_OP A 1 1 1 1 1 1 ___ 1 1 1 0 1 1 ≠__ 1 1 1 0 0 1 ≠≠_ ≥ CT_OP A 1 1 1 1 0 0 _≠≠ 1 1 1 1 1 0 __≠ 1 1 1 1 1 1 ___ ∈ CT_OP A 1 1 1 1 0 0 _≠≠ 1 1 1 0 1 0 ≠_≠ 1 1 1 0 0 1 ≠≠_ ⋸ CT_OP A 1 1 1 1 0 0 _≠≠ 1 1 1 0 1 0 ≠_≠ 1 1 1 0 0 1 ≠≠_ ≡ CT_OP A 1 1 1 1 0 0 _≠≠ 1 1 1 0 1 0 ≠_≠ 1 1 1 0 0 1 ≠≠_ ⍳ CT_OP A 1 1 1 1 2 2 _≠≠ 1 1 1 2 1 2 ≠_≠ 1 1 1 2 2 1 ≠≠_ ∣ CT_OP A 0 0 0 0 1.00008890058234E¯12 2.00017780116468E¯12 _≠≠ 0 0 0 11.999999999999 0.00000000000000E0 1.00008890058234E¯12 ≠_≠ 0 0 0 11.999999999999 1.20000000000000E1 0.00000000000000E0 ≠≠_ ⍝ other functions depending on ⎕CT ---------------------------------- ⎕CT←1E¯10 ⌊ A 12 12 12 (A,13) ∼ 1↑A 13 (A,13) ∼ 2↑A 13 (A,13) ∼ 3↑A 13 ⌈ A 12 12 12 ⎕CT←1E¯14 ⌊ A 11 12 12 ⌈ A 12 12 13 (A,13) ∼ 1↑A 12 12.000000000001 13 (A,13) ∼ 2↑A 12.000000000001 13 (A,13) ∼ 3↑A 13 ⍝ Localizing ⎕CT ---------------------------------- )ERASE FOO ∇FOO;⎕CT ⎕CT←1E¯12 ⎕CT 1E¯12 FOO 1E¯14 ⎕CT 1E¯12 ⍝ ---------------------------------- ⍝ reset to default ⍝ ⎕PP←10 ⎕CT←1E¯13 )ERASE CT_OP )ERASE FOO ⍝ ================================== ⍝ Quad_DL.tc ⍝ ---------------------------------- Z←⎕DL .1 Z≥.1 1 Z≤.2 1 ⍝ ================================== ⍝ Quad_EA.tc ⍝ ---------------------------------- 'ι3' ⎕EA 'ι4.5' 1 2 3 'ι3' ⎕EA 'ι4' 1 2 3 4 'ι3.3' ⎕EA 'ι4.5' DOMAIN ERROR 'ι3.3' ⎕EA 'ι4.5' ^ ^ → '"ERR"' ⎕EA 'ι4.5' ERR 'Z←ι8' ⎕EA 'Z←!¯3' Z 1 2 3 4 5 6 7 8 ⍝ ================================== ⍝ Quad_EC.tc ⍝ ---------------------------------- ⍝ ---------------------------------- ⎕EC 'ι4.5' 0 0 0 DOMAIN ERROR ⎕EC '2+3' 1 0 0 5 ⎕EC 'Z←2+3' 2 0 0 5 ⎕EC '→10' 4 0 0 10 ⎕EC '→' 5 0 0 ]EXPECT 2 ⍝ ================================== ⍝ Quad_EM.tc ⍝ ---------------------------------- 2+3 4 5=6 3 LENGTH ERROR 2+3 4 5=6 3 ^ ^ → ⍝ ================================== ⍝ Quad_ES.tc ⍝ ---------------------------------- ⍝ monadic, character B ---------------------------------- )ERASE EXPO ∇Z←EXPO A EXPO 3 20.08553692 EXPO 0 ZERO INVALID EXPO 0 ^ ^ ⎕EM ZERO INVALID EXPO 0 ^ ^ ⎕ET 0 1 → ⍝ monadic, integer B, B is a defined error ---------------------------------- )ERASE FACTR ∇Z←FACTR A FACTR 3 6 FACTR 0 DOMAIN ERROR FACTR 0 ^ ^ ⎕EM DOMAIN ERROR FACTR 0 ^ ^ ⎕ET 5 4 → ⍝ monadic, B is 0 0 ---------------------------------- )ERASE FN ∇FN )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices FN 0 0 5 2 4 0 0 ⍝ monadic, B is not a defined error ---------------------------------- ∇Z←RECIP A RECIP 3 0.3333333333 RECIP 0 RECIP 0 ^ ^ ⎕EM RECIP 0 ^ ^ ⍴⎕EM 3 13 ⎕ET 13 17 → ⍝ dyadic ---------------------------------- 'ERROR SIMULATION' ⎕ES 101 9 ERROR SIMULATION 'ERROR SIMULATION' ⎕ES 101 9 ^ ^ ⎕EM ERROR SIMULATION 'ERROR SIMULATION' ⎕ES 101 9 ^ ^ ⎕ET 101 9 → ⍝ dyadic, integer B, B is a defined error ---------------------------------- )ERASE FACTR ∇Z←FACTR A FACTR 4 24 FACTR 0 ZERO INVALID FACTR 0 ^ ^ ⎕EM ZERO INVALID FACTR 0 ^ ^ ⎕ET 5 4 → ⍝ dyadic, B is 0 0 ---------------------------------- )ERASE FN ∇FN FN 0 0 5 2 4 0 0 DONE ]EXPECT 1 ⍝ ================================== ⍝ Quad_ET.tc ⍝ ---------------------------------- (A←1)←2 SYNTAX ERROR (A←1)←2 ^ ^ ⎕ET 2 4 → (⍳68)⍴15 SYSTEM LIMIT (rank) (⍳68)⍴15 ^ ^ ⎕ET 1 8 → ⍝ ================================== ⍝ Quad_EX.tc ⍝ ---------------------------------- RUNS←3 ⎕EX 'RUNS' 1 RUNS VALUE ERROR RUNS ^ → SCORE←43 ⎕NC 'SCORE' 2 ⎕EX '⎕NC' 0 ⎕NC 'SCORE' 2 RUNS←1 ⎕FX 'Z←HITS X' 'Z←+/X' HITS ERRS←2 ⎕EX 3 4ρ'HITSRUNSERRS' 1 1 1 ⍝ system variable ---------------------------------- ⎕IO 1 ⎕EX '⎕IO' 1 ⍳10 ⎕IO ERROR ⍳10 ^ ⎕IO←1 → ⍝ suspended function ---------------------------------- )SIS )ERASE SQUARE ∇Z←SQUARE R T←'TEE' SQUARE T DOMAIN ERROR SQUARE[1] Z←R⋆2 ^^ )SIS SQUARE[1] Z←R⋆2 ^^ ⋆ SQUARE T ^ ⎕EX 'SQUARE' 1 )SIS SQUARE[1] Z←R⋆2 ^^ ⋆ SQUARE T ^ SQUARE 5 VALUE ERROR SQUARE 5 ^ R←5 →⎕LC 25 SQUARE 5 VALUE ERROR SQUARE 5 ^ → ⍝ ================================== ⍝ Quad_FC.tc ⍝ ---------------------------------- ⎕IO 1 ⍝ indexed assignment ⍝ ⎕FC[1]←'u' ⎕FC[2 3]←'vw' ⎕FC[4 5 6]←'xyz' ⎕FC uvwxyz ⍝ set default values if B is too short ⍝ ⎕FC←'' ⎕FC .,⋆0_¯ ⍝ non-indexed assignment ⍝ ⎕FC←'pqrstu' ⎕FC pqrstu ⎕FC←1 2 3 DOMAIN ERROR ⎕FC←1 2 3 ^ ^ → ⍝ ---------------------------------- ⎕FC←'' N←123.456 N 123.456 ⎕FC[1]←'∆' ◊ N 123∆456 ⎕FC←'' ⍝ ================================== ⍝ Quad_FX.tc ⍝ ---------------------------------- ⎕FX 'Z←FMT R' 'Z←R' FMT FMT 'ABCDEF' ABCDEF ⎕FX 'Z←FACTR R' '''⎕ET'' ⎕EA ''Z←!R''' FACTR FACTR 5 120 ⍝ Invalid definition ---------------------------------- ⎕FX 'Z←FN R' 'Z←1+R×2' ⎕AV[37] 3 ⎕IO←0 ⎕FX 'Z←FN R' 'Z←1+R×2' ⎕AV[37] 2 ⎕IO←1 ⍝ suspended or pendant function ---------------------------------- ⎕FX 'FUNC' '1' '2' '!¯3' '4' FUNC FUNC 1 2 DOMAIN ERROR FUNC[3] !¯3 ^ )SI FUNC[3] ⋆ →4 4 ⎕FX 'FUNC' '21' '22' '23' '24' FUNC FUNC 21 22 23 24 ⍝ execution properties [1] ---------------------------------- )ERASE FACTR 1 0 0 0 ⎕FX 'Z←FACTR B' 'Z←!B' FACTR ∇FACTR[⎕]∇ DEFN ERROR+ ∇FACTR[⎕]∇ ^ ]EXPECT 1 ⍝ execution properties [2] ---------------------------------- 0 1 0 0 ⎕FX 'Z←FACTR B' 'Z←!B' FACTR FACTR ¯3 DOMAIN ERROR FACTR ¯3 ^ ^ → ⍝ execution properties [3] ---------------------------------- 0 0 1 0 ⎕FX 'Z←FACTR B' 'Z←!B' FACTR S∆FACTR←1 FACTR 4 24 ⍝ execution properties [4] ---------------------------------- 0 0 0 1 ⎕FX 'Z←L INDEX R' 'Z←R[L]' INDEX 3 INDEX 3 4 DOMAIN ERROR INDEX[1] Z←R[L] ^^ → )CHECK finally deleting SQUARE... OK WARNING - 1 stale functions (erased) print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⍝ ================================== ⍝ Quad_INP.tc ⍝ ---------------------------------- ⍝ monadic ⎕INP ⍝ Q←⎕INP 'END-OF-⎕INP' Hello ⎕INP Second Line END-OF-⎕INP 4 ⎕CR Q ┏→━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→━━━━━━━━━┓ ┏→━━━━━━━━━━┓┃ ┃┃Hello ⎕INP┃ ┃Second Line┃┃ ┃┗━━━━━━━━━━┛ ┗━━━━━━━━━━━┛┃ ┗∊━━━━━━━━━━━━━━━━━━━━━━━━━┛ ⍝ dyadic ⎕INP ⍝ Q← '' ⎕INP 'END-OF-⎕INP' Hello ⎕INP +/⍳6 is END-OF-⎕INP 4 ⎕CR Q ┏→━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→━━━━━━━━━┓ ┏→━━━━━━━━━┓┃ ┃┃Hello ⎕INP┃ ┃+/⍳6 is 21┃┃ ┃┗━━━━━━━━━━┛ ┗━━━━━━━━━━┛┃ ┗∊━━━━━━━━━━━━━━━━━━━━━━━━┛ ⍝ ================================== ⍝ Quad_IO.tc ⍝ ---------------------------------- R←34 18 24 P←'FOUR' 'TO' 'GO' ⎕IO←1 ⍝ 11111111111111111111111111111111 R[1] 34 ⎕RL←555777 5?10 3 10 4 5 2 RR←?10⍴10000 RR 6713 1300 6332 1421 7813 2971 5504 8621 2286 2652 ⍋RR 2 4 9 10 6 7 3 1 5 8 ⍒RR 8 5 1 3 7 6 10 9 4 2 I←⍳10 I 1 2 3 4 5 6 7 8 9 10 I⍳⍒RR 8 5 1 3 7 6 10 9 4 2 2⊃P TO ⎕IO←0 ⍝ 00000000000000000000000000000000 R[1] 18 R[0] 34 ⎕RL←555777 5?10 2 9 3 4 1 RR←?10⍴10000 RR 6712 1299 6331 1420 7812 2970 5503 8620 2285 2651 ⍋RR 1 3 8 9 5 6 2 0 4 7 ⍒RR 7 4 0 2 6 5 9 8 3 1 I←⍳10 I 0 1 2 3 4 5 6 7 8 9 I⍳⍒RR 7 4 0 2 6 5 9 8 3 1 2⊃P GO ⍝ ================================== ⎕IO←1 ⍝ Quad_LC.tc vim: syntax=apl ⍝ ---------------------------------- )ERASE G ∇ G )ERASE H ∇ H )ERASE J ∇ J G G LINE 1 G: 2 H LINE 1 H LINE 2 H LINE 3 H: 4 3 J LINE 1 J LINE 2 J LINE 3 J LINE 4 J LINE 5 J: 6 5 3 J LINE 7 H LINE 6 ⍝ Suspended/halted function ---------------------------------- ∇J[6.1] )ERASE FACTR ∇Z←FACTR A FACTR ¯3 DOMAIN ERROR FACTR[1] Z←!A ^^ ⎕LC 1 FACTR ¯6 DOMAIN ERROR FACTR[1] Z←!A ^^ ⎕LC 1 1 G G LINE 1 G: 2 1 1 H LINE 1 H LINE 2 H LINE 3 H: 4 3 1 1 J LINE 1 J LINE 2 J LINE 3 J LINE 4 J LINE 5 J: 6 5 3 1 1 SYNTAX ERROR J[7] ∘∘∘∘∘∘ ^ ^ ⎕LC 7 5 3 1 1 )WSID Quad_LC WAS CLEAR WS )SAVE Unable to )SAVE workspace 'Quad_LC'.No such file or directory ⁰-⁰-⁰ ⁰:⁰:⁰ (GMT⁵⁰) Offending token: 0x56020011 (VOID) SYNTAX ERROR )SIS J[7] ∘∘∘∘∘∘ ^ ^ H[5] J ^ G[3] H ^ ⋆ G ^ FACTR[1] Z←!A ^^ ⋆ FACTR ¯6 ^ FACTR[1] Z←!A ^^ ⋆ FACTR ¯3 ^ → → → ⍝ ---------------------------------- )ERASE FACTR )ERASE G )ERASE H )ERASE J ⍝ ================================== ⍝ Quad_L.tc ⍝ ---------------------------------- )ERASE F ∇Z←F A F 6 7 10 15 18 25 F 6 7 LENGTH ERROR F[1] Z←(2×A)+3 4 5 ^ ^ ⎕L 12 14 ⎕L←12 14 20 →ι0 RETRY 15 18 25 ⍝ ---------------------------------- )ERASE FL ∇ Z←FL A FL 4 5 6 1.333333333 3.333333333 6 FL 4 5 LENGTH ERROR FL[1] Z←(A×1 2 3)÷⍴A ^ ^ ⎕L 4 5 ⎕L←4 5 6 →ι0 RETRY 2 5 9 ⍝ ================================== )ERASE F ⍝ Quad_LX ⍝ ---------------------------------- ⎕LX←"'Hello World'" )WSID quad_lx WAS Quad_LC )SAVE quad_lx Unable to )SAVE workspace 'quad_lx'.No such file or directory 20⁰-⁰-⁰ ⁰:⁰:⁰ (GMT⁵⁰) Offending token: 0x56020011 (VOID) SYNTAX ERROR )LOAD quad_lx )LOAD quad_lx (file /home/elias/Downloads/testcases/workspaces/quad_lx.xml) failed: No such file or directory SAVED 20⁰-⁰-⁰ ⁰:⁰:⁰ (GMT⁵⁰) Offending token: 0x56020011 (VOID) SYNTAX ERROR ⍝ ================================== ⍝ Quad_NC ⍝ ---------------------------------- )CLEAR CLEAR WS A←1 )ERASE OP1 ∇A (LO OP1 RO) B )ERASE LL )ERASE FOO ∇FOO FOO ¯1 ¯1 1 2 3 4 ⎕NC 6 3⍴' ÷ ÷ LL A FOOOP1' ¯1 ¯1 0 2 3 4 ⍝ ================================== ⍝ Quad_NL.tc ⍝ ---------------------------------- )CLEAR CLEAR WS V1←1 V2←2 V3←3 )ERASE OP1 ∇ (LO OP1 RO) B )ERASE FOO ∇FOO ⍝ monadic ---------------------------------- FOO ⎕NL 1: L1 L2 L3 ⎕NL 2: V1 V2 V3 ⎕NL 3: FOO ⎕NL 4: OP1 ⎕NL 1 3: FOO L1 L2 L3 ⍝ dyadic ---------------------------------- ⎕NL 2 3 FOO V1 V2 V3 'V' ⎕NL 2 3 V1 V2 V3 ⍝ ================================== ⍝ Quad_PP.tc ⍝ ---------------------------------- ⎕PP←10 2÷3 0.6666666667 ⎕PP←200 7÷9 0.7777777777777778 ⎕PP 16 ⎕PP←1 333 333 ⍝ ================================== ⎕PP←10 ⍝ Quad_PR.tc ⍝ ---------------------------------- )ERASE FOO ∇Z←FOO ⎕PR←' ' RESULT←FOO ENTER NAME: ρRESULT 20 RESULT MCMILLAN ⎕PR←'⋆' RESULT←FOO ENTER NAME: ρRESULT 20 RESULT ⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆MCMILLAN ⍝ overriding the prompt ---------------------------------- ⎕PR←' ' RESULT←FOO ENTER NAME: ρRESULT 12 RESULT MCMILLAN ⍝ empty ⎕PR ---------------------------------- ⎕PR←'' RESULT←FOO ENTER NAME: ρRESULT 20 RESULT ENTER NAME: MCMILLAN RESULT←FOO ENTER NAME: ρRESULT 14 RESULT ENTER MCMILLAN ⍝ ================================== ⎕PR←' ' ⍝ Quad_PW.tc ⍝ ---------------------------------- ⎕PW 80 W←'SUPERCALIFRAGILISTIC|EXPIALIDOCIOUS' ρW 35 ⎕PW←30 W SUPERCALIFRAGILISTIC|EXPIALIDO CIOUS ⍝ rows folded together ---------------------------------- 2 36ρ'AAaBBbCCcDDdEEeFFfGGgHHhIIiJJjKKkLLl' AAaBBbCCcDDdEEeFFfGGgHHhIIiJJj KKkLLl AAaBBbCCcDDdEEeFFfGGgHHhIIiJJj KKkLLl ⍝ numbers folded before ⎕PW reached ---------------------------------- 2 3∘.⍟10 20 30 3.321928095 4.321928095 4.906890596 2.095903274 2.726833028 3.095903274 ⍝ ================================== ⎕PW←79 ⍝ Quad_RL.tc ⍝ ---------------------------------- ⎕RL←16807 ⎕RL 16807 ?5 2 ⎕RL 1167640306 ⍝ ================================== ⍝ Quad_R.tc ⍝ ---------------------------------- )ERASE FOO ∇Z←FOO R FOO 10 LENGTH ERROR FOO[1] Z←(R×1 2)+3 4 5 ^ ^ ⎕R 3 4 5 ⎕R←3 4 →ι0 RETRY 13 24 ⍝ SYNTAX or VALUE ERROR ---------------------------------- ⍝ ⎕R ASSIGNMENT IGNORED )ERASE FA ∇Z←FA R FA 1 SYNTAX ERROR FA[1] Z←(R×1 2)+7(13 12 ^ ^ ⍝ ================================== )SIC ⍝ Quad_SVE ⍝ ---------------------------------- ⍝ clear all events ⍝ ⎕SVE←0 ⎕SVE 0 ⎕SVE←1.9 100 ⎕SVO 'OS' 1 ⎕SVE 1.848057 ⎕SVE←1.9 ⎕SVE 1.849908 ⍝ assignment clears events OS←'pwd' /home/elias/Downloads/testcases ⎕SVE←0.2 ⎕SVE 0 ⎕SVR 'OS' 2 ⍝ ================================== ⍝ Quad_SYL ⍝ ---------------------------------- ⎕IO←1 ⍝ SI limit ---------------------------------- )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices )SIC ⎕SYL[1;2] 0 ⍝ system limit on SI depth ⍝ )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⎕SYL[1;2]←10 )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⎕SYL[1;2] 10 ⎕SYL[1]←12 ⎕SYL[1;2] 12 ⍝ a function with infinite recursion ⍝ )ERASE FOO ∇A FOO B;C;D;E;F;G;H;I;J;K;L 0 FOO 0 ATTENTION+ FOO[1] C←D←E←F←G←H←I←J←K←L←(A,A)⍴42 ^ ⎕SYL[1;2] 0 )SI FOO[1] FOO[2] FOO[2] FOO[2] FOO[2] FOO[2] FOO[2] FOO[2] FOO[2] FOO[2] FOO[2] FOO[2] FOO[2] ⋆ )SIC )SI ⍝ value count limit ---------------------------------- ⎕SYL[2;2] 0 ⍝ system limit on value count ⍝ ⎕SYL[2;2]←200 ⎕SYL[2;2] 200 ⎕SYL[2]←400 ⎕SYL[2;2] 400 0 FOO 0 ATTENTION+ FOO[1] C←D←E←F←G←H←I←J←K←L←(A,A)⍴42 ^ ⎕SYL[2;2] 0 )SIC )SI ⍝ ravel cell memory limit ---------------------------------- ⎕SYL[3;2] 0 ⍝ system limit on ravel cell memory ⍝ ⎕SYL[3;2]←3000000 ⎕SYL[3;2] 3000000 ⎕SYL[3]←3600000 ⎕SYL[3;2] 3600000 100 FOO 0 ATTENTION+ FOO[1] C←D←E←F←G←H←I←J←K←L←(A,A)⍴42 ^ ⎕SYL[3;2] 0 )SIC )ERASE FOO )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⍝ ================================== ⍝ Quad.tc ⍝ assignment ---------------------------------- ⎕←4+6×5 34 ρ⎕←ι3 1 2 3 3 A←4+⎕←5+6 11 A 15 ⎕←B←2÷3 0.6666666667 B 0.6666666667 ⍝ reference ---------------------------------- 4+⎕×5 ⎕: 11 59 A←4+⎕×5 ⎕: ι3 A 9 14 19 ⍝ error in expression ---------------------------------- ⍝ TODO ⍝ multiple quads ---------------------------------- ⎕-⎕ ⎕: 8 ⎕: 3 ¯5 ⍝ escape ---------------------------------- ⍝ TODO ⍝ system commands ---------------------------------- ⍝ TODO ⍝ ================================== ⍝ Quad_TC.tc ⍝ ---------------------------------- ⎕UCS ⎕TC 8 13 10 ⍝ ================================== ⍝ Quad_TF.tc ⍝ ---------------------------------- )ERASE Z )ERASE ITEMS ∇Z←ITEMS R ⍝ Function ---------------------------------- ⍝ MIGRATION TRANSFER FORM Z←1 ⎕TF 'ITEMS' ⍴Z 49 Z FITEMS 2 4 9 Z←ITEMS RZ←1 →(0∈⍴R)/0Z←×/⍴R ⍝ EXTENDED TRANSFER FORM Z←2 ⎕TF 'ITEMS' ⍴Z 42 Z ⎕FX 'Z←ITEMS R' 'Z←1' '→(0∈⍴R)/0' 'Z←×/⍴R' ⍝ simple variable ---------------------------------- A←'' 1 ⎕TF 'A' CA 1 0 2 ⎕TF 'A' A←'' A←2 3⍴1⌽ι6 1 ⎕TF 'A' NA 2 2 3 2 3 4 5 6 1 2 ⎕TF 'A' A←(2 3⍴2 3 4 5 6 1) A←' Don''t ' 1 ⎕TF 'A' CA 1 7 Don't 2 ⎕TF 'A' A←' Don''t ' A←.000000000001 1 ⎕TF 'A' NA 0 1E¯12 2 ⎕TF 'A' A←1E¯12 ⍝ APL2 variable ---------------------------------- A←('' (ι0)) ('Q' 3.2) (2+3×ι4) 'Don''t' 4⎕CR A ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→━━━━━━┓ ┏→━━━━┓ ┏→━━━━━━━━┓ ┏→━━━━┓┃ ┃┃┏⊖┓ ┏⊖┓┃ ┃Q 3.2┃ ┃5 8 11 14┃ ┃Don't┃┃ ┃┃┃ ┃ ┃0┃┃ ┗━━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━┛┃ ┃┃┗━┛ ┗━┛┃ ┃ ┃┗∊━━━━━━┛ ┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 2 ⎕TF 'A' A←('' (0⍴0)) ('Q' 3.2) (5 8 11 14) 'Don''t' B←⊂(⊂1 0 1) (2 3ρ4 6) 4⎕CR B ┏━━━━━━━━━━━━━━━━━━━┓ ┃┏→━━━━━━━━━━━━━━━━┓┃ ┃┃┏━━━━━━━┓ ┏→━━━━┓┃┃ ┃┃┃┏→━━━━┓┃ ↓4 6 4┃┃┃ ┃┃┃┃1 0 1┃┃ ┃6 4 6┃┃┃ ┃┃┃┗━━━━━┛┃ ┗━━━━━┛┃┃ ┃┃┗∊━━━━━━┛ ┃┃ ┃┗∊∊━━━━━━━━━━━━━━━┛┃ ┗∊∊∊━━━━━━━━━━━━━━━━┛ 2 ⎕TF 'B' B←(((1 0 1)) (2 3⍴4 6 4 6 4 6)) C←⎕UCS 256⊥¨(⊂300 66),¨⎕AF 'AB' ⍝ Kanji 4⎕CR C ┏→━┓ ┃┃ ┗━━┛ 2 ⎕TF 'C' C←⎕UCS 19677761 19677762 ⍝ external object ---------------------------------- ⍝ TODO ⍝ system variable ---------------------------------- 1 ⎕TF '⎕TS' N⎕TS 1 7 2014 5 1 21 25 15 187 2 ⎕TF '⎕TS' ⎕TS←2014 5 1 21 25 15 187 ⍝ system function ---------------------------------- 1 ⎕TF '⎕DL' 2 ⎕TF '⎕DL' ⍝ shared variable ---------------------------------- ⍝ TODO ⍝ Inverse 1 ⎕TF, Integer ---------------------------------- SCORES← 34 18 20 R←1 ⎕TF 'SCORES' R NSCORES 1 3 34 18 20 ⎕NC 'SCORES' 2 )ERASE SCORES ⎕NC 'SCORES' 0 1 ⎕TF R SCORES ⎕NC 'SCORES' 2 SCORES 34 18 20 ⍝ Inverse 1 ⎕TF, Chars ---------------------------------- X←2 2 3⍴'address@hidden' X ABC 123 abc @#$ R←1 ⎕TF 'X' R CX 3 2 2 3 address@hidden ⎕NC 'X' 2 )ERASE X ⎕NC 'X' 0 1 ⎕TF R X X ABC 123 abc @#$ ⍝ Inverse 1 ⎕TF, Function ---------------------------------- )ERASE FOO ∇R←A FOO B;C;D R←1 ⎕TF 'FOO' R FFOO 2 3 13 R←A FOO B;C;DC←A ◊ D←B L2: →99 ⎕NC 'FOO' 3 )ERASE FOO ⎕NC 'FOO' 0 1 ⎕TF R FOO ∇FOO[⎕]∇ [0] R←A FOO B;C;D [1] C←A ◊ D←B [2] L2: →99 ⍝ Inverse 1 ⎕TF, system variable ---------------------------------- ⎕IO←0 R←1 ⎕TF '⎕IO' R N⎕IO 0 0 ⎕IO←1 1 ⎕TF R ⎕IO ⎕IO 0 ⎕IO←1 ⍝ Inverse 2 ⎕TF, Integer ---------------------------------- SCORES← 34 18 20 R←2 ⎕TF 'SCORES' R SCORES←34 18 20 ⎕NC 'SCORES' 2 )ERASE SCORES ⎕NC 'SCORES' 0 2 ⎕TF R SCORES ⎕NC 'SCORES' 2 SCORES 34 18 20 ⍝ Inverse 2 ⎕TF, Chars ---------------------------------- X←2 2 3⍴'address@hidden' X ABC 123 abc @#$ R←2 ⎕TF 'X' R X←(2 2 3⍴'address@hidden') ⎕NC 'X' 2 )ERASE X ⎕NC 'X' 0 2 ⎕TF R X X ABC 123 abc @#$ ⍝ Inverse 2 ⎕TF, Function ---------------------------------- )ERASE FOO ∇R←A FOO B;C;D R←2 ⎕TF 'FOO' R ⎕FX 'R←A FOO B;C;D' 'C←A ◊ D←B' 'L2: →99' ⎕NC 'FOO' 3 )ERASE FOO ⎕NC 'FOO' 0 2 ⎕TF R FOO ∇FOO[⎕]∇ [0] R←A FOO B;C;D [1] C←A ◊ D←B [2] L2: →99 ⍝ Inverse 2 ⎕TF, system variable ---------------------------------- ⎕IO←0 R←2 ⎕TF '⎕IO' R ⎕IO←0 ⎕IO←1 2 ⎕TF R ⎕IO ⎕IO 0 ⎕IO←1 ⍝ Regression (David B. Lamkins) ⎕←zzzz←'elan' 77 (2 3⍴⍳2) elan 77 1 2 1 2 1 2 ⎕←yyyy←2⎕TF 'zzzz' zzzz←'elan' 77 (2 3⍴1 2 1 2 1 2) )ERASE zzzz ⍎yyyy zzzz elan 77 1 2 1 2 1 2 ⎕←zzzz←'elan' 77 (2 3⍴⍬) elan 77 0 0 0 0 0 0 ⎕←yyyy←2⎕TF 'zzzz' zzzz←'elan' 77 (2 3⍴0 0 0 0 0 0) )ERASE zzzz ⍎yyyy zzzz elan 77 0 0 0 0 0 0 ⎕←zzzz←'elan' 77 (2 3⍴'ab') elan 77 aba bab ⎕←yyyy←2⎕TF 'zzzz' zzzz←'elan' 77 (2 3⍴'ababab') )ERASE zzzz ⍎yyyy zzzz elan 77 aba bab ⎕←zzzz←'elan' 77 (2 3⍴'') elan 77 2⎕TF 'zzzz' zzzz←'elan' 77 (2 3⍴' ') ⎕←yyyy←2⎕TF 'zzzz' zzzz←'elan' 77 (2 3⍴' ') )ERASE zzzz ⍎yyyy zzzz elan 77 ⎕←zzzz←'elan' 77 'abc' elan 77 abc ⎕←yyyy←2⎕TF 'zzzz' zzzz←'elan' 77 'abc' )ERASE zzzz ⍎yyyy zzzz elan 77 abc ⎕←zzzz←'elan' 77 '' elan 77 ⎕←yyyy←2⎕TF 'zzzz' zzzz←'elan' 77 '' )ERASE zzzz ⍎yyyy zzzz elan 77 ⍝ ================================== ⍝ Quad_TS.tc ⍝ ---------------------------------- ⎕TS 2014 5 1 21 25 15 196 T1←⎕DL 0.01 ◊ T1←⎕TS T2←⎕DL 0.01 ◊ T2←⎕TS T3←⎕DL 0.01 ◊ T3←⎕TS T1 = T2 ⍝ same day 1 1 1 1 1 1 0 (24 60 60 1000⊥¯4↑T1) < 24 60 60 1000⊥¯4↑T2 1 T1 ≡ T2 0 T2 = T3 ⍝ same day 1 1 1 1 1 1 0 (24 60 60 1000⊥¯4↑T2) < 24 60 60 1000⊥¯4↑T3 1 T2 ≡ T3 0 ⍝ ================================== ⍝ Quad_TZ.tc ⍝ ---------------------------------- ⎕TZ 8 ⎕TZ←5 ⎕TZ 5 ⎕TZ←6.2 ⎕TZ 6.2 ⍝ ignore values too small or too large ---------------------------------- ⎕TZ←15 ⎕TZ 6.2 ⎕TZ←14.2 ⎕TZ 6.2 ⎕TZ←¯13 ⎕TZ 6.2 ⎕TZ←¯12.2 ⎕TZ 6.2 ⍝ regression ⍝ ⎕TZ←12 ◊ T1←⎕TS ⎕TZ←¯12 ◊ T2←⎕TS +/ (⊂(T1 - T2)[2 3])≡¨ (0 1) (1 ¯27) (1 ¯28) (1 ¯29) (1 ¯30) 1 ⍝ ================================== ⎕TZ←¯1 ⍝ Quad_UCS.tc ⍝ ---------------------------------- ⎕UCS '⍴A B' 9076 65 32 66 ⎕UCS 'Hello',72 101 108 108 111 72 101 108 108 111 Hello ⍝ ================================== ⍝ Quad_UL.tc ⍝ ---------------------------------- ⎕UL 1 X←⎕UL ⎕UL←333 ⎕UL=X 1 ⍝ ================================== ⍝ Quad_WA.tc ⍝ ---------------------------------- ⎕WA 512348160 ⍝ ================================== ⍝ Quote_quad.tc ⍝ assignment ---------------------------------- 2 3 4,⍞←'A HA ' A HA 2 3 4 A HA )ERASE FOO ∇ FOO X FOO 13 X IS 13 )ERASE GOO ∇ GOO GOO 1 2 3 4 5 6 IS A MATRIX ⍝ reference ---------------------------------- RESULT←⍞ ρRESULT 12 RESULT WHAT IS 3+4? ⍝ quotes ---------------------------------- X←⍞ X 'DON''T STOP' ρX 13 ⍝ prompts and responses ---------------------------------- )ERASE XPRMPT ∇ Z←XPRMPT ⎕PR←'' RESULT←XPRMPT SUPPLY →→ RESULT SUPPLY →→ 19 ρRESULT 12 ⎕PR←'⋆' RESULT←XPRMPT SUPPLY →→ RESULT ⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆19 ρRESULT 12 ⎕PR←' ' RESULT←XPRMPT SUPPLY →→ RESULT 19 ρRESULT 12 ⍝ prompt changes ---------------------------------- )ERASE FN2 ∇ Z←FN2 ⍝ override the last 8 prompt chars 'PROMPT: ' prompt by 'ENTRY 45' ⎕PR←'' RESULT←FN2 CHANGE THE PROMPT: ρRESULT 21 RESULT CHANGE THE ENTRY 45 ⎕PR←'⋆' FN2 CHANGE THE PROMPT: ⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆ENTRY 45 ⎕PR←' ' FN2 CHANGE THE PROMPT: ENTRY 45 ⍝ Interrupt ---------------------------------- ⍝ TODO ⍝ Regression ⍝ ⍞←1,'x' 1 x )ERASE FOO FN2 GOO XPRMPT ⍝ ================================== ⍝ Ravel.tc ⍝ ---------------------------------- A←3 3ρι9 A 1 2 3 4 5 6 7 8 9 Z←,A Z 1 2 3 4 5 6 7 8 9 ρZ 9 B←2 2 4ρ'BAD FOG GO SLOW' B BAD FOG GO SLOW ρB 2 2 4 M←,B M BAD FOG GO SLOW ρM 16 ⍝ ensure vector argument ---------------------------------- C←4 ρC ≡C 0 W←,C ρW 1 ≡W 1 ⍝ selective spec ---------------------------------- S←2 2ρ(1 2) (3 4) (5 6) (7 8) S 1 2 3 4 5 6 7 8 ≡S 2 (,S)←'ABCD' S AB CD ρS 2 2 ≡S 1 ⍝ ================================== ⍝ Ravel_with_axis.tc ⍝ X is a fraction ---------------------------------- A←2 3ρ'TENSIX' A TEN SIX Z←,[.1]A Z TEN SIX ρZ 1 2 3 Y←,[1.1]A Y TEN SIX ρY 2 1 3 W←,[2.1]A W T E N S I X ρW 2 3 1 B←10 15 20 V←,[1.1]B V 10 15 20 ρV 3 1 ⍝ X is an integer ---------------------------------- C←3 2 4ρι24 C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 P←,[2 3]C P 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρP 3 8 J←,[1 2]C J 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρJ 6 4 A←'ANT' 'BOAR' 'CAT' 'DOG' 'ELK' 'FOX' 'GNU' B←'HEN' 'IBEX' 'JIRD' 'KITE' 'LAMB' 'MICE' C←'NENE' 'OX' 'PIG' 'QUAIL' 'RAT' 'SEAL' D←4 2 3ρA,B,C,'TITI' 'VIPER' 'WOLF' 'YAK' 'ZEBRA' D ANT BOAR CAT DOG ELK FOX GNU HEN IBEX JIRD KITE LAMB MICE NENE OX PIG QUAIL RAT SEAL TITI VIPER WOLF YAK ZEBRA ρD 4 2 3 ≡D 2 M←,[1 2]D M ANT BOAR CAT DOG ELK FOX GNU HEN IBEX JIRD KITE LAMB MICE NENE OX PIG QUAIL RAT SEAL TITI VIPER WOLF YAK ZEBRA ρM 8 3 ≡M 2 ⍝ X is empty ---------------------------------- H←2 3ρι6 N←,[ι0]H N 1 2 3 4 5 6 ≡N 1 K←'PRUNE' 'PEAR' 'FIG' ρK 3 ≡K 2 I←,[ι0]K I PRUNE PEAR FIG ρI 3 1 ≡I 2 ⍝ Turn an array into a matrix ---------------------------------- E←3 2 5ρι30 ,[ιρρE],[.5]E 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 G←'JIM' 'ED' 'MIKE' ρG 3 F←,[ιρρG],[.5]G F JIM ED MIKE ρF 1 3 ⍝ selective spec ---------------------------------- Q←2 3 4ρι24 (,[2 3]Q)←2 12ρ-ι24 Q ¯1 ¯2 ¯3 ¯4 ¯5 ¯6 ¯7 ¯8 ¯9 ¯10 ¯11 ¯12 ¯13 ¯14 ¯15 ¯16 ¯17 ¯18 ¯19 ¯20 ¯21 ¯22 ¯23 ¯24 ρQ 2 3 4 ⍝ ================================== ⍝ Reciprocal.tc ⍝ ---------------------------------- ÷4 0.25 ÷2J2 0.25J¯0.25 ÷1 .2 ¯3 1 5 ¯0.3333333333 ÷0J1 0J¯1 0J¯1 0J1 ⍝ ================================== ⍝ Reduce_N_wise.tc ⍝ ---------------------------------- ⍝ positive left argument ---------------------------------- R←1 2 3 4 5 6 6+/R 21 5+/R 15 20 4+/R 10 14 18 3+/R 6 9 12 15 2+/R 3 5 7 9 11 1+/R 1 2 3 4 5 6 ⍝ additional examples ---------------------------------- 2+/(1 2)(3 4)(5 6) 4 6 8 10 2,/'ABCDEF' AB BC CD DE EF M←3 4ρι12 M 1 2 3 4 5 6 7 8 9 10 11 12 2+/M 3 5 7 11 13 15 19 21 23 B←3 3ρ'ABCDEFGHI' B ABC DEF GHI 2,/B AB BC DE EF GH HI ⍝ negative left argument ---------------------------------- ¯2-/1 4 9 16 25 3 5 7 9 2-/1 4 9 16 25 ¯3 ¯5 ¯7 ¯9 ¯2,/'ABCDEF' BA CB DC ED FE 2,/'ABCDEF' AB BC CD DE EF 3×/ι6 6 24 60 120 ¯3×/ι6 6 24 60 120 ⍝ zero left argument ---------------------------------- 0×/ι5 1 1 1 1 1 1 ⍝ ================================== ⍝ Reduce_N_wise_with_axis.tc ⍝ ---------------------------------- R←4 3ρι12 R 1 2 3 4 5 6 7 8 9 10 11 12 4+/[1]R 22 26 30 2+/[1]R 5 7 9 11 13 15 17 19 21 3+/[1]R 12 15 18 21 24 27 1+/[1]R 1 2 3 4 5 6 7 8 9 10 11 12 ⍝ nested right argument ---------------------------------- C←3 2ρ(1 2)(3 4)(5 6)(7 8)(9 10)(11 12) C 1 2 3 4 5 6 7 8 9 10 11 12 ρC 3 2 2×/[1]C 5 12 21 32 45 60 77 96 ⍝ negative left argument ---------------------------------- ¯2-/10 20 30 40 10 10 10 ¯2-/10 8 20 ¯3 ¯2 12 ¯23 ⍝ zero left argument ---------------------------------- 0×/[1]R 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ⍝ ================================== ⍝ Reduce.tc ⍝ ---------------------------------- +/1 2 3 4 5 15 ∨/0 0 1 1 0 1 Z←+/(1 2)(3 4)(5 6) Z 9 12 ⍴Z ≡Z 2 W←,/'AB' 'CD' 'EF' W ABCDEF ⍴W ≡W 2 ⍝ higher rank arrays ---------------------------------- M←3 4ρι12 M 1 2 3 4 5 6 7 8 9 10 11 12 +/M 10 26 42 R←3 2ρ'ACEGIK',¨'BDFHJL' R AB CD EF GH IJ KL Y←,/R ρY 3 ≡Y 2 ⍝ skalar or last axis one ---------------------------------- =/15 15 N←4 1ρ2 4 6 8 ÷/N 2 4 6 8 ⍝ empty R ---------------------------------- +/ι0 0 ×/2 3 0ρ⊂0 0 1 1 1 1 1 1 1 1 1 1 1 1 ⍝ reduce with reduction ---------------------------------- +//10 10⍴1 1 1 1 1 1 1 1 1 1 1 ⍝ regression ⍝ //(1 0 1) (1 2 3) 1 3 ((1 1) (1 0))/¨'ab' 'cd' ab c S←(1 1) (1 0) S/¨'ab' 'cd' SYNTAX ERROR S/¨'ab' 'cd' ^ ^ → (S)/¨'ab' 'cd' ab c ⍝ ---------------------------------- ⍝ Reduce_with_axis.tc ⍝ ---------------------------------- M←3 4ρι12 M 1 2 3 4 5 6 7 8 9 10 11 12 +/[1]M 15 18 21 24 ,/[1]2 3ρι6 1 4 2 5 3 6 N←2 3 4ρι24 N 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 +/[1]N 14 16 18 20 22 24 26 28 30 32 34 36 +/[2]N 15 18 21 24 51 54 57 60 ⍝ applied to first axis ---------------------------------- ×/[1]M 45 120 231 384 ×⌿M 45 120 231 384 ⍝ Xth axis has length one ---------------------------------- N←2 1 4ρ2×ι8 N 2 4 6 8 10 12 14 16 ÷/[2]N 2 4 6 8 10 12 14 16 ⍝ empty B ---------------------------------- ÷/[2]2 0 3ρ0 1 1 1 1 1 1 )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⍝ ================================== ⍝ Relational_functions.tc ⍝ ---------------------------------- 'TRIAL'='TRAIL' 1 1 0 0 1 8 ¯2 6 ¯4 0<0 0 1 0 1 0 L←('IN' 'OUT') (9 5 6) (⊂2 2ρι4) R←('IT' 'BUT') 6 (2 2ρ1 8 5 4) 4⎕CR L=R ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃┏→━━━━━━━━━━━━┓ ┏→━━━━┓ ┏→━━━━━━━━━━┓┃ ┃┃┏→━━┓ ┏→━━━━┓┃ ┃0 0 1┃ ↓┏→━━┓ ┏→━━┓┃┃ ┃┃┃1 0┃ ┃0 1 1┃┃ ┗━━━━━┛ ┃↓1 0┃ ↓0 0┃┃┃ ┃┃┗━━━┛ ┗━━━━━┛┃ ┃┃0 0┃ ┃0 0┃┃┃ ┃┗∊━━━━━━━━━━━━┛ ┃┗━━━┛ ┗━━━┛┃┃ ┃ ┃┏→━━┓ ┏→━━┓┃┃ ┃ ┃↓0 0┃ ↓0 0┃┃┃ ┃ ┃┃0 0┃ ┃0 1┃┃┃ ┃ ┃┗━━━┛ ┗━━━┛┃┃ ┃ ┗∊━━━━━━━━━━┛┃ ┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ⍝ Regression ⍝ 1 > 0J0 1 ⍝ ================================== ⍝ Replicate.tc ⍝ ---------------------------------- 1 2 3 4/'ABCD' ABBCCCDDDD 1 2 ¯1 3 ¯2/6 7 8 6 7 7 0 8 8 8 0 0 R←3 2ρ'A' 8 7 6 5 4 R A 8 7 6 5 4 2 ¯1 1 ¯2/R A A 8 7 7 0 6 0 0 5 5 0 4 0 0 0 2 0 1/'SOAP' OOP 2/4 5 4 4 5 5 1 ¯2 3/6 6 0 0 6 6 6 S←,[ι0]'TON' S T O N 1 ¯2 2/S T TT O OO N NN ⍝ effect on depth ---------------------------------- W←'I' 'ID' ('IDE' 'IDEA') W I ID IDE IDEA ≡W 3 X←3 2 1/W X III ID ID IDE IDEA ≡X 3 P←1 2 0/W P I ID ID ≡P 2 ⍝ ================================== ⍝ Replicate_with_axis.tc ⍝ ---------------------------------- R←3 2 4ρι24 R 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ¯1 1/[2]R 1 2 3 4 1 2 3 4 0 0 0 0 5 6 7 8 9 10 11 12 9 10 11 12 0 0 0 0 13 14 15 16 17 18 19 20 17 18 19 20 0 0 0 0 21 22 23 24 S←3 2 4ρι24 2/[2]S 1 2 3 4 1 2 3 4 5 6 7 8 5 6 7 8 9 10 11 12 9 10 11 12 13 14 15 16 13 14 15 16 17 18 19 20 17 18 19 20 21 22 23 24 21 22 23 24 T←3 1 4ρ'ABCDEFGHIJKL' T ABCD EFGH IJKL ρT 3 1 4 ¯1 1/[2]T ABCD EFGH IJKL ρ¯1 1/[2]T 3 2 4 ⍝ alternate symbol for /[1] ---------------------------------- M←3 4ρι12 M 1 2 3 4 5 6 7 8 9 10 11 12 1 0 2 ¯1⌿M 1 2 3 4 9 10 11 12 9 10 11 12 0 0 0 0 1 0 2 ¯1/[1]M 1 2 3 4 9 10 11 12 9 10 11 12 0 0 0 0 ⍝ effect on nested arrays ---------------------------------- D←2 2 2ρ'HE' 'ME' 'WE' 'US' 'I' 'A' 'O' 'E' D HE ME WE US I A O E ρD 2 2 2 ≡D 2 J←0 2/[1]D J IA OE IA OE ≡J 1 W←2 ¯1 1/[2]D W HE ME HE ME WE US I A I A O E ρW 2 4 2 ≡W 2 ⍝ ================================== ⍝ Reshape.tc ⍝ ---------------------------------- ⍝ ---------------------------------- Z←2 3 4ρι24 Z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρZ 2 3 4 ρρZ 3 X←3 8ρZ X 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρX 3 8 ρρX 2 3 5ρι24 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 B←'UP' 'ON' 'TO' 'BY' Y←2 3ρB Y UP ON TO BY UP ON 5ρB UP ON TO BY UP Z←2 3 4ρι24 Z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρZ 2 3 4 ρρZ 3 X←3 8ρZ X 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ρX 3 8 ρρX 2 ⍝ empty argument ---------------------------------- S←0 2ρι0 S ρS 0 2 V←5 6 7 ρV 3 ρρV 1 H←(ι0)ρV H 5 ρH ρρH 0 H←''ρV H 5 ρH ρρH 0 ⍝ Zero in L ---------------------------------- M←3 0ρ0 ρM 3 0 ρρM 2 N←2 0 6ρ5 3 2 1 ρN 2 0 6 ρρN 3 ⍝ Regression ⍝ ¯1⍴1 DOMAIN ERROR ¯1⍴1 ^ ^ → ⍝ selective spec ---------------------------------- T←'GROWTH' (2 3ρT)←2 3ρ-ι6 T ¯1 ¯2 ¯3 ¯4 ¯5 ¯6 (4ρT)←'ABCD' T ABCD ¯5 ¯6 (8ρT)←ι8 T 7 8 3 4 5 6 ⍝ ================================== ⍝ Residue.tc ⍝ ---------------------------------- ⍝ ---------------------------------- 10∣17 7 10∣8 10 ¯4 4J3 8 0 6 4J3 4J6∣7J10 3J4 ¯10 7J10 .3∣17 5 10 ¯3 ¯5J7 0.1 ⍝ Reverse.tc ⍝ ---------------------------------- A←'DESSERTS' ⌽A STRESSED B←(1 2) (3 4) (5 6) ⌽B 5 6 3 4 1 2 C←3 5ρ'EMIT REGALTIDE ' C EMIT REGAL TIDE ⌽C TIME LAGER EDIT ⍝ selective spec ---------------------------------- D←3 4ρι12 D 1 2 3 4 5 6 7 8 9 10 11 12 (⌽D)←3 4ρ'STOPSPINODER' D POTS NIPS REDO ⊖C TIDE REGAL EMIT ⍝ ================================== ⍝ Reverse_with_axis.tc ⍝ ---------------------------------- A←2 3 1ρ'IN' 'OUT' 'UP' 'RIGHT' 'LEFT' 'DOWN' A IN OUT UP RIGHT LEFT DOWN ⌽[2]A UP OUT IN DOWN LEFT RIGHT ⌽[1]A RIGHT LEFT DOWN IN OUT UP ⍝ applied to first axis ---------------------------------- ⊖A RIGHT LEFT DOWN IN OUT UP ⍝ selective spec ---------------------------------- B←3 4ρι12 B 1 2 3 4 5 6 7 8 9 10 11 12 (⌽[1]B)←3 4ρ-ι12 B ¯9 ¯10 ¯11 ¯12 ¯5 ¯6 ¯7 ¯8 ¯1 ¯2 ¯3 ¯4 ⍝ ================================== ⍝ Roll.tc ⍝ ---------------------------------- ⎕IO←1 ⎕RL←444444 ⎕RL 444444 ?10 2 ⎕RL 20020293 ?10 10 10 10 10 10 7 6 1 10 3 8 ⎕IO←0 ⎕RL←444444 ⎕RL 444444 ?10 1 ⎕RL 20020293 ?10 10 10 10 10 10 6 5 0 9 2 7 ⎕IO←1 ⍝ ================================== ⍝ Rotate.tc ⍝ ---------------------------------- A←1 2 3 4 5 6 7 1⌽A 2 3 4 5 6 7 1 B←2 5ρ'ANGLEASIDE' B ANGLE ASIDE 2⌽B GLEAN IDEAS ⍝ negative A ---------------------------------- ¯2⌽A 6 7 1 2 3 4 5 D←2 4ρ'ACHEINKS' D ACHE INKS ¯1⌽D EACH SINK H←3 3ρ'ATEEATTEA' H ATE EAT TEA ¯1 0 1⌽H EAT EAT EAT K←2 3ρ'CAT' 'BEAR' 'PONY' 'GNU' 'BIRD' 'FOX' K CAT BEAR PONY GNU BIRD FOX ρK 2 3 ≡K 2 1 2⌽K BEAR PONY CAT FOX GNU BIRD ⍝ left arg for 3 dimensions ---------------------------------- S←2 3 5ρ'TARESSMARTEARTHSETONLAGERSHEAR' S TARES SMART EARTH SETON LAGER SHEAR ρS 2 3 5 Q←2 3ρ4 0 ¯1 ¯2 5 1 Q 4 0 ¯1 ¯2 5 1 Q⌽S STARE SMART HEART ONSET LAGER HEARS ⍝ selective spec ---------------------------------- W←'STRIPE' 2⌽W RIPEST (2⌽W)←'THERMO' W MOTHER ⍝ ================================== ⍝ Rotate_with_axis.tc ⍝ ---------------------------------- ⎕IO←1 ⍝ for proper axis A←'BETTA' 'CARP' 'EEL' 'LOACH' B←'BAY' 'CEDAR' 'ELM' 'LARCH' C←3 4 1ρA,B,'BOA' 'CAVY' 'ELAND' 'LION' C BETTA CARP EEL LOACH BAY CEDAR ELM LARCH BOA CAVY ELAND LION 1⌽[1]C BAY CEDAR ELM LARCH BOA CAVY ELAND LION BETTA CARP EEL LOACH ⍝ ⊖ is the same as ⌽[1] ---------------------------------- 1⊖C BAY CEDAR ELM LARCH BOA CAVY ELAND LION BETTA CARP EEL LOACH 1⌽[2]C CARP EEL LOACH BETTA CEDAR ELM LARCH BAY CAVY ELAND LION BOA U←3 1ρ'ALFRED' 'THINK' 'QUICK' U ALFRED THINK QUICK 1⊖U THINK QUICK ALFRED ¯1⊖U QUICK ALFRED THINK ⍝ 1 < ⍴,L ---------------------------------- W←'abcdefghijklmnopqrst' W←W,(ι20) W←3 4 5ρW,'ABCDEFGHIJKLMNOPQRST' W a b c d e f g h i j k l m n o p q r s t 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 A B C D E F G H I J K L M N O P Q R S T ρW 3 4 5 V←3 5ρ0 1 ¯1 2 ¯2 ¯3 ¯1 1 3 0 1 0 2 ¯1 3 V 0 1 ¯1 2 ¯2 ¯3 ¯1 1 3 0 1 0 2 ¯1 3 V⌽[2]W a g r n o f l c s t k q h d e p b m i j 6 17 8 19 5 11 2 13 4 10 16 7 18 9 15 1 12 3 14 20 F B M S T K G R D E P L C I J A Q H N O ⍝ selective spec ---------------------------------- Y←3 4ρι12 (1 ¯1 2 ¯2⌽[1]Y)←3 4ρ'ABCDEFGHIJKL' Y IFGL AJKD EBCH ⍝ ================================== ⍝ SaveLoad ⍝ ---------------------------------- )CLEAR CLEAR WS + SYNTAX ERROR + ^ )DROP save_load_SI save_load_SI NOT DROPPED: No such file or directory )SAVE save_load_SI Unable to )SAVE workspace 'save_load_SI'.No such file or directory 20⁰-⁰-⁰ ⁰:⁰:⁰ (GMT⁵⁰) Offending token: 0x56020011 (VOID) SYNTAX ERROR )LOAD save_load_SI )LOAD save_load_SI (file /home/elias/Downloads/testcases/workspaces/save_load_SI.xml) failed: No such file or directory SAVED 20⁰-⁰-⁰ ⁰:⁰:⁰ (GMT⁵⁰) Offending token: 0x56020011 (VOID) SYNTAX ERROR )SI ⋆ )SIC ⍝ ================================== ⍝ Scan.tc ⍝ ---------------------------------- +\1 2 3 4 5 1 3 6 10 15 +\(1 2)(3 4)(5 6) 1 2 4 6 9 12 ∨\0 0 1 1 0 0 0 1 1 1 ,\'AB' 'CD' 'EF' AB ABCD ABCDEF ,\2 3ρι6 1 1 2 1 2 3 4 4 5 4 5 6 ⍝ ================================== ⍝ Scan_with_axis.tc ⍝ ---------------------------------- ⎕IO←1 ⍝ for proper axis M←3 4ρι12 +\[1]M 1 2 3 4 6 8 10 12 15 18 21 24 ,\[1]2 3ρι6 1 2 3 1 4 2 5 3 6 N←2 3 4ρι24 +\[1]N 1 2 3 4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 30 32 34 36 +\[2]N 1 2 3 4 6 8 10 12 15 18 21 24 13 14 15 16 30 32 34 36 51 54 57 60 ⍝ ⍀ is \[1] ---------------------------------- +⍀N 1 2 3 4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 30 32 34 36 ×\[1]M 1 2 3 4 5 12 21 32 45 120 231 384 ×⍀M 1 2 3 4 5 12 21 32 45 120 231 384 ⍝ ================================== ⍝ Shape.tc ⍝ ---------------------------------- C←3 4ρι12 C 1 2 3 4 5 6 7 8 9 10 11 12 ρC 3 4 ρρC 2 D←2 3 4ρ(ι12),-ι12 D 1 2 3 4 5 6 7 8 9 10 11 12 ¯1 ¯2 ¯3 ¯4 ¯5 ¯6 ¯7 ¯8 ¯9 ¯10 ¯11 ¯12 ρD 2 3 4 ρρD 3 ⍝ ================================== ⍝ Subtract.tc ⍝ ---------------------------------- 5-3 2 3J4-1J2 2J2 6-8 .2 4J3 ¯2 5.8 2J¯3 ¯4 .5 0-¯2 1.2 1J2 ¯2 ¯0.7 ¯1J¯2 ⍝ ================================== ⍝ Take.tc ⍝ ---------------------------------- 3↑34 12 73 53 41 34 12 73 ¯3↑34 12 73 53 41 73 53 41 ⍝ nonskalar right argument ---------------------------------- Y←4 5ρ'TRIADFIELDMOOSEDINER' Y TRIAD FIELD MOOSE DINER ¯2 3↑Y MOO DIN W←3 3 4ρ'BEATMYTHANTETONEMEANHEREUPONWEEKDOES' W BEAT MYTH ANTE TONE MEAN HERE UPON WEEK DOES V←¯1 ¯2 2 Z←V↑W Z WE DO ρZ 1 2 2 ⍝ overtake ---------------------------------- 5↑21 33 52 21 33 52 0 0 ¯5↑21 33 52 0 0 21 33 52 5↑'RED' RED ¯5↑'RED' RED U←2 3ρι6 U 1 2 3 4 5 6 H←4 4↑U ρH 4 4 H 1 2 3 0 4 5 6 0 0 0 0 0 0 0 0 0 N←(1 2) (3 4) 4↑N 1 2 3 4 0 0 0 0 ¯6↑'A' 1 'B' 2 A 1 B 2 ¯6↑1 'A' 2 'B' 0 0 1 A 2 B 3↑ι0 0 0 0 2 3↑0 2ρ⊂0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ⍝ skalar right argument ---------------------------------- E←1↑2 ρE 1 E 2 F←(ι0)↑2 F 2 ρF G←1 1 1↑2 G 2 ρG 1 1 1 2 3↑2 2 0 0 0 0 0 ⍝ effect on depth ---------------------------------- T←'T' 'TO' ('TOT' 'TOTE') J←1↑T J T ≡J 1 K←2↑T K T TO ≡K 2 S←8 ((6 5) (4 3)) S 8 6 5 4 3 ≡S 3 3↑S 8 6 5 4 3 0 Q←⌽S Q 6 5 4 3 8 3↑Q 6 5 4 3 8 0 0 0 0 ⍝ selective spec ---------------------------------- P←'ABCDE' (2↑P)←1 2 P 1 2 CDE KY←3 4ρ'ABCDEFGHIJKL' KY ABCD EFGH IJKL (¯2 1↑KY)←1 2 KY A BCD 1 FGH 2 JKL ⍝ ================================== ⍝ Take_with_axis.tc ⍝ ---------------------------------- ⎕IO←1 ⍝ for proper axis A←3 5ρ'GIANTSTORETRAIL' A GIANT STORE TRAIL 2↑[1]A GIANT STORE 2 5↑A GIANT STORE ¯3↑[2]A ANT ORE AIL 3 ¯3↑A ANT ORE AIL ⍝ overtake ---------------------------------- B←2 3ρι6 B 1 2 3 4 5 6 3↑[1]B 1 2 3 4 5 6 0 0 0 H←2 3ρ'ABCDEF' H ABC DEF Z←¯4↑[1]H Z ABC DEF ρZ 4 3 C←2 3ρ1'A' 3 4 5 6 C 1 A 3 4 5 6 4↑[1]C 1 A 3 4 5 6 0 0 0 0 ⍝ check that: L↑[X]R ←→ ⊃[X](⊂L)↑¨⊂[X]R L←4 ◊ X←1 ◊ R←C ⊃[X](⊂L)↑¨⊂[X]R 1 A 3 4 5 6 0 0 0 0 ⍝ permitted axes ---------------------------------- K←3 3 4ρ'HEROSHEDDIMESODABOARPARTLAMBTOTODAMP' K HERO SHED DIME SODA BOAR PART LAMB TOTO DAMP ¯1 3↑[1 3]K LAM TOT DAM ¯1 3↑[3 1]K O D E A R T B O P ⍝ effect on depth ---------------------------------- T←'D' 'DO'('DON' 'DONE') 'M' 'ME'('MEN' 'MENE') S←2 3ρT S D DO DON DONE M ME MEN MENE ≡S 3 H←2↑[2]S H D DO M ME ≡H 2 J←1↑[1]S J D DO DON DONE ≡J 3 M←2 3ρ1(2 3)((4 5)(6 7))8(9 1)((2 3)(4 5)) M 1 2 3 4 5 6 7 8 9 1 2 3 4 5 ρM 2 3 3↑[1]M 1 2 3 4 5 6 7 8 9 1 2 3 4 5 0 0 0 0 0 0 0 T←1⌽[2]M T 2 3 4 5 6 7 1 9 1 2 3 4 5 8 3↑[1]T 2 3 4 5 6 7 1 9 1 2 3 4 5 8 0 0 0 0 0 0 0 ⍝ selective spec ---------------------------------- U←3 4ρ'ABCDEFGHIJKL' U ABCD EFGH IJKL (¯2↑[2]U)←3 2ρι6 U AB 1 2 EF 3 4 IJ 5 6 ⍝ ================================== ⍝ Transpose_reversed_axes.tc ⍝ ---------------------------------- A←4 3ρ'RAMONEATENET' A RAM ONE ATE NET ρA 4 3 Z←⍉A Z ROAN ANTE MEET ρZ 3 4 B←2 3ρ(1 1)(1 2)(1 3)(2 1)(2 2)(2 3) B 1 1 1 2 1 3 2 1 2 2 2 3 ρB 2 3 ≡B 2 X←⍉B X 1 1 2 1 1 2 2 2 1 3 2 3 ρX 3 2 C←2 3 4ρι24 C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 W←⍉C W 1 13 5 17 9 21 2 14 6 18 10 22 3 15 7 19 11 23 4 16 8 20 12 24 ρW 4 3 2 ⍝ selective spec ---------------------------------- R←3 3ρ'STYPIEANT' R STY PIE ANT (⍉R)←3 3ρι9 R 1 4 7 2 5 8 3 6 9 ⍝ ================================== ⍝ Transpose.tc ⍝ ---------------------------------- ⎕IO←1 ⍝ for proper axis A←2 3 4ρ'BEARLYNXDUCKPONYBIRDOXEN' A BEAR LYNX DUCK PONY BIRD OXEN ρA 2 3 4 Z←1 3 2⍉A ρZ 2 4 3 Z BLD EYU ANC RXK PBO OIX NRE YDN W←2 1 3⍉A ρW 3 2 4 W BEAR PONY LYNX BIRD DUCK OXEN Y←3 1 2⍉A ρY 3 4 2 Y BP EO AN RY LB YI NR XD DO UX CE KN ⍝ diagonal cross section of B ---------------------------------- B←4 4ρι16 B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 1⍉B 1 6 11 16 C←3 4ρι12 C 1 2 3 4 5 6 7 8 9 10 11 12 1 1⍉C 1 6 11 D←'ONE' 'FOR' 'ALL' 'HEAD' 'TO' D←3 3ρD,'TOE' 'READY' 'SET' 'GO' D ONE FOR ALL HEAD TO TOE READY SET GO V←1 1⍉D V ONE TO GO ρV 3 ≡V 2 ⍝ higher rank arrays ---------------------------------- H←2 3 4ρ'ABCDEFGHIJKL',ι12 H A B C D E F G H I J K L 1 2 3 4 5 6 7 8 9 10 11 12 1 1 1⍉H A 6 1 1 2⍉H A B C D 5 6 7 8 2 2 1⍉H A 5 B 6 C 7 D 8 1 2 1⍉H A E I 2 6 10 2 1 2⍉H A 2 E 6 I 10 1 2 2⍉H A F K 1 6 11 2 1 1⍉H A 1 F 6 K 11 ⍝ effect of ⎕IO ---------------------------------- ⎕IO←0 K←3 2 4ρι24 K 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 0 2⍉K 0 1 2 3 8 9 10 11 16 17 18 19 4 5 6 7 12 13 14 15 20 21 22 23 ⎕IO←1 ⍝ selective spec ---------------------------------- P←3 3ρι9 (1 1⍉P)←10 20 30 P 10 2 3 4 20 6 7 8 30 ⍝ regression ⍝ ⍉⍬ ⍝ ================================== ⍝ Union.tc ⍝ ---------------------------------- ∪1 1 2 2 3 3 4 4 1 2 3 4 1 2 3 4 1 2 3 4 ∪ 3 4 5 6 1 2 3 4 5 6 4 3 2 1 ∪ 3 4 5 6 1 2 3 4 5 6 ⍝ Regression ⍝ ∪1 2 3 4 1 'missi' 'm' 'i' 's' 's' 'i' 's' 's' 'i' 'p' 'p' 'i' 'missi' 1 2 3 4 missi misp 4 ⎕CR ∪1 2 3 4 1 'missi' 'm' 'i' 's' 'i' 's' 's' 'i' 'p' 'p' 'i' 'missi' ┏→━━━━━━━━━━━━━━━━━━━┓ ┃1 2 3 4 ┏→━━━━┓ misp┃ ┃ ┃missi┃ ┃ ┃ ┗━━━━━┛ ┃ ┗∊━━━━━━━━━━━━━━━━━━━┛ ∪(2 2) (2 2) (2 1) (1 1) (2 2) (1 2) (1 1) (2 2) (1 2) (1 2) 2 2 2 1 1 1 1 2 ⍝ ================================== ⍝ Without.tc ⍝ ---------------------------------- 1 2 3 4 5∼2 3 4 1 5 'RHYME'∼'MYTH' RE ⍝ nested arrays ---------------------------------- 'GO' 'TO' 'IT'∼'GOTO' 'IT' GO TO Z←4 5 (ι0) 6 7∼9 5 3 7 Z 4 6 ρZ 3 W←4 5 (ι0) 6 7∼9 5 3 7 (ι0) W 4 6 ρW 2 ⍝ intersection of two vectors ---------------------------------- 3 1 4 1 5 5∼3 1 4 1 5 5∼4 2 5 2 6 4 5 5 ⍝ ================================== ⍝ Zilde.tc ⍝ ---------------------------------- ⍬ 4 ⎕CR ⍬ ┏⊖┓ ┃0┃ ┗━┛ 4 ⎕CR ⍬ + 42 ┏⊖┓ ┃0┃ ┗━┛ 1 ⍬ 2 1 2 ⍴1 ⍬ 2 3 4 ⎕CR 1 ⍬ 2 ┏→━━━━━━┓ ┃1 ┏⊖┓ 2┃ ┃ ┃0┃ ┃ ┃ ┗━┛ ┃ ┗∊━━━━━━┛ ⍬ ⍬ ⍴⍬ ⍬ 2 4 ⎕CR ⍬ ⍬ ┏→━━━━━━┓ ┃┏⊖┓ ┏⊖┓┃ ┃┃0┃ ┃0┃┃ ┃┗━┛ ┗━┛┃ ┗∊━━━━━━┛ ⍝ ================================== ⍝ Regression.tc ⍝ ---------------------------------- ⍝ problem reported by Hyperborius ∇ r ← smallestFactor n ∇ r ← factors n; sf ∇ r ← c count iter ×/ twenty * ⌈/ twenty ∘.count facs ← factors ¨ twenty ← 1 ↓ ⍳ 20 232792560 ×/ twenty * ⌈/ twenty ∘.count factors ¨ twenty ← 1 ↓ ⍳ 20 232792560 ⍝ stale value when indexing ⍝ )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices (4 4⍴4)[2;2] 4 )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices ⍝ ZZZ4_Regression.tc ⍝ ---------------------------------- ⍝ stale value in failed ⎕EA 4 ⎕CR B←⍳10 ┏→━━━━━━━━━━━━━━━━━━━┓ ┃1 2 3 4 5 6 7 8 9 10┃ ┗━━━━━━━━━━━━━━━━━━━━┛ )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 OK - no stale values OK - no stale indices '2+3' ⎕EA 'A←B)←2)' ⍝ Causes a syntax error, print 5 5 ⍝ ZZZ5_Regression.tc ⍝ ---------------------------------- ∇ r ← offset rot3 v 2 rot3 ⍳ 9 3 1 2 6 4 5 9 7 8 ∇ r ← offset rot3h m a ← 2 rot3h 9 9 ⍴ ⍳ 81 a 3 1 2 6 4 5 9 7 8 12 10 11 15 13 14 18 16 17 21 19 20 24 22 23 27 25 26 30 28 29 33 31 32 36 34 35 39 37 38 42 40 41 45 43 44 48 46 47 51 49 50 54 52 53 57 55 56 60 58 59 63 61 62 66 64 65 69 67 68 72 70 71 75 73 74 78 76 77 81 79 80 ⍴ a 9 9 a ← 9 9 ⍴ ⍳ 81 1 2 3 ∘.rot3h ⊂a 2 3 1 5 6 4 8 9 7 3 1 2 6 4 5 9 7 8 1 2 3 4 5 6 7 8 9 11 12 10 14 15 13 17 18 16 12 10 11 15 13 14 18 16 17 10 11 12 13 14 15 16 17 18 20 21 19 23 24 22 26 27 25 21 19 20 24 22 23 27 25 26 19 20 21 22 23 24 25 26 27 29 30 28 32 33 31 35 36 34 30 28 29 33 31 32 36 34 35 28 29 30 31 32 33 34 35 36 38 39 37 41 42 40 44 45 43 39 37 38 42 40 41 45 43 44 37 38 39 40 41 42 43 44 45 47 48 46 50 51 49 53 54 52 48 46 47 51 49 50 54 52 53 46 47 48 49 50 51 52 53 54 56 57 55 59 60 58 62 63 61 57 55 56 60 58 59 63 61 62 55 56 57 58 59 60 61 62 63 65 66 64 68 69 67 71 72 70 66 64 65 69 67 68 72 70 71 64 65 66 67 68 69 70 71 72 74 75 73 77 78 76 80 81 79 75 73 74 78 76 77 81 79 80 73 74 75 76 77 78 79 80 81 ⍝ ZZZ6_Regression.tc ⍝ ---------------------------------- ⍝ SYNTAX ERROR on IDX ⍝ X ← ⍳10 IDX ← 3 6 9 X[IDX] ← 0 X 1 2 0 4 5 0 7 8 0 10 ⍝ wrong ×/⍳0 ⍝ Z←×/⍳0 ⍴Z ⍴⍴Z 0 ≡Z 0 4 ⎕CR Z ┏━┓ ┃1┃ ┗━┛ 1 ≡ Z 1 D←1 2 3 R←×/¯1↓⍴D D←(R,¯1↑⍴D)⍴D ⍝ ZZZ7_Regression.tc ⍝ ---------------------------------- ⍝ segfault in ⎕EA with error in right argument ⍝ 5 ⌊ ('4' ⎕EA '~¯3') + 2 × 1 5 ⍝ ZZZ8_Regression.tc ⍝ ---------------------------------- ⍝ glue problem with skalar ⍝ S←1 V1←,1 V2←1 2 4 ⎕CR S 'b' ┏→━━┓ ┃1 b┃ ┗━━━┛ 4 ⎕CR V1 'b' ┏→━━━━┓ ┃┏→┓ b┃ ┃┃1┃ ┃ ┃┗━┛ ┃ ┗∊━━━━┛ 4 ⎕CR V2 'b' ┏→━━━━━━┓ ┃┏→━━┓ b┃ ┃┃1 2┃ ┃ ┃┗━━━┛ ┃ ┗∊━━━━━━┛ ⍝ example from Elias Mårtenson ⍝ 2 1 ⍴ 10 11 10 11 x←2 x 1 ⍴ 10 11 10 11 value←2 ⍝ 'value' is now assigned the value 2 x←2 1 ⍝ x contains the list (2 1) y←value 1 ⍝ y should be the same as x x ⍝ Let's confirm x's contents 2 1 y ⍝ y seems to be the same as x here 2 1 x ⍴ 2 1 ⍝ Reshape with x works correctly 2 1 y ⍴ 2 1 ⍝ Reshape with x works correctly 2 1 ⍝ double parentheses example from Elias Mårtenson ⍝ (('foo')) foo ⍝ goto example from Elias Mårtenson ⍝ ⍎'→3' SYNTAX ERROR+ →3 ^ → ⍝ bad function example from Elias Mårtenson ⍝ )ERASE foo z ∇r←x z y 10 z 20 VALUE ERROR z[1] foo ^ → ∇r←x z y DEFN ERROR+ ∇r←x z y ^ ⍝ ZZZ9_Regression.tc ⍝ ---------------------------------- ⍝ indexed assignment ⍝ V←2 2⍴1 2 3 4 V[2 2⍴2;1 1⍴1] ← 'b' V 1 2 b 4 V←4 4⍴2 V 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 V[2 2⍴2] RANK ERROR V[2 2⍴2] ^^ V[2 2⍴2;] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 V[2 2⍴2;] ← 4 V 2 2 2 2 4 4 4 4 2 2 2 2 2 2 2 2 V[2 2⍴2;] ← 4 2 RANK ERROR V[2 2⍴2;]←4 2 ^ ^ → ⍝ ZZZ10_Regression.tc ⍝ ---------------------------------- ⍝ indexed assignment ⍝ 4⎕CR (4 5⍴⍳9),(4 1⍴⊂"foo") ⍝ Works ┏→━━━━━━━━━━━━━━┓ ↓1 2 3 4 5 ┏→━━┓┃ ┃ ┃foo┃┃ ┃ ┗━━━┛┃ ┃6 7 8 9 1 ┏→━━┓┃ ┃ ┃foo┃┃ ┃ ┗━━━┛┃ ┃2 3 4 5 6 ┏→━━┓┃ ┃ ┃foo┃┃ ┃ ┗━━━┛┃ ┃7 8 9 1 2 ┏→━━┓┃ ┃ ┃foo┃┃ ┃ ┗━━━┛┃ ┗∊━━━━━━━━━━━━━━┛ 4⎕CR (4 5⍴⍳10),(4 1⍴⊂"foo") ⍝ Works ┏→━━━━━━━━━━━━━━━┓ ↓1 2 3 4 5 ┏→━━┓┃ ┃ ┃foo┃┃ ┃ ┗━━━┛┃ ┃6 7 8 9 10 ┏→━━┓┃ ┃ ┃foo┃┃ ┃ ┗━━━┛┃ ┃1 2 3 4 5 ┏→━━┓┃ ┃ ┃foo┃┃ ┃ ┗━━━┛┃ ┃6 7 8 9 10 ┏→━━┓┃ ┃ ┃foo┃┃ ┃ ┗━━━┛┃ ┗∊━━━━━━━━━━━━━━━┛ ⍝ ZZ11_Regression.tc ⍝ ---------------------------------- ⍝ binding of [] versus vector notation ⍝ ⍝ ⍝ ISO 13751 example (10.2.14 Indexed Reference): ⍝ 1 2 3[2] ⍝ 2 ⍝ IBM binding rules ([] binds stronger than vector notation) ⍝ 1 2 3[2] RANK ERROR 1 2 3[2] ^^ → (1 2 3)(4 5 6)(7 8 9)[2] 1 2 3 4 5 6 8 ⍝ ================================== ⍝ ZZ12_Regression.tc ⍝ ---------------------------------- ⍝ problem reported by Elias ⍝ ⍝ )ERASE avg )ERASE foo ∇ R←avg L ∇ R←x foo y avg foo\⍳274 5.483576642 avg foo\⍳275 5.483636364 ⍝ ================================== ⍝ ZZ13_Regression.tc ⍝ ---------------------------------- ⍝ problem reported by Elias ⍝ ⍝ )ERASE foo ∇foo[N] X foo[2] 4 N = 2 X = 4 foo[2;3] 4 SYNTAX ERROR foo[2;3]4 ^ ^ → ⍝ ================================== ⍝ ZZ14_Regression.tc ⍝ ---------------------------------- ⍝ problem reported by Kacper ⍝ ⍝ ⎕FX 'test' '⋄' test test ⋄ ⎕CR 'test' test ⋄ )out test test )OUT test failed: No such file or directory ⎕CR 'test' test ⋄ )ERASE FOO ⎕FX 'R←A FOO B;C;D' 'C←A ◊ D←B' 'L2: →99' 'Y←2 2 3⍴''ABC|∣∠123''' FOO )OUT TEST )OUT TEST failed: No such file or directory ⎕CR 'FOO' R←A FOO B;C;D C←A ◊ D←B L2: →99 Y←2 2 3⍴'ABC|∣∠123' C←A ◊ D←B L2: →99 SYNTAX ERROR ⍝ ================================== ⍝ ZZ15_Regression ⍝ ---------------------------------- ⍝ Test file demonstrating bracket index syntax errors ⍝ I ← 2 L ← 3 ⍴ '*' ◊ L *** L[ I ] ← '-' ◊ L *-* M ← 3 3 ⍴ '*' ◊ M *** *** *** M[ 1 ; I ] ← '_' ◊ M *_* *** *** M[I;1]←'∣' ◊ M *_* ∣** *** M[I;I]←'+' ◊ M *_* ∣+* *** N ← 3 3 3 ⍴ '*' ◊ N *** *** *** *** *** *** *** *** *** N[ 1 ; 1 ; I ] ← '¯' ◊ N *¯* *** *** *** *** *** *** *** *** N[2;I;2]←'¯' ◊ N *¯* *** *** *** *¯* *** *** *** *** N[ I ; 3 ; 3 ] ← '_' ◊ N *¯* *** *** *** *¯* **_ *** *** *** ⍝ ================================== ⍝ ZZ16_Regression ⍝ ---------------------------------- ⍝ Overbar in varnames ⍝ A¯1←1 2 3 A¯1 1 2 3 ∆←4 5 6 ∆ 4 5 6 ⍙←7 8 9 ⍙ 7 8 9 A∆←'ABC' A∆ ABC A⍙←'DEF' A⍙ DEF ⍝ ================================== ⍝ ZZ17_Regression ⍝ ---------------------------------- ⍝ Shared variable usability ⍝ )ERASE X 0 ⎕SVO 'X' 1 X←260⍴2 X 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 X←1 2 3 'abc' 'def' X 1 2 3 abc def X←1 X 1 X←1 1 0 X 1 1 0 ⎕SVR 'X' 1 ⎕SVR 'X' 0 X VALUE ERROR X ^ → ⍝ ================================== ⍝ ZZ18_Regression ⍝ ---------------------------------- ⍝ Bug when assigning variable to result of function call on self ⍝ D←5 5 ⍴ 0 D[2 3 4;3]←1 ∇Z←next D;N ∇N disploop S 10 disploop D INDEX ERROR disploop[4] disp←'.#'[1+S] ^ ^ )WSID ZZ18_Regression WAS CLEAR WS )DROP ZZ18_Regression ZZ18_Regression NOT DROPPED: No such file or directory )SAVE Unable to )SAVE workspace 'ZZ18_Regression'.No such file or directory ³ Offending token: 0x56020011 (VOID) SYNTAX ERROR )SIC ⍝ ZZZ0_Standard_09x.tc ⍝ Examples from the APL standard ⍝ ---------------------------------- ⎕CT←1E¯10 ⎕PP←6 ⍝ page 90 ------------------------------------------------------ ⍝ ¯2 ¯1 0 1 ∘.⌈ ¯2 ¯1 0 1 ¯2 ¯1 0 1 ¯1 ¯1 0 1 0 0 0 1 1 1 1 1 ¯2 ¯1 0 1 ∘.⌊ ¯2 ¯1 0 1 ¯2 ¯2 ¯2 ¯2 ¯2 ¯1 ¯1 ¯1 ¯2 ¯1 0 0 ¯2 ¯1 0 1 ⍝ page 91 ------------------------------------------------------ ⍝ ⎕PP←12 2⋆32 4294967296 4⋆0.5 2 ¯8*÷3 1J1.73205080757 ⍝ page 92 ------------------------------------------------------ ⍝ ⎕PP←6 10 2 10 0.1 ⍟2 65536 1E15 1E15 0.30103 16 15 ¯15 ⍝ page 93 ------------------------------------------------------ ⍝ ⎕PP←14 ⎕CT←1E¯10 7 ¯7 ∘.∣31 28 ¯30 3 0 5 ¯4 0 ¯2 0.2 |1.4 1.5 1.6 0 0.1 0 1 |1E30 1E¯30 ¯1E¯30 .99999999999 0 0 0 0 ⎕CT←0 1|1E30 1E¯30 ¯1E¯30 .99999999999 0 1E¯30 ¯1E¯30 0.99999999999 ⎕CT←1E¯10 ⍝ page 94 ------------------------------------------------------ ⍝ ¯4 ¯3 ¯2 ¯1 0 1 2 3 4 ∘.! ¯4 ¯3 ¯2 ¯1 0 1 2 3 4 1 ¯3 3 ¯1 0 0 0 0 0 0 1 ¯2 1 0 0 0 0 0 0 0 1 ¯1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 ¯4 ¯3 ¯2 ¯1 0 1 2 3 4 10 6 3 1 0 0 1 3 6 ¯20 ¯10 ¯4 ¯1 0 0 0 1 4 35 15 5 1 0 0 0 0 1 ⍝ page 95 ------------------------------------------------------ ⍝ ⍝ page 96 ------------------------------------------------------ ⍝ 2○¯1 ○.6 0.8 2 ○0 1 3 ○○÷4 1 6 ○0 1 ⍝ page 97 ------------------------------------------------------ ⍝ 0 1 ∘.∧ 0 1 0 0 0 1 30 ∧ 36 180 3 ∧ 3.6 18 135J¯14 ∧ 155J34 ¯805J1448 ¯29J53 ∧ ¯1J107 ¯853J¯329 ⍝ page 98 ------------------------------------------------------ ⍝ 0 1 ∘.∨ 0 1 0 1 1 1 30 ∨ 36 6 3 ∨ 3.6 0.6 ¯29J53 ∨ ¯1J107 7J1 0 1 ∘.⍲ 0 1 1 1 1 0 ⍝ page 99 ------------------------------------------------------ ⍝ 0 1 ∘.⍱ 0 1 1 0 0 0 ⍝ ZZZ0_Standard_10x.tc ⍝ Examples from the APL standard ⍝ ---------------------------------- ⎕CT←1E¯10 ⎕PP←6 ⍝ page 100 ------------------------------------------------------ ⍝ 1 2 3 ∘.= 1 2 3 1 0 0 0 1 0 0 0 1 ⎕CT←1E¯13 4 = 4 + 5E¯13 2E¯13 ¯2E¯13 ¯5E¯13 0 1 1 0 ⍝ the standard seems to be wrong, since +/- 1E¯20 < ⎕CT 0 = ¯1E¯20 1E¯20 0 1 1 1 ¯1E¯20 = ¯1E¯20 1E¯20 0 1 0 1 1E¯20 = ¯1E¯20 1E¯20 0 0 1 1 3 = 'A3' 0 0 ⎕CT←1E¯10 ⍝ page 101 ------------------------------------------------------ ⍝ 1 2 3 ∘.< 1 2 3 0 1 1 0 0 1 0 0 0 0 1 ∘.< 0 1 0 1 0 0 ⍝ page 102 ------------------------------------------------------ ⍝ 1 2 3 ∘.≤ 1 2 3 1 1 1 0 1 1 0 0 1 0 1 ∘.≤ 0 1 1 1 0 1 ⍝ page 103 ------------------------------------------------------ ⍝ 'A' ≠ 41 1 1 2 3 ∘.≠1 2 3 0 1 1 1 0 1 1 1 0 0 1 ∘.≠ 0 1 0 1 1 0 ⍝ page 104 ------------------------------------------------------ ⍝ 1 2 3 ∘.≥1 2 3 1 0 0 1 1 0 1 1 1 0 1 ∘.≥0 1 1 0 1 1 ⍝ page 105 ------------------------------------------------------ ⍝ 1 2 3 ∘.> 1 2 3 0 0 0 1 0 0 1 1 0 0 1 ∘.> 0 1 0 0 1 0 ⍝ page 106 ------------------------------------------------------ ⍝ page 107 ------------------------------------------------------ ⍝ )ERASE ∆N ∇Z←A ∆N B 'N' ∆N 2 3 4 5 22 23 33 34 44 213 222 233 224 234 243 432 2221 2714 12121 N ← 99 N12121 11111 11121 12111 12121 N22 11 12 21 22 N23 11 12 13 21 22 23 N213 111 112 113 211 212 213 N222 111 112 121 122 211 212 221 222 N233 111 112 113 121 122 123 131 132 133 211 212 213 221 222 223 231 232 233 N234 111 112 113 114 121 122 123 124 131 132 133 134 211 212 213 214 221 222 223 224 231 232 233 234 N2221 1111 1121 1211 1221 2111 2121 2211 2221 N33 11 12 13 21 22 23 31 32 33 N34 11 12 13 14 21 22 23 24 31 32 33 34 ,N22 11 12 21 22 ,N222 111 112 121 122 211 212 221 222 ,N2221 1111 1121 1211 1221 2111 2121 2211 2221 ⍝ page 108 ------------------------------------------------------ ⍝ ⍴N ⍴,N 1 ⍴⍴N 0 ⍴N3 3 ⍴⍴N3 1 ⍴N34 3 4 ⍝ page 109 ------------------------------------------------------ ⍝ ⎕IO←0 ⍳4 0 1 2 3 ⎕IO←1 ⍳4 1 2 3 4 ⍝ page 110 ------------------------------------------------------ ⍝ ⍪0 0 ⍴⍪0 1 1 ⍪N4 1 2 3 4 ⍪N22 11 12 21 22 ⍪N222 111 112 121 122 211 212 221 222 ⍪N2221 1111 1121 1211 1221 2111 2121 2211 2221 ⍝ page 111 ------------------------------------------------------ ⍝ ≡5 0 ≡1 2 3 1 ≡N234 1 ≡'ABC',1 2 3 1 ≡⊂1 2 3 2 ≡,⊂1 2 3 2 ≡'HERO',⊂2 3,⊂2 3⍴⊂5 8 4 ⍝ page 112 ------------------------------------------------------ ⍝ ∈1 2 3,⊂4 5 6 1 2 3 4 5 6 ≡1 2 3,⊂4 5 6 2 ≡∈1 2 3,⊂4 5 6 1 ⍝ page 113 ------------------------------------------------------ ⍝ 2 4⍴N213 111 112 113 211 212 213 111 112 ⍴0⍴'ABCD' 0 B←1E7 1E7 1E7 0 1E7 1E7 1E7 ⍴ 42 ⍴B 10000000 10000000 10000000 0 10000000 10000000 10000000 B←0 ⍝ page 114 ------------------------------------------------------ ⍝ '',0 0 ⍝ page 115 ------------------------------------------------------ ⍝ page 116 ------------------------------------------------------ ⍝ page 117 ------------------------------------------------------ ⍝ +/1 2 3 6 ×/1 2 2 =/'A' A =/'AA' 1 =/'AAA' 0 ⍝ our implementation parameter 'Reduction-Style' is ⍝ Enclose-Reduction-Style. therefore we get 0 here ⍝ (3 8⍴0) ≡ ,⌿2 3 4⍴0 ⍝ Insert-Reduction-Style 0 (3 4⍴⊂0 0) ≡ ,⌿2 3 4⍴0 ⍝ Enclose-Reduction-Style 1 ⍝ page 118 ------------------------------------------------------ ⍝ +/2 0 ⍴5.1 0 0 ⍴+/2 0⍴5.1 2 ⍝ page 119 ------------------------------------------------------ ⍝ +\1 1 1 1 2 3 ∧\1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -\'A' A =\'AB' A 0 ⍝ page 120 ------------------------------------------------------ ⍝ page 121 ------------------------------------------------------ ⍝ page 122 ------------------------------------------------------ ⍝ 0+/1 2 3 0 0 0 0 1+/1 2 3 1 2 3 2+/1 2 3 3 5 3+/1 2 3 6 4+/1 2 3 2-/1 4 9 16 25 ¯3 ¯5 ¯7 ¯9 ¯2-/1 4 9 16 25 3 5 7 9 ¯3-/1 2 3 4 5 6 7 2 3 4 5 6 ⍝ page 123 ------------------------------------------------------ ⍝ page 124 ------------------------------------------------------ ⍝ ∘.≤⍨N3 1 1 1 0 1 1 0 0 1 3-⍨4 1 +/2⋆⍨2 2⍴4 7 1 8 65 65 ⍝ page 125 ------------------------------------------------------ ⍝ ⍝ () were missing in the standard ⍝ ⍴¨(⊂'AB'),⊂'CDE' 2 3 ⍝ page 126 ------------------------------------------------------ ⍝ 10 20 30 ∘.+ 1 2 3 11 12 13 21 22 23 31 32 33 ⍝ page 127 ------------------------------------------------------ ⍝ ⍝ page 128 ------------------------------------------------------ ⍝ 4 2 1+.×1 0 1 5 N22+.×0 1 12 22 N22+.×1 0 11 21 N22+.×2 2⍴0 1 1 0 12 11 22 21 ⍝ page 129 ------------------------------------------------------ ⍝ ⍝ page 130 ------------------------------------------------------ ⍝ ,⍤2 N233 111 112 113 121 122 123 131 132 133 211 212 213 221 222 223 231 232 233 ⍉⍤2 N233 111 121 131 112 122 132 113 123 133 211 221 231 212 222 232 213 223 233 ⍳⍤0 N3 1 0 0 1 2 0 1 2 3 ⍝ page 131 ------------------------------------------------------ ⍝ ⍝ page 132 ------------------------------------------------------ ⍝ 0 1 2 ⌽⍤[0 1] 'ABC' ABC BCA CAB 2 2 2⊤⍤1 0 N5 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 N34+⍤2 N234 122 124 126 128 142 144 146 148 162 164 166 168 222 224 226 228 242 244 246 248 262 264 266 268 N3,⍤1 N34 1 2 3 11 12 13 14 1 2 3 21 22 23 24 1 2 3 31 32 33 34 N2,⍤0 2 N34 1 11 12 13 14 1 21 22 23 24 1 31 32 33 34 2 11 12 13 14 2 21 22 23 24 2 31 32 33 34 ⍝ page 133 ------------------------------------------------------ ⍝ ⍝ page 134 ------------------------------------------------------ ⍝ ⎕PP←10 ⎕RL←55555 ?1 1 1 1 1 1 ?4⍴1E18 447993230645996179 483605243669885666 613522750794753111 606358532512548358 ?4⍴1E18 313866525176087303 432693834893358432 798303746366508651 696547037829187610 ⍝ page 135 ------------------------------------------------------ ⍝ ⍝ page 136 ------------------------------------------------------ ⍝ ⎕IO←1 ⍋V←1.1 3.1 1.1 2.1 5.1 1 3 4 2 5 ⍋⍋V 1 4 2 3 5 V[⍋V] 1.1 1.1 2.1 3.1 5.1 B←4 3⍴3 1 4 2 7 9 3 2 0 3 1 4 B 3 1 4 2 7 9 3 2 0 3 1 4 ⍋B 2 1 4 3 ⎕IO←0 ⍋B 1 0 3 2 ⎕IO←1 ⍝ page 137 ------------------------------------------------------ ⍝ ⎕IO←1 ⍒V←1.1 3.1 1.1 2.1 5.1 5 2 4 1 3 ⍒⍒V 1 3 5 2 4 V[⍒V] 5.1 3.1 2.1 1.1 1.1 B←4 3⍴3 1 4 2 7 9 3 2 0 3 1 4 B 3 1 4 2 7 9 3 2 0 3 1 4 ⍒B 3 1 4 2 ⎕IO←0 ⍒B 2 0 3 1 ⎕IO←1 ⍝ page 138 ------------------------------------------------------ ⍝ ⌽N23 13 12 11 23 22 21 ⌽[2] N224 121 122 123 124 111 112 113 114 221 222 223 224 211 212 213 214 ⍝ page 139 ------------------------------------------------------ ⍝ ⍉3 3 ⍴⍴⍉3 0 ⍉N23 11 21 12 22 13 23 ⍉N234 111 211 121 221 131 231 112 212 122 222 132 232 113 213 123 223 133 233 114 214 124 224 134 234 ⍝ page 140 ------------------------------------------------------ ⍝ ⍝ page 141 ------------------------------------------------------ ⍝ ⍎'T←3' T 3 ⎕←⍎'T←3' 3 ⍎'' A←⍎'' VALUE ERROR A←⍎'' ^ → ⍝ page 142 ------------------------------------------------------ ⍝ ∪2 7 1 8 2 8 1 8 2 8 4 5 9 0 4 4 9 2 7 1 8 4 5 9 0 ∪'MISSISSIPPI' MISP ⍝ page 143 ------------------------------------------------------ ⍝ ↑'BEATA' B ⍴⍴↑'BEATA' 0 ↑N432 111 ↑4 5⍴(⊂'OSCAR'),(⊂'BEATA') OSCAR ⍝ page 144 ------------------------------------------------------ ⍝ ⍝ page 145 ------------------------------------------------------ ⍝ ⎕←M←2 3⍴'∆' ∆∆∆ ∆∆∆ ⎕←H←3 3⍴'○' ○○○ ○○○ ○○○ M,[1]H ∆∆∆ ∆∆∆ ○○○ ○○○ ○○○ M⍪H ∆∆∆ ∆∆∆ ○○○ ○○○ ○○○ ⎕←L←2 4⍴'⎕' ⎕⎕⎕⎕ ⎕⎕⎕⎕ M,L ∆∆∆⎕⎕⎕⎕ ∆∆∆⎕⎕⎕⎕ M,'+' ∆∆∆+ ∆∆∆+ '34',M 3∆∆∆ 4∆∆∆ M,'34' ∆∆∆3 ∆∆∆4 '345',[1]M 345 ∆∆∆ ∆∆∆ M,[1]'345' ∆∆∆ ∆∆∆ 345 M⍪'345' ∆∆∆ ∆∆∆ 345 1 2 3,[.5] 4 5 6 1 2 3 4 5 6 1 2 3,[1.5]4 5 6 1 4 2 5 3 6 1 2 3,[1.5]4 1 4 2 4 3 4 (2 0⍴5),'A' A A ⍴3,[.5]'' 2 0 ⍝ page 146 ------------------------------------------------------ ⍝ ⎕IO←0 ⎕←A←2 2⍴1.1 3.1 5.1 4.1 1.1 3.1 5.1 4.1 3.1 4.1 5.1⍳A 3 0 2 1 'ABC'⍳3 3 ⎕IO←1 '123ABC'⍳'3BD' 3 5 7 '123ABC'⍳3 7 ⍝ page 147 ------------------------------------------------------ ⍝ ⎕←B←2 2⍴1.1 3.1 5.1 4.1 1.1 3.1 5.1 4.1 3.1 5.1 7.1 ∈B 1 1 0 19∈'CLUB' 0 'BE' ∈'BOP' 1 0 'NADA'∈⍳0 0 0 0 0 (⌈/⍳0)∈⌊/⍳0 0 ⍝ page 148 ------------------------------------------------------ ⍝ ⎕RL←55555 12?300 287 247 221 34 258 66 194 67 104 137 240 27 ⍝ page 149 ------------------------------------------------------ ⍝ ⍝ page 150 ------------------------------------------------------ ⍝ 1 0 1/1 2 3 1 3 1 / 1 2 3 1 2 3 3 2 1/1 2 3 1 1 1 2 2 3 1 0 1/ 2 2 2 0 0 1 0 0 1 0 /[2] N2714 1311 1312 1313 1314 1611 1612 1613 1614 2311 2312 2313 2314 2611 2612 2613 2614 ⍴1/1 1 ⍴⍴(,1)/2 1 3 4/1 2 1 1 1 2 2 2 2 ⍝ page 151 ------------------------------------------------------ ⍝ ⍝ page 152 ------------------------------------------------------ ⍝ 1 0 1 \1 3 1 0 3 1 1 1 0 1 \'ABCD' ABC D 1 0 1\2 2 0 2 1 0 1\[2] 2 2 ⍴'ABCD' A B C D 1 0 1 1\1 2 3 1 0 2 3 1 0 1 1⍀3 3 0 3 3 0 1 \3 1 ⍴3.14 2E17 ¯47 0 3.14E0 0 2.00E17 0 ¯4.70E1 0 0\5 0 0 1 0 1 0\[2] N224 111 112 113 114 0 0 0 0 121 122 123 124 0 0 0 0 211 212 213 214 0 0 0 0 221 222 223 224 0 0 0 0 ⍝ page 153 ------------------------------------------------------ ⍝ ⍝ page 154 ------------------------------------------------------ ⍝ 3⌽1 2 3 4 5 4 5 1 2 3 ¯1⌽1 2 3 4 5 5 1 2 3 4 ¯7⌽'ABCDEF' FABCDE 1⊖N33 21 22 23 31 32 33 11 12 13 1⌽[1]N33 21 22 23 31 32 33 11 12 13 1 2 3⌽N34 12 13 14 11 23 24 21 22 34 31 32 33 N23⌽[2]N243 141 112 123 111 122 133 121 132 143 131 142 113 221 232 243 231 242 213 241 212 223 211 222 233 ⍝ page 155 ------------------------------------------------------ ⍝ 10⊥1 2 3 123 24 60 60 ⊥1 2 3 3723 ⎕←A←2 3⍴10 10 10 12 60 60 10 10 10 12 60 60 ⎕←B←3 2⍴1 4 2 5 3 6 1 4 2 5 3 6 A⊥B 123 456 3723 14706 ¯.001 10 10⊥1 2 3 123 60 ⊥1 2 3 3723 ''⊥3 0 'A'⊥⍳0 0 ⍝ page 156 ------------------------------------------------------ ⍝ ⍝ page 157 ------------------------------------------------------ ⍝ ⍝ page 158 ------------------------------------------------------ ⍝ 10 10 10⊤123 1 2 3 10 10 10⊤123 456 1 4 2 5 3 6 A←11 3⍴10 16 2 '0123456789ABCDEF'[⍉1+A⊤1000 1024] 00000001000 000000003E8 01111101000 00000001024 00000000400 10000000000 2 2 2 ⊤¯1 1 1 1 0 2 2 ⊤¯1 ¯1 1 1 0 1 ⊤3.75 ¯3.75 3 ¯4 0.75 0.25 ⍝ page 159 ------------------------------------------------------ ⍝ ⍝ page 160 ------------------------------------------------------ ⍝ 1 3 2⍉N234 111 121 131 112 122 132 113 123 133 114 124 134 211 221 231 212 222 232 213 223 233 214 224 234 1 1⍉N34 11 22 33 3 1 2⍉N234 111 211 112 212 113 213 114 214 121 221 122 222 123 223 124 224 131 231 132 232 133 233 134 234 ⍴⍴(⍳0)⍉5 0 ⍝ page 161 ------------------------------------------------------ ⍝ 2↑N5 1 2 ¯2↑N5 4 5 ¯2 6↑N44 31 32 33 34 0 0 41 42 43 44 0 0 ¯4 ¯4↑99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99 2↑⍳0 0 0 ⍝ page 162 ------------------------------------------------------ ⍝ 1↓N5 2 3 4 5 2 ¯1↓N44 31 32 33 41 42 43 ⍴1↓5 0 ⍴0↓5 1 ⍴1 2 3↓4 0 0 0 ''↓5 5 ⍴⍴''↓5 0 ⍝ page 163 ------------------------------------------------------ ⍝ ⍝ page 164 ------------------------------------------------------ ⍝ 10.2.14 Indexed Reference ⍝ ISO says 2, apllrm says RANK ERROR on 3[2] ⍝ ⍝ 1 2 3[2] ⍝ 2 1 2 3[2] RANK ERROR 1 2 3[2] ^^ → N222[2 1;;2] 212 222 112 122 ⍝ page 165 ------------------------------------------------------ ⍝ ⍝ page 166 ------------------------------------------------------ ⍝ X←1 2 3 ⎕←X[3 2]←4 5 4 5 X 1 5 4 ⎕←Y←N222 111 112 121 122 211 212 221 222 ⎕←Y[2 1;;1]←N12121 11111 11121 12111 12121 Y 12111 112 12121 122 11111 212 11121 222 ⍝ page 167 ------------------------------------------------------ ⍝ 1 2 3 4 5~3 4 2 1 5 1 1 2 3 3 4 5~3 4 2 1 1 5 'NAPOLEON'~'NEON' APL 0⊣1 0 1⊣0 1 N2 ⊣'FRANCE' 1 2 ⍝ page 168 ------------------------------------------------------ ⍝ 0⊢1 1 1⊢0 0 N2 ⊢'FRANCE' FRANCE ⍝ page 169 ------------------------------------------------------ ⍝ ⍝ page 170 ------------------------------------------------------ ⍝ ⍝ page 171 ------------------------------------------------------ ⍝ (2 2⍴'ABBA') ⍋ 'AB'[?5 2⍴2] ⍝ A AND B ARE EQUIVALENT 1 2 3 4 5 A←2 14⍴' abcdegiklmnrt ABCDEGIKLMNRT' W ← ⊃ 'Ab' 'AB' 'aba' 'ABA' 'abaca' 'abecedarian' 'Abelian' 'black' 'blackball' 'black belt' 'blacking' 'Black Mass' W W[(,A)⍋W;] W[(,⍉A)⍋W;] W[A⍋W;] Ab aba aba Ab AB abaca abaca AB aba abecedarian abecedarian aba ABA black Ab ABA abaca black belt Abelian abaca abecedarian blackball AB abecedarian Abelian blacking ABA Abelian black Ab black black blackball Abelian black belt black belt black belt AB blackball Black Mass blacking ABA blacking blackball Black Mass Black Mass Black Mass blacking ⍝ page 172 ------------------------------------------------------ ⍝ 3⊃'OSCAR' C (,3)⊃10 11 12 13 12 (⊂3 2)⊃N44 32 1 5⊃(⊂'OSCAR'),(⊂'BEATA') R ⍝ page 173 ------------------------------------------------------ ⍝ 'SOLAR'≡'SOLAR' 1 (2 3 ⍴⍳6) ≡⍳6 0 (1,0⍴' ') ≡ 1,0⍴0 1 ⍝ page 174 ------------------------------------------------------ ⍝ T ← (⊂'OSCAR'),(⊂'FRED') ⍴T 2 ⊃T OSCAR FRED ⍴⊃T 2 5 ⍝ page 175 ------------------------------------------------------ ⍝ ⊂'OSCAR' OSCAR ⍴⍴⊂'OSCAR' 0 2=⊂2 1 ⍝ page 176 ------------------------------------------------------ ⍝ ⍝ ZZZ0_Standard_20x.tc ⍝ Examples from the APL standard ⍝ ---------------------------------- ⎕CT←1E¯10 ⎕PP←6 ⍝ page 242 ------------------------------------------------------ ⍝ ⎕PP←10 '|',(⍕5 ¯6 7 8 9 10∘.÷⍳5),'|' | 5 2.5 1.666666667 1.25 1 | |¯6 ¯3 ¯2 ¯1.5 ¯1.2| | 7 3.5 2.333333333 1.75 1.4| | 8 4 2.666666667 2 1.6| | 9 4.5 3 2.25 1.8| |10 5 3.333333333 2.5 2 | ⍝ page 243 ------------------------------------------------------ ⍝ D←0.7 0.8 0.9, 7 8 9÷10 ⍕D 0.7 0.8 0.9 0.7 0.8 0.9 D-⍎⍕D 0 0 0 0 0 0 ⎕PP←999 ⍕D 0.7 0.8 0.9 0.7 0.8 0.9 D-⍎⍕D 0 0 0 0 0 0 ⍝ Note: we sometimes demote real cells to integer cells. Integer cells ⍝ are never displayed in scaled form, while the same value in a real ⍝ cell triggers display in scaled form. This causes a deviation of, for ⍝ instance, column 1 below ⎕PP←4 M←0.78901×(10⋆⍳6)∘.×1 1E¯10 1E¯6 0.01 0.1 ⍕M 7.89 7.89E¯10 0.00000789 0.0789 0.789 78.9 7.89E¯9 0.0000789 0.789 7.89 789 7.89E¯8 0.000789 7.89 78.9 7890 7.89E¯7 0.00789 78.9 789 78901 7.89E¯6 0.0789 789 7890 789010 7.89E¯5 0.789 7890 78901 ⍕5⍴M 7.89 7.89E¯10 0.00000789 0.0789 0.789 ⍕1 5⍴M 7.89 7.89E¯10 0.00000789 0.0789 0.789 ⍝ page 245 ------------------------------------------------------ ⍝ ⍝ Note: lrm differs from the standard. For example lrm says .5 while ⍝ the standard says 0.5. We follow lrm ⍝ D← ¯1 ¯0.1 0 0.1 1 ∘.× 5⍴0.5 ('|',( 9 ¯3 7 ¯1 6 3 5 1 3 0 ⍕ D),'|')⍪' 999999999777777766666655555333 ' | ¯5.00E¯1 ¯5E¯1 ¯.500 ¯.5 ¯1| | ¯5.00E¯2 ¯5E¯2 ¯.050 ¯.1 0| | 0.00E0 0E0 .000 .0 0| | 5.00E¯2 5E¯2 .050 .1 0| | 5.00E¯1 5E¯1 .500 .5 1| 999999999777777766666655555333 ⍴1 0 2 0 4 0 8 0⍕0 4⍴1 0 15 31 0 ⍕ 2⋆100 1267650600228229401300000000000 31 20 ⍕ .07 .07000000000000000888 4 1 ⍕ ¯.99 ¯.89 0 7.5 11.5 ¯1.0 ¯.9 .0 7.511.5 ⍝ page 254 ------------------------------------------------------ ⍝ )ERASE PROMPT ∇Z←PROMPT X PROMPT '1 CLEANSPACE DATE? ' 1 CLEANSPACE DATE? 1966-11-27 ⍝ ================================== )SIC ⎕PP←10 ⍝ problems encountered (remove if solved) ... ⍝ ]XTERM off )ERASE ∆N ∇Z←∆N B ⍝ ∆N 52 )ERASE QQ ∇Z←QQ 1,QQ 1 " QQ,1 " 1 ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝ X←1 2 3 X←X ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝ )CHECK OK - no stale functions print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x102a2b0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 0 print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x10490f0 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 2 print_stale_info(): alloc(Parser.cc:568) flags(MC-) value history disabled addr=0x103a210 ≡0 ⍴⊏⊐ flags: 0x0C00 MC- Parser.cc:568 3 OK - no stale values OK - no stale indices ]XTERM ON  )SI ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ! SUCCESS ! ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝ ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝  ============================================================================== 28 errors in 171(171) testcase files Exiting (test_mode 0) (B(B(B(B Goodbye.