Is there anything inherently wrong with having more quad-commands? What is the reason we have to do ⎕FIO[49] instead of simply ⎕ReadLines or something like that?
It's like we're going out of way to make code unreadable. I know APL is all about terseness, but I think this is going too far. Am I alone in this? Regards, Elias On 25 January 2017 at 12:36, Christian Robert <christian.rob...@polymtl.ca> wrote: > In fact we should make all/most ⎕FIO[] in into parantheses > > things like this was working fine before ⎕FIO[49] > > fd← "r" ⎕fio[3] ".bashrc" > fd > 5 > ⊣ ⎕fio[4] fd > DOMAIN ERROR > ⊣⎕FIO[4]fd > ^ ^ > > well, I know now that I have to make it: > > ⊣ (⎕fio[4] fd) > > but it's a change into the previous behavior of ⎕FIO[]. It was not trying > to grab the left operator of ⎕fio[4] > > > Xtian. > > > On 2017-01-20 10:57, Juergen Sauermann wrote: > >> Hi Xtian, >> >> yes, one thing that I overlooked was that you should put *⎕FIO**[**49] >> *into parantheses because >> otherwise it will grab the function left of it and apply it to each line >> read from the file and not to >> the final result: >> >> * ⎕FIO[49]'x' ** >> ** Line 1 Line 2 Line 3 ** >> * >> * ⊃⎕FIO[49]'x' ⍝ apply ⊃ to each line**of the file (has no >> effect) >> ** Line 1 Line 2 Line 3 ** >> ** >> ** ⊃(⎕FIO[49]'x') ⍝ apply ⊃ to the final result of ⎕FIO[49]** >> **Line 1** >> **Line 2** >> **Line 3** >> * >> Syntactically *⎕FIO[49]* behaves like a monadic operator with an optional >> left function argument. >> The parentheses prevent it from using the left argument. In my previous >> example, >> >> *Z←CONVERT¨Z←⎕FIO**[49] 'filename' >> * >> the *←* had the same effect as the parentheses.* >> * >> >> /// Jürgen >> >> >> On 01/19/2017 11:10 PM, Christian Robert wrote: >> >>> Juergen, >>> >>> Just a note, your example as of yesterday to disclose the result of >>> ⎕FIO[49] to obtain a matrix no longer work as is. >>> >>> >>> I had to add a tack (⊢) between ⎕FIO[49] and the "⊃" as in LoadSudoku2 >>> below. >>> >>> >>> LoadSudoku2←{{⊂9 9 ⍴ ⍵}⍤1 ⊃ ⊢⎕FIO[49] ⍵} >>> LoadSudoku3←{{⊂9 9 ⍴ ⍵} ⎕FIO[49] ⍵} >>> >>> without the tack it would run disclose on each line which is a noop. >>> >>> >>> time "a←LoadSudoku2 'Sudoku_dump.txt'" >>> 3.370101159 >>> time "a←LoadSudoku3 'Sudoku_dump.txt'" >>> 2.977278584 >>> >>> time "a←LoadSudoku2 'Sudoku_dump.txt'" >>> 3.142475014 >>> time "a←LoadSudoku3 'Sudoku_dump.txt'" >>> 2.966579181 >>> >>> the LoadSudoku3 run faster than the LoadSudoku2 >>> >>> >>> ⍴a >>> 219025 >>> ⊃a[1 2 3] >>> 000000000 000000000 000000000 >>> 000000008 000000009 000000009 >>> 560230400 400008120 580030100 >>> 100803000 001030000 001640008 >>> 090060000 085009760 000300005 >>> 000025010 090040200 602005041 >>> 300500706 800070006 003700000 >>> 076002000 000021050 920000076 >>> 005090021 006000010 040809000 >>> Display ¨ ⊃a[1 2 3] >>> ╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗ >>> ╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗ >>> ╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗ >>> ║ │ │ ║ │ │ ║ │ │ ║ ║ │ │ ║ │ │ ║ │ >>> │ ║ ║ │ │ ║ │ │ ║ │ │ ║ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ║ │ │ ║ │ │ ║ │ │ 8 ║ ║ │ │ ║ │ │ ║ │ >>> │ 9 ║ ║ │ │ ║ │ │ ║ │ │ 9 ║ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ║ 5 │ 6 │ ║ 2 │ 3 │ ║ 4 │ │ ║ ║ 4 │ │ ║ │ │ 8 ║ 1 │ 2 >>> │ ║ ║ 5 │ 8 │ ║ │ 3 │ ║ 1 │ │ ║ >>> ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ >>> ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ >>> ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ >>> ║ 1 │ │ ║ 8 │ │ 3 ║ │ │ ║ ║ │ │ 1 ║ │ 3 │ ║ │ >>> │ ║ ║ │ │ 1 ║ 6 │ 4 │ ║ │ │ 8 ║ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ║ │ 9 │ ║ │ 6 │ ║ │ │ ║ ║ │ 8 │ 5 ║ │ │ 9 ║ 7 │ 6 >>> │ ║ ║ │ │ ║ 3 │ │ ║ │ │ 5 ║ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ║ │ │ ║ │ 2 │ 5 ║ │ 1 │ ║ ║ │ 9 │ ║ │ 4 │ ║ 2 │ >>> │ ║ ║ 6 │ │ 2 ║ │ │ 5 ║ │ 4 │ 1 ║ >>> ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ >>> ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ >>> ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ >>> ║ 3 │ │ ║ 5 │ │ ║ 7 │ │ 6 ║ ║ 8 │ │ ║ │ 7 │ ║ │ >>> │ 6 ║ ║ │ │ 3 ║ 7 │ │ ║ │ │ ║ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ║ │ 7 │ 6 ║ │ │ 2 ║ │ │ ║ ║ │ │ ║ │ 2 │ 1 ║ │ 5 >>> │ ║ ║ 9 │ 2 │ ║ │ │ ║ │ 7 │ 6 ║ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ >>> ║ │ │ 5 ║ │ 9 │ ║ │ 2 │ 1 ║ ║ │ │ 6 ║ │ │ ║ │ 1 >>> │ ║ ║ │ 4 │ ║ 8 │ │ 9 ║ │ │ ║ >>> ╚═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╝ >>> ╚═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╝ >>> ╚═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╝ >>> >>> >>> I love ⎕FIO[49] ;-) >>> >>> Xtian. >>> >>> >>> On 2017-01-19 09:17, Juergen Sauermann wrote: >>> >>>> Hi, >>>> >>>> I have added *⎕FIO[49]* to GNU APL in *SVN 858*. >>>> >>>> *Z←⎕FIO[49] 'filename'* reads the file named *filename* line by line >>>> and stores every line >>>> of the file in one enclosed item of result vector*Z* , for example >>>> (file *x* has 3 lines): >>>> >>>> * **⍪**⊃ ⎕FIO[49] 'x' >>>> Line 1 >>>> Line 2 >>>> Line 3 >>>> * >>>> The end of line character (LF = '\n') character possibly a trailing CR >>>> = '\r' character is being removed in the process. >>>> >>>> *⎕FIO[49]* accepts an optional left function argument *F* which is a >>>> monadic conversion function. >>>> The conversion functions F is called with every line read and the >>>> result of the function >>>> is then stored in Z. for example: >>>> >>>> * ⍪⊃ {'x: ', ⍵} ⎕FIO[49] 'x'** >>>> **x: Line 1** >>>> **x: Line 2** >>>> **x: Line 3* >>>> >>>> /// Jürgen >>>> >>>> >>> >>