I have made available version 0.2.1 of the "amber for
parrot" scripting language. This is a language being designed
specifically for parrot. The syntax and semantics of amber are largely
inspired by Eiffel although there's a good deal of ruby in there too
(especially the anonymous agents which work like ruby blocks).

This is nothing more than a "proof-of-concept" release, a "piece of hack
pie" to confirm that one can implement some of the ideas of Eiffel in a
scripting language that targets the parrot virtual machine. Many things
don't work, and those that do are poorly documented. Nevertheless, the
example programs and the hand-crafted test cases do all work.

The current release is for Linux, and was built with SmartEiffel 2.1.
http://smarteiffel.loria.fr/
You will need to install version 0.2.1 of the parrot virtual machine.

For those who don't want to install an Eiffel compiler, it should be
possible to build amber from the C-code generated by SmartEiffel. I'll
make another announcement when I have prepared a C-based distribution.

I've set up a website at http://xamber.org/ - just click on the
"Download" link. You can also browse the development sources online, and
if you have the darcs version control client you can keep a synchronised
copy on your own machine.

Thanks to anyone who takes the time to try this. Let me know if you have
any problems - either by posting to this group or by emailing me
directly.

To whet your appetite, here's a sample amber script:

   -- Prints the song "99 Bottles of Beer"
   -- See http://99-bottles-of-beer.net/
   
   99.down_to(1, agent(n) do
      print_line(bottles(n) & " on the wall, " & bottles(n) & ".")
      if n = 0 then
         print_line("Go to the store and buy some more ... 99 bottles of beer.")
      else
         print("Take one down and pass it around, ")
         print_line(bottles(n - 1) & " on the wall.\n")
      end
   end)

   private
      bottles(n)
         do
            if n = 0 then
               result := "No more bottles of beer"
            elseif n = 1 then
               result := "1 bottle of beer"
            else
               result := n & " bottles of beer"
            end
         end
   end
    
Regards,
-- 
Roger Browne <[EMAIL PROTECTED]>

Reply via email to