bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-apl] Gnu APL Quad-Quote read coming from souce file and not the


From: Frederick H. Pitts
Subject: Re: [Bug-apl] Gnu APL Quad-Quote read coming from souce file and not the terminal
Date: Mon, 15 Sep 2014 11:02:16 -0500

Hello Juergen,

        1) Up until at svn 443, ⍞ references were from the terminal for shell
scripts and files processed with 'apl -f'.  Sure of that because I just
checked out that and earlier svn versions and tested.  ⍞ references
being coupled to script APL source files and not the terminal is a
relatively recent change in how Gnu APL works.

        2) The "APL2 Programming: Language Reference" and "ISO/IEC
13751:2000(E)" give no indication that ⍞ is ever connected to anything
other than a terminal.

        3) If ⍞ references in shell script and apl -f processed files have to
be satisfied by reading from the apl source file, what is the point of
directing assignments to ⍞ to the terminal?  The user is not going to be
able to respond to the prompts, at least, not from the terminal.

Regards,

Fred

On Mon, 2014-09-15 at 14:28 +0200, Juergen Sauermann wrote:
> Hi Fred,
> 
> first of all, please note that CORE_COUNT_WANTED= has currently no
> effect since I am working on that.
> I fixed Parallel.cc so that it compiles, SVN 473.
> 
> Regarding ⍞ your expectation seems to be that ⍞ always reads from the
> terminal
> even if the input comes from a file?
> 
> This is not so in GNU APL; ⍞ reads from stdin of the process and if
> that is a file then the input
> is read from the file. Your example below gives (anfd should give):
> 
> address@hidden:~/apl/apl-1.4/src$ ./hello.apl 
> What is your name?  Hello 
> 
> 
> This is easier to undestand if we change the line before )OFF to
> something non-empty:
> 
> #!./apl --script --
> ⍝ ------------------------------
> ∇hello; X
>  ⍞ ← 'What is your name?  '
>  X ← ⍞
>  ⎕ ← 'Hello ', ( X ≠ ' ' ) / X
>
> 
> hello
> !!! this line is read by ⍞ in function hello !!!
> )OFF
> ⍝ ------------------------------
> 
> This gives:
> 
> address@hidden:~/apl/apl-1.4/src$ ./hello.apl 
> What is your name?  Hello !!!thislineisreadby⍞infunctionhello!!!
> 
> So far everything looks OK, at least on my machine. Of cause you could
> argue
> if reading from stdin was a good choice in the first place. I believe
> it was because:
> 
> - you cannot assume to always have a usable terminal
> - testcase files (for testing ⍞ in particular)
> - CGI scripts written in APL (which communicates with APL via stdin
> and stdout)
> 
> /// Jürgen
> 
> 
> On 09/15/2014 12:17 AM, Frederick H. Pitts wrote:
> 
> > Hello Juergen,
> > 
> >     I cloned svn 472, configured and tried to build.  I find that if
> > I configure with CORE_COUNT_WANTED=argv, the following compiler error
> > results:
> > 
> > Parallel.cc: In static member function 'static void
> > Parallel::init_CPUs(bool)':
> > Parallel.cc:333:7: 'uprefs' was not declared in this scope
> >         uprefs.requested_cc;     // parallel, as per --cc option
> > 
> > A similar but differ error occurs if I use CORE_COUNT_WANTED=syl.
> > 
> >     If I configure without specifying CORE_COUNT_WANTED, the build
> > completes OK.  However I'm still having the problem of the ⍞ reference
> > not reading from the terminal.
> > 
> >     Something as simple as:
> > 
> > #!/usr/local/bin/apl --script --
> > ⍝ ------------------------------
> > ∇hello; X
> >  ⍞ ← 'What is your name?  '
> >  X ← ⍞
> >  ⎕ ← 'Hello ', ( X ≠ ' ' ) / X
> > ∇
> > 
> > hello
> > 
> > )OFF
> > ⍝ ------------------------------
> > 
> > demonstrates the issue.  If the above is executed as a shell script with
> > 
> >     ./hello.apl
> > 
> > or the apl invocation
> > 
> >     apl -f hello.apl
> > 
> > the ⍞ reference input is not coming from the terminal.
> > 
> > Regards,
> > 
> > Fred
> > 
> > On Sun, 2014-09-14 at 16:27 +0200, Juergen Sauermann wrote:
> > > Hi Fred,
> > > 
> > > Thanks. I see some debug outout at the end of your file:
> > > 
> > >       hello
> > > What is your name?  
> > > )SI not cleared at the end of ./hello.apl:
> > > hello[2]  X ← ⍞
> > >           ^
> > > ⋆  hello
> > >    ^
> > > 
> > > That debug output should only occur if a testcase file is executed and
> > > not for normal script file like your hello.apl. This should be fixed
> > > in SVN 472.
> > > 
> > > ------
> > > 
> > > Apart from that I can't really see what is wrong. The intended
> > > behavior (and the actual behavior on
> > > my box) is that GNU APL reads from input files as long as there are
> > > unprocessed files and switch
> > > to stdin after the last input file was processed.
> > > 
> > > In your case, hello.apl defines function hello and calls it on the
> > > last line of hello.apl.
> > > After having read the last line of hello.apl, the next input is read
> > > from stdin:
> > > 
> > >       hello                       ← from script
> > > What is your name?  Jürgen        ← from stdin
> > > Hello Jürgen
> > > 
> > > If your box behaves differently then I need more details.
> > > 
> > > /// Jürgen
> > > 
> > > 
> > > 
> > > On 09/13/2014 03:31 AM, Frederick H. Pitts wrote:
> > > 
> > > > Gentle people,
> > > > 
> > > >         As of SVN 470, ⍞ references are taking their input from the APL 
> > > > source
> > > > file instead of the terminal if there is any source file left to be
> > > > read.  It appears that the interpreter is starting to execute code
> > > > before the interpreter has completely consumed the source file and is
> > > > confusing the file input stream with the terminal stream.
> > > > 
> > > >         A file that demonstrates the error is attached.
> > > > 
> > > > Regards,
> > > > 
> > > > Fred
> > > > 
> > 
> > 
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]