in reply to Re: Thoughts on Exegesis 7
in thread Thoughts on Exegesis 7

Eeep! print using is an operator with a space in it in BASIC. That's the sort of thing that makes a syntax ugly, ugly, ugly. Alternatively, you make using a synonym of format, in which case you're using up the rather nice name "using" for something very specific, which you can already write another way.

(Using would make a rather nice statement-modfier form of given, but I can't help thinking that there's something larger it could be used for.


Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).

Replies are listed 'Best First'.
Re: Re: Re: Thoughts on Exegesis 7
by dragonchild (Archbishop) on Feb 29, 2004 at 21:17 UTC
    Would it be something similar to with in VB or Javascript? While we have that idea in for-aliasing, it certainly would be nice to have that concept a little more elaborated. I could see the benefit as such:
    # $object1 has the interface foo # $object2 has the interface bar and baz with ($object1) { with ($object2) { bar; foo(baz); } }
    and have it be interpreted as:
    $object2->bar; $object1->foo($object2->baz);

    Obviously, this is a contrived example, but it could be kinda neat ...

    ------
    We are the carpenters and bricklayers of the Information Age.

    Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

      I think given does this.


      Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).

        But the inner given would hide the topic of the outer given. There's only one $_ variable...

        Also, Perl 6 does not intuit that foo() should be a method call just because you happen to be in the scope of a class that defines method foo(). (That's a thing I hate about C++, actually.) So if you want to call a method without specifying the object, you have to at least put in the dot:

        .foo() # same as $_.foo()
        If you find yourself wanting to nest interface contexts, it's probably a sign that you should have designed the class with both interfaces in the first place. A class is the natural gathering point of interfaces (or roles, in terms of Perl 6's generalization of interfaces).