Re: Justification for the "reversed" instruction format

2016-09-08 Thread Trey Harris
Ah, nice, good to know my concern was unwarranted. On Thu, Sep 8, 2016 at 3:04 PM Aaron Sherman wrote: > In Perl 6, we apply those constraints when you pass off the call to the > ultimate recipient, and that's important because that recipient can have > multiple signatures (and

Re: Justification for the "reversed" instruction format

2016-09-08 Thread Trey Harris
On Thu, Sep 8, 2016 at 9:23 AM Aaron Sherman a...@ajs.com wrote: I don't know Haskell, but isn't flip just: > > sub flip() { -> $b, $a, |c { f($a, $b, |c) } } > > And then: > > perl6 -e 'sub flip() { -> $a, $b, |c { f($b, $a, |c) } }; my = flip > yas(1,2,3)' > 213 >

Re: Justification for the "reversed" instruction format

2016-09-08 Thread Aaron Sherman
In Perl 6, we apply those constraints when you pass off the call to the ultimate recipient, and that's important because that recipient can have multiple signatures (and signatures can be added *after* you define the flip). For example: $ cat foo.p6 sub flip() { -> $b, $a, |c { f($a, $b, |c) }

Re: Justification for the "reversed" instruction format

2016-09-08 Thread Aaron Sherman
I don't know Haskell, but isn't flip just: sub flip() { -> $b, $a, |c { f($a, $b, |c) } } And then: perl6 -e 'sub flip() { -> $a, $b, |c { f($b, $a, |c) } }; my = flip yas(1,2,3)' 213 Aaron Sherman, M.: P: 617-440-4332 Google Talk, Email and Google Plus: a...@ajs.com Toolsmith, developer,

Re: Justification for the "reversed" instruction format

2016-09-07 Thread Brandon Allbery
On Wed, Sep 7, 2016 at 6:08 PM, Parrot Raiser <1parr...@gmail.com> wrote: > There is a "flip" in P6, to reverse the characters in a string, and a > "reverse", to return the elements of a list. Would either of those be > an equivalent? > Not without an "apply" mechanism used for function / method

Re: Justification for the "reversed" instruction format

2016-09-07 Thread Parrot Raiser
There is a "flip" in P6, to reverse the characters in a string, and a "reverse", to return the elements of a list. Would either of those be an equivalent? On 9/6/16, Trey Harris wrote: > There’s a very common functional programming pattern, usually called flip; > its

Re: Justification for the "reversed" instruction format

2016-09-07 Thread Trey Harris
There’s a very common functional programming pattern, usually called flip; its implementation in Haskell is simply: flip :: (a -> b -> c) -> b -> a -> cflip f x y = f y x Getting the same behavior out of a bespoke function in Perl 6 would be easy for any particular case, but writing a

Re: Justification for the "reversed" instruction format

2016-09-06 Thread Aaron Sherman
Oh, and note that you can pass R'd reductions as if they were normal prefix ops: $ perl6 -e 'sub dueet(, *@list) { op @list }; say dueet :<[R-]>, 1..100' -4850 On Tue, Sep 6, 2016 at 12:51 PM, Aaron Sherman wrote: > > > $ perl6 -e 'my @numbers = 1..100; say [-]

Re: Justification for the "reversed" instruction format

2016-09-06 Thread Aaron Sherman
$ perl6 -e 'my @numbers = 1..100; say [-] @numbers; say [R-] @numbers' -5048 -4850 In general, it's kind of pointless with bare infix ops, as you can just reverse the arguments, but when reducing or the like, it becomes much more valuable. On Tue, Sep 6, 2016 at 12:43 PM, Parrot Raiser

Justification for the "reversed" instruction format

2016-09-06 Thread Parrot Raiser
I've just stumbled across "reversed operators", e.g. say 4 R/ 12; # 3 in the documentation. I'm curious to know why the language includes them? I'm having trouble understanding where they would be useful.