Doesn't unspace work for this?

On Wednesday, March 3, 2010, Darren Duncan <dar...@darrenduncan.net> wrote:
> pugs-comm...@feather.perl6.nl wrote:
>
> Modified:
>    docs/Perl6/Spec/S02-bits.pod
> Log:
> [S02] remove 1/2 and +2-3i literal forms, now rely on angle dwimmery for 
> literals,
> or constant folding otherwise.
>
> <snip>
>
> I find this an interesting change, and I can see how it would simplify some 
> things, even though I would miss the old behavior.
>
> But this reminds me of what I see as a tangential issue, which I want to 
> raise.
>
> How would Perl 6 support someone wanting to write a numeric literal that is 
> so long that they would want to split it over multiple source code lines, 
> such as a very long integer that takes a few hundred or thousand characters 
> to write, or an X/Y rational composed of 2 such integers, but they want to 
> keep their source code under the 80 chars per line mark.
>
> I'm not currently aware that Perl 6 provides some kind of "continuation 
> marker" that one could put between pieces of such a literal, so that they 
> could split those pieces otherwise with whitespace but then the parser would 
> treat the code as if said whitespace wasn't there, but I think Perl 6 should 
> have this.  It would need to work both outside any quoting constructs as well 
> as inside any angle dwimmery.
>
> On one hand I would think the mnemonics of "~", which are stitching things 
> together, would work great for a continuation marker, but that "~" seems to 
> already be established in Perl 6 as indicating a string data context, such 
> that it is used for casting things into Str or catenating 2 strings.  
> However, I will use "~" below for the sake of illustration.
>
>   my $some_pi = 3.141592653589793238462643383279
>     ~ 5028841971693993751058209749445923078164
>     ~ 0628620899862803482534211706798214808651
>     ~ 3282306647093844609550582231725359408128;
>   my $a_rat = <48111745028410270193
>     ~ 8521105559/64462294895493038196
>     ~ 442881097566593344612847564823>;
>
> As a slight extension to this, one should be able to use that same 
> continuation character between 2 consecutive string literals so that they are 
> parsed as if they were one string literal, so that one could also split those 
> over source code lines, without the vaguarities of source code line endings 
> affecting the value of the string like a here-doc or literal line breaks 
> would.  I grant that this could be redundant with regular constant folding of 
> the already defined "~" operator, but using the continuation marker instead 
> for this could spare concern about precedence issues same as <1/2> does 
> versus 1/2 after today's changes.
>
>   my $a_string = 'hello this world'
>     ~ ' how are you today';
>
> Now I think in the wider world some precedent exists for using the 
> logical-not character ¬ as a continuation marker, but that isn't an ASCII 
> symbol and we would want something ASCII for the continuation marker.  Also I 
> think using the backslash for such a marker would be a bad idea.
>
> While this isn't an operator per se, if it had to be put in the precedence 
> table, I would think it would have the highest possible precedence; it would 
> be eliminated during one of the earliest parsing phases, during tokenization 
> I believe, and then all the other parsing rules would come into effect 
> following that elimination, except for the big one that any literal 
> continuation chars inside a quoted string are taken as normal characters as 
> usual.
>
> So can we please have this continuation marker thing, and what do you think 
> it should look like?
>
> Thank you in advance.
>
> -- Darren Duncan
>
>

-- 
Mark J. Reed <markjr...@gmail.com>

Reply via email to