1. Two possible bugs in docs!

1.  This is an example program under the <seek> library routine in
library.doc

1.  =


              include file.e

              integer fn
              fn =3D open("mydata", "r")
              -- read and display first line of file 3 times:
              for i =3D 1 to 3 do
                  puts(1, gets(fn)) =

                  if seek(fn, 0) then
                      puts(1, "rewind failed!\n")
                  end if
              end for

Or is this so that the loop will be performed three times?  i is not
mentioned anywhere within the for loop.

2.  I've noticed this for a while.  This is the <atom> routine (but if th=
is
is a bug, sequence and integer have the same bug).

              line =3D gets(0)
              if atom(line) then
                  puts(SCREEN, "end of file\n")
              end if

As I understand it, atom returns a 0 or 1.  So

if atom(line) then
doesn't make sense.

--Alan
 =

new topic     » topic index » view message » categorize

2. Re: Two possible bugs in docs!

At 08:54 AM 6/19/98 -0400, Alan wrote something.

Despite the smoewhat off-topic heading for
this message, I believe you are looking
for clarification on 1) for loops and
2) using variable types as functions.


1) For loops


>include file.e
>
>integer fn
>fn = open("mydata", "r")         --<opens file
>
>-- read and display first line of file 3 times:
>
>for i = 1 to 3 do                --<declares i = 1
>    puts(1, gets(fn))            --<gets and displays a line
>    if seek(fn, 0) then          --<rewinds to offset 0
>        puts(1, "rewind failed!\n")
>    end if
>end for                          --<i=i+1 do it again until i=3


The variable i is declared when the for loop
is declared and exists only inside the loop.
This loop executes 3 times, so the code inside
it is repeated 3 times.

Try this:

for number=0 to 9 do
    puts(1,"\nnumber :")
    print(1,number)
end for


2) Using Types as Functions

A type such as atom and integer or a
user defined type can be called like
a normal function to check a value
against the defined limits of the type.

>              line = gets(0)
>              if atom(line) then
>                  puts(SCREEN, "end of file\n")
>              end if

the second line here means:

If the variable "line" is an atom then...

The gets() function will return a
sequence unless it reaches the end of
file, when it will return -1 (an atom),

So if variable "line" is an atom and not
a sequence then the end of the file has been
reached.

Graeme.





----------------------------------------------------

new topic     » goto parent     » topic index » view message » categorize

3. Re: Two possible bugs in docs!

>2.  I've noticed this for a while.  This is the <atom> routine (but if this
>is a bug, sequence and integer have the same bug).
>              line = gets(0)
>              if atom(line) then
>                  puts(SCREEN, "end of file\n")
>              end if
>As I understand it, atom returns a 0 or 1.  So

It's a wayt to test the data type of a variable. If atom(line) return 1 that
means that lines IS an atom, else atom is a sequence. The same aplies to
sequence... I'm not sure but I think you can also make use of your own
created types for this purpose too.

Regards,
    Daniel   Berstein
    daber at pair.com

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu