99 Bottles of Beer...

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

99 Bottles of Beer...

Philippe Lhoste-2
> > On a lighter side, I have found this amusing site:
> > http://www.ionet.net/~timtroyr/funhouse/beer.html
> > ...
> > Here is my work:
> > ...
> > It is probably not very Lua-like,
>
> It is quite Lua-like. (My only small remark would be to change
> the name of
> the function `PrintBottleNumber', as it does not actually print
> anything ;-)
>
> -- Roberto
> 
I used Print in a generic sense, ie. put a trace on a peripheral. But even in 
this sense, the name is wrong, as it just returns a value, and doesn't output 
it. Perhaps the previous version did a write...

> > Of course, I checked to see if Lua was showcased. Not! So I
> choose to make my
> > first Lua program with this exercice. Here is my work:
> >
> > function PrintBottleNumber(n)
> >  local bs
> >  if n == 0 then
> >     bs = "No more bottles"
> >  elseif n == 1 then
> >     bs = "One bottle"
> >  else
> >     bs = n .. " bottles"
> >  end
> >  return bs .. " of beer"
> > end
> >
> > for bn = 99, 1, -1 do
> >  write(PrintBottleNumber(bn), " on the wall, \n")
> >  write(PrintBottleNumber(bn), "\n")
> >  write("Take one down and pass it around,\n")
> >  write(PrintBottleNumber(bn-1), " on the wall, \n\n")
> > end
> > write("No more bottles of beer on the wall,\nNo more bottles of beer\n")
> > write("Go to the store, buy some more!\n")
>
> Bizarre... I just posted a Lua entry to that site a few weeks ago:
>
>    function bottle(n)
>       if     n==0 then return 'no more bottles'
>       elseif n==1 then return '1 bottle'
>       else             return n..' bottles'
>       end
>    end
>
>    n=99
>    while (n > 0)
>       print (bottle(n)..' of beer on the wall,')
>       print (bottle(n)..' of beer.\nTake one down,\npass it around,')
>       n = n - 1
>       print (bottle(n)..' of beer on the wall.\n')
>    end
>
> Pretty dang close (though yours is a bit better).
>
> Cheers,
> Eric
> 
OK, since you already submitted an entry, I will not send mine, we will wait 
for the update of the site (if it is still updated...).
I agree with you, mine is better ;^)) but your is Lua 3.2 compatible.

> >I am not sure for the absence of `^' (both in HTML and PDF), as
> it seems to
> >belong to the math. lib., but is listed in the binop below.
> >Same for `:', which is used in the notation t:f(x). Should it be
> in the list
> >above, or is it a special notation, not a token (whatever a token really
> >is...)? Since you list this notation as "syntaxic sugar",
> perhaps it is not a
> >real token (ie. doesn't generate a specific bytecode, or
> something like that).
>
> `^' does generate a specific bytecode.
> --lhf

OK, but I meant `:' probably doesn't generate a specific bytecode. Anyway, the 
syntax highlighting lexer of SciTE must take this symbol in account, and we 
display it as an operator, even if is not the case (but so is t.f()...). We 
don't make a real lexer, just something helping displaying code in a readable 
fashion.

> I've just downloaded Erik's binaries for win.  Initially,
> my intention is to be a naive user.  By that I mean to
> use Lua Standalone (luaSA?).  I would find a tutorial
> on luaSA very useful.  I'm willing to proof-read any
> attempt at such a manual.  I'll be able to provide the
> perspective of someone who knows C (intermediate level)
> but who is new to luaSA.
>
> Such a tutorial is vital to increasing the use of lua;
> after all, the intention is that there will be more
> end-users (i.e. those using luaSA) than those embedding and
> extending it.  Perhaps the wiki will encourage such a 'project'.
> I'm happy to help in any way possible.
> 
I agree with that. That's why I published my binaries, because even if Lua is 
primarily an extension scripting language, so mainly aimed at users able to 
compile a project (embedding Lua), it can also be used as standalone 
interpreter, so it should be accessible to users without a proper compiler.

As somebody which have just finished reading the Lua 4.0 manual, I also think 
a tutorial (or more!) would be useful.
Don't take me wrong, the reference manual is very clear, and agreable to read, 
with numerous small examples. But it is a reference manual, giving minute 
details quite early, sometime making forward reference (eg. using the 
libraries without introducing them), etc. Not necessarily a bad thing, but a 
bit confusing for the first time user.
I am playing with the idea of writing a Lua tutorial myself, but I fear lack 
of time will prevent it.
As a Lua beginner, I may not be the most qualified person to do it, but I use 
to think that the beginner state is useful for such things, as we are aware of 
the problems, pitfalls, and traps where we can trip. Now, Lua is quite an open 
community, so one can write such a tutorial, and submit it to public review, 
to improve it and add the view of more seasoned Lua programmers.
What I have in mind is to write a full program, like an HTML pre-processor, 
showing the various steps, introducing more and more advanced concepts, etc.
I would introduce the tags quite later, the base libraries progressively from 
the beginning, drop alternate syntax (like f"string") or give them later.
One point that's necessary is to introduce some smart uses of Lua constructs, 
like:
c = {}
function c:f(o)
etc.

Regards.

¯`·._.·´¯`·._.·´¯`·._.·´¯`·._.·´¯`·._.·´¯`·._.·´¯`·._.·´¯
Philippe Lhoste (Paris -- France)
Professional programmer and amateur artist
http://jove.prohosting.com/~philho/
http://philho.multimania.com/
_.·´¯`·._.·´¯`·._.·´¯`·._.·´¯`·._.·´¯`·._.·´¯`·._.·´¯`·._


Reply | Threaded
Open this post in threaded view
|

Re: 99 Bottles of Beer...

Roberto Ierusalimschy
> As somebody which have just finished reading the Lua 4.0 manual, I also think 
> a tutorial (or more!) would be useful.

I am writing a book about Lua. Although there is still lots of work to do, 
I think I can release a version of its first chapters soon (by the end of 
the month/year). 

-- Roberto

Reply | Threaded
Open this post in threaded view
|

Re: 99 Bottles of Beer...

Luiz Henrique de Figueiredo
In reply to this post by Philippe Lhoste-2
>> >real token (ie. doesn't generate a specific bytecode, or
>> something like that).
>>
>> `^' does generate a specific bytecode.
>> --lhf
>
>OK, but I meant `:' probably doesn't generate a specific bytecode.

Again, it does:

% luac -
a:x()
% luac -l

main <0:@(stdin)> (4 instructions/16 bytes at 0x8051f48)
0 params, 2 stacks, 0 locals, 2 strings, 0 numbers, 0 functions, 2 lines
     1  [1]     GETGLOBAL       0       ; a
     2  [1]     PUSHSELF        1       ; x
     3  [1]     CALL            0 0
     4  [1]     END        

>As somebody which have just finished reading the Lua 4.0 manual, I also think 
>a tutorial (or more!) would be useful.

Roberto is working on a book about Lua and plans to release draft versions
for comment. This should happen "soon".

>I am playing with the idea of writing a Lua tutorial myself, but I fear lack 
>of time will prevent it.

Same here...

>As a Lua beginner, I may not be the most qualified person to do it, but I use 
>to think that the beginner state is useful for such things, as we are aware of 
>the problems, pitfalls, and traps where we can trip. Now, Lua is quite an open 
>community, so one can write such a tutorial, and submit it to public review, 
>to improve it and add the view of more seasoned Lua programmers.
>What I have in mind is to write a full program, like an HTML pre-processor, 
>showing the various steps, introducing more and more advanced concepts, etc.
>I would introduce the tags quite later, the base libraries progressively from 
>the beginning, drop alternate syntax (like f"string") or give them later.

That sounds like a great project. Literate programming in Lua is a good way
to teach the basics of the language.
--lhf

Reply | Threaded
Open this post in threaded view
|

Re: 99 Bottles of Beer...

Jeroen Janssen-3
In reply to this post by Roberto Ierusalimschy
Roberto Ierusalimschy wrote:
> 
> > As somebody which have just finished reading the Lua 4.0 manual, I also think
> > a tutorial (or more!) would be useful.
> 
> I am writing a book about Lua.

Any information yet about who/when it will be published?

---
Jeroen

Reply | Threaded
Open this post in threaded view
|

Re: 99 Bottles of Beer...

Roberto Ierusalimschy
> Any information yet about who/when it will be published?

No. I will release it on the net (at least for this initial/partial version...)

-- Roberto