Parrot 5.7.0 Azure-rumped Parrot Released!

2013-08-21 Thread Bruce Gray
Rock Concert Movement #237 - Taking the audience on a Jungian journey
into the collective unconscious by using the shadow as a metaphor for
the primal self that gets repressed by the modern persona and also by
using an underground setting and labyrinth office design to represent
both the depths of the psyche and the dungeon-like isolation of our
increasingly mechanistic society which prevents people from finding
satisfying work or meaningful connections with others.
...
It's Time to Start!
-- Rock Concert Instruction Manual Narrator, Blue Man Group

On behalf of the Parrot team, I'm proud to announce Parrot 5.7.0, also known
as Azure-rumped Parrot.  Parrot (http://parrot.org/) is a virtual machine 
aimed
at running all dynamic languages.

Parrot 5.7.0 is available on Parrot's FTP site
(ftp://ftp.parrot.org/pub/parrot/releases/devel/5.7.0/), or by following the
download instructions at http://parrot.org/download.  For those who would like
to develop on Parrot, or help develop Parrot itself, we recommend using Git to
retrieve the source code to get the latest and best Parrot code.

Parrot 5.7.0 News:
   - Build
   + Fixed GH#976 - Cannot load PCRE library during install on gentoo x64.
   - Community
   + All three of our GSoC students passed their midterms, and are
 on track to complete their Parrot and Perl 6 projects on time.
 Congratulations to Saurabh Kumar, Paweł Murias, and Denis Boyun!


The SHA256 message digests for the downloadable tarballs are:
0d07c210a8b90d368cde600351173b8c90a28d376379836ba36edf83acf7a21f 
parrot-5.7.0.tar.gz
73aacaecd81b7ef43689e9d23f641a690aabde524a2e60660d872dad82f7a337 
parrot-5.7.0.tar.bz2

Many thanks to all our contributors for making this possible, and our sponsors
for supporting this project.  Our next scheduled release is 17 Sep 2013.

Enjoy!



Re: Commensurability as Key

2013-08-21 Thread Moritz Lenz
Hello,

some clarifications below

On 08/21/2013 05:19 AM, Doug McNutt wrote:
 * a function is a subroutine returning a scalar  ( see below)

fwiw we don't make that distinction in the specification; we just talk
about subroutines. We can return nothing, a scalar or a non-scalar.

, a procedure is a subroutine with no
return value, side-effects only. A subroutine returning many values- a
parcel of containers, perhaps, or an iterator, etc- is a
many-to-many relation. I understand relational algebra from
decades of SQL work, and have seen ORM's replicate relations in object
systems with some success. What's missing for creating a relational
wonderland in perl6?
 
 
 I confess.  I'm here because I hoped perl 6 would do vector operations after 
 reading an early small book.

And it does, if you teach it to.
Perl 6 has some facilities to spread out operations over lists of
elements, though not all operations common in linear algebra (vector
cross product, multiplying a vector with a matrix etc.) are built-in.
Just like they aren't built into Fortran, for that matter.

 I would really like to see perl support a function called a cross product 
 that would return a vector, the product of amplitudes and the sine of the 
 angle between them, as a vector using the   notation.  That's not a scalar! 
  But i surely would be commensurate with the input arguments.

Please don't fall prey to some mismatch in terminology. In Perl 6, a
scalar is just some form of container, which happens to be used in
variables beginning with a dollar ($). Nothing stops you from putting a
vector, however you define or declare one, into a scalar (variable). Nor
is there any restriction that makes it impossible to return more than
one value from a subroutine -- it just happens to be the case that
yary's definition of function restricts functions to one value. But
that's really a matter of terminology, not technology.

Cheers,
Moritz


[perl6/specs] 6d7794: [S12] fix wrong assumptions about type object stri...

2013-08-21 Thread GitHub
  Branch: refs/heads/master
  Home:   https://github.com/perl6/specs
  Commit: 6d7794498b906cae4bea35aa10ba81831004d48d
  
https://github.com/perl6/specs/commit/6d7794498b906cae4bea35aa10ba81831004d48d
  Author: Moritz Lenz mor...@faui2k3.org
  Date:   2013-08-19 (Mon, 19 Aug 2013)

  Changed paths:
M S12-objects.pod

  Log Message:
  ---
  [S12] fix wrong assumptions about type object stringification





[perl6/specs] fac7a1: can't mix 'my Dog $x' with 'my $x of Dog'

2013-08-21 Thread GitHub
  Branch: refs/heads/master
  Home:   https://github.com/perl6/specs
  Commit: fac7a1ae9b6407749ef236d4f9510ef5d6ab8163
  
https://github.com/perl6/specs/commit/fac7a1ae9b6407749ef236d4f9510ef5d6ab8163
  Author: Larry Wall la...@wall.org
  Date:   2013-08-20 (Tue, 20 Aug 2013)

  Changed paths:
M S02-bits.pod

  Log Message:
  ---
  can't mix 'my Dog $x' with 'my $x of Dog'





Re: Commensurability as Key

2013-08-21 Thread Brandon Allbery
On Tue, Aug 20, 2013 at 11:19 PM, Doug McNutt dougl...@macnauchtan.comwrote:

 I confess.  I'm here because I hoped perl 6 would do vector operations
 after reading an early small book.


I don't think anyone has said that it won't/can't. Perl 6 indeed returns a
scalar... but that scalar may be a container of some kind, including a
vector if such a container type has been defined. (Think perl5's refs, only
managed automatically instead of making the programmer manually convert
between refs and referenced.)

Even FORTRAN doesn't actually pass or return arbitrarily sized arrays. It
passes pointers around instead; you just can't see them or touch them
directly --- but there are ways to *abuse* them, such as the infamous hack
that lets you change the value of a literal number because of the
representation that has to be used for them just in case they're passed to
or returned from a function. Perl6 normally hides this kind of as well, but
if for some reason you need to, you can get at the underlying machinery, so
the existence of that machinery is admitted instead of being hidden and
occasionally coughing up bizarre dust bunnies.)

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net


Change Propagation

2013-08-21 Thread James Bowery
Backing off from the esoterica, is Per6 lazy machinery going to include a
feature like the one I suggested for MooseX here:

http://www.perlmonks.org/?node_id=1050219


Re: Commensurability as Key

2013-08-21 Thread James Bowery
The terms function and relation as used in programming languages have
meanings carved out of the pure concepts by the, sometimes, judicious
application of Ockham's Chainsaw Massacre in order to get things done.

I am speaking of the pure concepts.

Procedures are sequences of statements.  Statements are state transitions.
 The before state is the input to the statement viewed as a pure function.
 The after state is the output of the statement viewed as a pure function.


On Tue, Aug 20, 2013 at 10:41 AM, yary not@gmail.com wrote:

 I'll bite... this concept of commensurablity is not one I grasp from
 your email.

 functions are (sugarably) degenerate (many to 1) relations and
 procedures are (sugarably) degenerate (state-transition) functions.
 Perl  many other languages don't have a strong distinction between
 functions  procudures (as I'm sure you know), a function is a
 subroutine returning a scalar, a procedure is a subroutine with no
 return value, side-effects only. A subroutine returning many values- a
 parcel of containers, perhaps, or an iterator, etc- is a
 many-to-many relation. I understand relational algebra from
 decades of SQL work, and have seen ORM's replicate relations in object
 systems with some success. What's missing for creating a relational
 wonderland in perl6?

 (Also: a ton of apples should _not_, in general, be added to 3000 kg
 of oranges- unless I operate a refrigerated shipping line, in which
 case all I care is that they are subclasses of perishables... Adding
 an acre of orchard to a season in the sun might be less
 commensurable, though they could both be subclasses of gifts to a
 lucky winner... hmmm... what was the point again?)



Re: Commensurability as Key

2013-08-21 Thread Doug McNutt
At 20:27 -0700 8/20/13, Jonathan Lang wrote: Off list accidentally I think.
Could you try to put commensurability into layman's terms?  Preferably with a 
focus on some of its less obvious advantages.  

On Aug 20, 2013, at 8:19 PM, Doug McNutt dougl...@macnauchtan.com wrote:

 At 11:41 -0400 8/20/13, yary wrote:
 I'll bite... this concept of commensurablity is not one I grasp from
 your email.
 
 functions are (sugarably) degenerate (many to 1) relations and
 procedures are (sugarably) degenerate (state-transition) functions.
 Perl  many other languages don't have a strong distinction between
 functions  procudures (as I'm sure you know), 
 
 * a function is a subroutine returning a scalar  ( see below)
 
 , a procedure is a subroutine with no
 return value, side-effects only. A subroutine returning many values- a
 parcel of containers, perhaps, or an iterator, etc- is a
 many-to-many relation. I understand relational algebra from
 decades of SQL work, and have seen ORM's replicate relations in object
 systems with some success. What's missing for creating a relational
 wonderland in perl6?
 
 
 I confess.  I'm here because I hoped perl 6 would do vector operations after 
 reading an early small book.
 
 I would really like to see perl support a function called a cross product 
 that would return a vector, the product of amplitudes and the sine of the 
 angle between them, as a vector using the   notation.  That's not a 
 scalar!  But i surely would be commensurate with the input arguments.
 
 It's still FORTRAN forever for physics, electrical engineering, and global 
 warming.

Commensurable has a meaning in integer arithmetic that pretty much means that 
two integers have a common factor.  If they appear as numerator and denominator 
of a fraction that fraction is reducible by dividing both by the factor.

In the physical sciences commensurable refers to numerical quantities that can 
be legitimately compared as if they were results of an experiment. In most 
cases the numbers have units of measure associated with them.  2.54 centimeters 
is rightly compared as equal to 1 inch even though 2.54 is  not an integer and 
it's certainly not equal to 1.00.

For a 3-D vector to be equal, less, or greater than another 3-D vector only if 
the two vectors refer to the same variable which might be velocity, position, 
or acceleration.  The units  must match if comparison is needed. Acceleration 
might be ft/sec/sec for one vector and meters/sec/sec for another and they 
could be reasonably compared but finding a programming language that handles 
that automatically is a PITA. I sort of remember, on this list, some work with 
allowing numbers to have units. I think it got lost.

O'Reilly Perl6 Essentials (2003) on page 37 introduced vector operators in 
the form + which represents vector addition with an example @sums = @first 
+  @second.  I took that to mean that @first was a three element list of 
the x, y, and z components of a real vector. I assumed (foolishly) that meant 
there would be a X and a . which would return cross and dot products. I 
even thought about the 4-vectors of relativity where the fourth component is 
time multiplied by the velocity of light..

But it was not to be without getting deeply into the process of compiling. My 
home built subroutines do it in perl 5 and long ago they worked with FORTRAN 
without any numbers after the name.

The term vector has also found meaning in programming. C calls that a pointer 
and other languages call them references. All point to something else.

I think James Bowery's comments are intended to address a real need for 
programming languages to work with units of measurement. It might even prevent 
aircraft accidents which have really happened because fuel was delivered in 
Canadian gallons, or kilograms, when the pilots request was for American pounds 
in his owners manual. Commensurable purchase orders would be nice.
-- 

   Fe++
//  \
Fe++  Fe++
  |   ||
Fe++  Fe++
   \\/
   Fe++