Larry Wall wrote:
Dealing with antediluvian displays sounds like a good spot for that
ancient technology, the preprocessor,

: I also figured that this would be a fairly simple thing to do.

Well, it will be simple, once we have macros; in fact, textual macros
can be regarded simply as scoped preprocessors, with all the rights,
privileges, and responsibilities pertaining thereto.  I think macros
will provide enough language support for this sort of "hard things
should be possible" escape hatch.  And remember you can always override
the grammar if you have special reasons for doing so.  That's what
Perl 6 is all about.  It's not about foreseeing every possible twinge
of misgiving that anyone may come to feel in the next 100 years...

Sure, we're trying to create a gigantic sweet spot in Perl 6, but
Willy Wonka knows you can't have the whole world, and if you could,
you can't have it now.  :)


As a follow-up, this Perl 6 discussion has inspired me to apply some of these ideas to my Muldis D language (PTMD_STD dialect), so then there should be an earlier example of the concept I proposed.

The feature that I went and specced out today, and named "unspace" after its Perl 6 inspiration, basically is a token consisting of a pair of backslashes separated by whitespace. Currently this token can be placed in the middle of either a numeric or a stringy literal (including quoted formats of identifiers), and in the latter case *inside* the quotes.


  $bar := 7;55084\ \4222\ \7677  # an integer expressed in octal #

  $some_pi := 3.141592653589793238462643383279\

  $a_rat := 48111745028410270193\
    \8521105559 / 64462294895493038196\

  $a_string := 'hello this world\
    \ how are you today'

  $a_string := 'hello this world'
    ~ ' how are you today'

Those, except the last, are direct translations of the pseudo-Perl-6 I gave earlier in the thread.

Note that since Muldis D's use of backslashes differs in some ways from how Perl 6 uses them (backslashes are only otherwise used for spelling escaped characters), the above syntax doesn't conflict with anything there.

One detail unlike Perl 6's unspace is that I put a backslash at both ends of the stuff to ignore, so when used for the above purpose the code isn't end-weighted and a human can parse what's going on faster. Also, my version of unspace is simpler in that you don't put any comments in it.

Now if naming my concept "unspace" may confuse people, as it is partially like that of Perl 6 but partly not, I could name it something else, but that name seemed the best for now, because it is all about letting a programmer put some whitespace in their code which the parser would then treat as if it wasn't there at all.

-- Darren Duncan

Reply via email to