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: Juergen Sauermann
Subject: Re: [Bug-apl] Gnu APL Quad-Quote read coming from souce file and not the terminal
Date: Mon, 15 Sep 2014 14:28:52 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.0

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]