pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, smop: etc.) || We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by TimToady on 25 January 2008.
00:02 Limbic_Region joined 00:03 jisom left 00:11 braceta joined 00:41 elmex left
meppl good night 00:58
pugs_svnbot r20524 | putter++ | [STD_red] Extend the plurality_declarator STD.pm bug workaround. 01:04
mncharity good night meppl
meppl ;) 01:05
01:05 meppl left
vixey hey mncharity :) 01:05
mncharity hi vixey. how goes? 01:06
vixey good ty, how about you?
mncharity eh. wishing p5 had a more usable multimethods module. :/
vixey Lisp has a good multimethods.. 01:07
mncharity yeah, but I was waiting to write my CL to p5 converter until after I had p6 sort of working. 01:09
;)
vixey :o 01:11
mncharity moritz_: what language is $program = '( ( do { ' . $program . "\n} ).perl ).print"; in? It has .methods but also . string concat. ??
mncharity goes to look at evalbot while regressions run... 01:12
TimToady btw, for @foo -> { $^a, $^b } is actually semantically illegal; you're not supposed to mix real sigs with placeholders, and the -> introduces a sig of () 01:16
mncharity oohhhhh. the issue isn't that evalbot is adding a wrapper, but that elf -e '3' doesn't produce any output...
mncharity checks placeholders.t ... 01:17
or better yet, Auzon: ^^^ todo ;) 01:18
TimToady goes to dinner with a gaggle of teen quizzers... &
mncharity no, that's not fair. checking placeholders...
ļ»æ/me has trouble parsing "gaggle of teen quizzers". say that ten times fast. 01:19
01:26 Ched- joined
pugs_svnbot r20525 | putter++ | t/blocks/pointy.t: -> { $^a, $^b } is illegal. 01:31
rakudo_svn r27792 | pmichaud++ | [rakudo]: 01:35
r27792 | pmichaud++ | * Add Any.can().
pugs_svnbot r20526 | putter++ | [elf_f] Added multi subs. Allow greater use of multi methods (using Class::Multimethods).
mncharity perl6: 34 01:38
pugs_svnbot r20527 | putter++ | [elf] Update run-tests.result_faster.
exp_evalbot kp6: RESULT[34]
..pugs: RESULT[34]
..rakudo: RESULT[34]
..elf: RESULT[syntax error at (eval 15) line 3, near "GLOBAL::statement_prefix:"ā¤ at ./elf_f_faster line 4495ā¤]
mncharity ļ»æmoritz_: nm, sorry, got it. 01:42
01:43 Limbic_Region left 02:01 jhorwitz left
mncharity perl6: [3,4,5].Str 02:05
exp_evalbot kp6: RESULT['3 4 5']
..pugs: OUTPUT[*** No such method in class Array: "&Str"ā¤ at /tmp/E6O3iEPOBR line 1, column 1 - line 2, column 1ā¤]
..rakudo: OUTPUT[Method 'Str' not found for invocant of class 'List'ā¤current instr.: '_block11' pc 56 (EVAL_11:22)ā¤called from Sub 'parrot;PCT::HLLCompiler;eval' pc 783 (src/PCT/HLLCompiler.pir:458)ā¤called from Sub 'parrot;PCT::HLLCompiler;evalfiles' pc 1065 (src/PCT/HLLCompiler.pir:587)ā¤called
..from Sub 'parrot;PCT::HLLCompiler;command_line' pc 1244 (src/...
..elf: OUTPUT[Can't call method "Str" on unblessed reference at (eval 15) line 3.ā¤ at ./elf_f_faster line 4533ā¤] 02:06
mncharity ļ»ækp6: say [3,4,5]
kp6: say [3,4,5]
exp_evalbot r20527: OUTPUT[3 4 5ā¤]
mncharity rakudo: :a<3> 02:08
exp_evalbot OUTPUT[Null PMC access in type()ā¤current instr.: 'parrot;PAST::Compiler;keyed' pc 6062 (src/PAST/Compiler.pir:1694)ā¤
mncharity pugs: :a<3>
exp_evalbot RESULT[("a" => "3")]
pugs_svnbot r20528 | putter++ | [elf] Handle do{} and try{}. Added .print(). In support of evalbot. 02:14
mncharity kp6: undef.Str 02:18
exp_evalbot r20528: OUTPUT[DISPATCH: calling Str on invalid object:$VAR1 = undef;ā¤ā¤ at compiled/perl5-kp6-mp6/lib/KindaPerl6/Runtime/Perl5/MOP.pm line 128ā¤ main::DISPATCH('undef', 'Str') called at - line 11ā¤]
mncharity elf: 3 02:22
exp_evalbot RESULT[3ā¤]
mncharity woho
err,woo hoo
02:23 bacek joined
pugs_svnbot r20529 | putter++ | [elf] Added .Str(). say() rewritten using it. 02:26
mncharity perl6: say(undef)
02:27 Psyche^ joined
exp_evalbot kp6: OUTPUT[Undefā¤] 02:27
..pugs: OUTPUT[ā¤]
..rakudo: OUTPUT[ā¤]
..elf: OUTPUT[ā¤]
mncharity wonders if say(undef) should be "" or an error
bacek perl6: my $x=sub { say $_; }; $x('hello'); 02:32
exp_evalbot kp6: RESULT[error in Block at compiled/perl5-kp6-mp6/lib/KindaPerl6/Grammar/Sub.pm line 753, <> line 1.ā¤*** Syntax Error in Block: missing closing curly bracket ā¤]
..pugs: OUTPUT[helloā¤]
..rakudo: OUTPUT[helloā¤]
..elf: OUTPUT[Can't call method "Str" on an undefined value at ./elf_f_faster line 665.ā¤ at ./elf_f_faster line 4577ā¤]
02:40 Patterner left, Psyche^ is now known as Patterner
mncharity rakudo: Object.isa(Any) 03:00
exp_evalbot No output (you need to produce output to STDOUT)
mncharity rakudo: say Object.isa(Any)
exp_evalbot No output (you need to produce output to STDOUT)
mncharity rakudo: say 3
exp_evalbot OUTPUT[3ā¤]
mncharity rakudo: say Object.isa("Any") 03:01
exp_evalbot No output (you need to produce output to STDOUT)
spinclad rakudo: say Object
exp_evalbot OUTPUT[Objectā¤]
Eevee rakudo: say (Object.isa("Any") ?? 1 !! 0) 03:02
exp_evalbot OUTPUT[Statement not terminated properly at line 1, near "?? 1 !! 0)"ā¤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)ā¤
Eevee rakudo: say (Object.isa("Any") || 42)
exp_evalbot No output (you need to produce output to STDOUT)
mncharity I'm trying to figure out the relationship between Object and Any.
Eevee uh
rakudo: say (Object.isa("Any") && 42) 03:03
exp_evalbot No output (you need to produce output to STDOUT)
Eevee wtf
that doesn't make any sense
apparently between Object and Any is a black hole that consumes all output
mncharity actually, nm. Object is an Any or Junction. snn
re hole, :)
err, sigh. "Any Perl 6 object (default parameter type, excludes Junction)", "Object Perl 6 object (either Any or Junction)". 03:04
so is Any an Object, or no? seems no, but called a "ļ»æPerl 6 object". maybe little-o object. 03:05
Eevee sounds like it 03:06
Object is absolutely anything
mncharity but then can Any.can() ?
Eevee Any is any deterministic value 03:07
which is an odd distinction to make
especially since that means the object hierarchy has two roots..
s/object/class
mncharity sigh, no, Object has to be the base, rather than Any. Else Junction isn't rooted. Too late in the day for prelude type topology puzzles. :/ 03:08
Eevee that would certainly make more sense 03:09
mncharity which leaves me back wondering where I created a Moose::Object type loop... weeee...
Eevee but what is the compelling need to prevent Junctions being passed to functions with typeless parameters?
pmichaud Any isa Object 03:17
the '.can' method is defined for Any objects
(S12)
for some reason, Object.isa() is causing a segfault in Parrot. 03:19
it should be "Method isa not found"
sorry, Object.can() is returning a segfault in parrot -- should be Method 'can' not found. 03:20
a-ha. found it. 03:22
mncharity :) 03:23
pmichaud helps if we actually register the Object class as "Object" :-)
mncharity rakudo: class A {}; say A.new.Str
exp_evalbot OUTPUT[Method 'Str' not found for invocant of class 'A'ā¤current instr.: '_block11' pc 37 (EVAL_11:17)ā¤
mncharity kp6: class A{}; say A.new.Str
exp_evalbot r20529: OUTPUT[Aā¤]
mncharity choices, choices 03:24
pmichaud haven't done overloading yet
that's later on our roadmap :-)
(unless we need it sooner)
mncharity ah, so A.new.Str #=> "A" seems non-bogus? ok... 03:25
pmichaud well, I'm not sure what kp6 is doing is correct either 03:26
doesn't seem like it to me -- not sure that coercing A to a string should automatically become "A"
mncharity :) and the decision goes to... already running regression tests, so stays undefined. :) 03:27
03:29 alc joined
rakudo_svn r27793 | pmichaud++ | [rakudo]: 03:36
r27793 | pmichaud++ | * Forget to set the Perl6Object => Object mapping.
r27793 | pmichaud++ | * mncharity++ Eevee++ spinclad++
Eevee my interpretation was completely wrong but thanks anyway :P 03:37
pmichaud your interpretation helped me figure out what was wrong, though :-)
pugs_svnbot r20530 | putter++ | [elf] Adjust runtime inheritance to match spec. Prelude Any methods are now inherited and available. 03:42
r20530 | putter++ | [STD_red] Adjust the nonspec tweak on is_type to accept single-letter typenames.
mncharity is it just me, or does Object = {Junction, Any (root of objectness)} seem like it would be better as Any = {Junction, Object (root of objectness)} ? 03:43
while it's traditional to call your root "Object", with Junctions around, most of the things one associates with "Object" are not actually Object, but Any. Where Any is subset of Object. Which just seems really counter-expectation. 03:47
rakudo_svn r27794 | pmichaud++ | [rakudo]:
r27794 | pmichaud++ | * Fix bug with $x(1) introduced by r27778
r27794 | pmichaud++ | * Reported by bacek++
mncharity Though a great source of "Who's on first? No Who is on second" style commedy. 03:48
pmichaud huffmanization probably biases towards "Any"
Eevee any() does not really help this matter
'Any' sounds a bit more all-encompassing than 'Object' too 03:49
mncharity ".can is defined for any object? Yes, Any. So why isn't the definition in Object? Because it's not defined on Object. ..."
Eevee maybe Any just needs a better name
any better name
oh ho ho
mncharity oy 03:50
pmichaud i.e., since "anything but junction" is what we expect to write most often, we would tend to use "Any" over "Object" for that purpose because it's shorter.
spinclad C< Any = Object|Junction > makes more sense to me than C< Object = Any|Junction > (despite "everything's an object, including junctions")
mncharity s/Object/Base/ ? 03:51
pmichaud fortunately I've taken myself out of holding strong positions on such issues. :-)
Eevee NotJunction
mncharity It's easier to think of Any not including Junctions, then to also worry about objects not being Objects, but Any's. 03:52
s/Object/Bottom/
spinclad Root
Eevee CollapsedWaveform..
spinclad QuantumSuperposition ... oh, wait, that's taken 03:53
Eevee imo the root should stay Object (tradition, common sense, etc..) but "Any" should be less ambiguous
aha, but Any is anything BUT a QuantumSuperposition
so
the opposite of that is 03:54
QuantumSubposition
spinclad ClassicalObject
Supposition
mncharity So "Any is nice an short" seems plausible. I don't understand the current state of Junctions to know whether excluding them should be the normal thing or no. But Objects and objects being misassiciated seems a difficulty.
Eevee Single? eh then it doesn't sound like arrays etc are included
mncharity re difficulty, at least, it managed to confuse me this evening. again. and I've been here, confused, several times before. :) 03:55
03:56 rindolf joined
mncharity elf: class A { }; A.new.perl 03:57
exp_evalbot RESULT['A.new(!!!)'ā¤]
spinclad re repeatedly confusing, that's well worth noting as a 'design smell' 03:58
mncharity elf: class A { multi method f(Int $x){'i'~$x}; multi method f(Str $x){'s'~$x} }; my $a = A.new; say $a.f(3), $a.f("x");' 03:59
exp_evalbot OUTPUT[Parse error in: /tmp/IV003o3trfā¤panic at line 1 column 115 (pos 115): Error in quotesnabberā¤WHERE: .new; say $a.f(3), $a.f("x");'ā¤WHERE: /\<-- HEREā¤ STD_red/prelude.rb:98:in `panic'ā¤ STD_red/std.rb:1277:in `quotesnabber'ā¤ (eval):1:in `__quote_7980768'ā¤
..STD_red/prelude.rb:404:in `block in longest_token_matc...
spinclad and i hereby let the issue go
mncharity :)
elf: class A { multi method f(Int $x){"i"~$x}; multi method f(Str $x){"s"~$x} }; my $a = A.new; say $a.f(3), $a.f("x"); 04:00
exp_evalbot OUTPUT[Possible attempt to put comments in qw() list at (eval 17) line 6.ā¤i3ā¤sxā¤]
mncharity ah, ok. 04:01
spinclad (re huffman: 'Ob'?) 04:03
mncharity Obj 04:04
spinclad yes, fits tradition 04:05
Int, Str, Num
04:16 alester_ joined
rakudo_svn r27795 | pmichaud++ | [rakudo]: 04:21
r27795 | pmichaud++ | * Set svn:ignore property for src/pmc/mutable.pmc .
04:29 thestarslookdown joined
pugs_svnbot r20531 | putter++ | [elf] Avoid multi's with Num args generating a silly p5 warning. 04:29
mncharity good night all & 04:30
Auzon good night mncharity
Multimethods look neat :) 04:31
mncharity :)
Auzon and fast too. mncharity++
pugs_svnbot r20532 | putter++ | [elf] $?PACKAGE $?MODULE $?CLASS $?FILE $?LINE now exist. $?LINE value is 0.
mncharity regrettably isn't dispatching on classes like Int for which an autobox-based class is being used. And Class::Multimethods has no concept of ';' and non-dispatch-determining args, and is fixed arity, and ... etc. Have to grab our own copy and tweak it. 04:33
04:33 kanru left
Auzon Sounds like fun. Maybe make it into Perl6::Multimethods or some such, a la Perl6::Say 04:33
pmichaud pugs: my @a = 1..5; my @b = 6..10; sub f($x, $y, *@z) { say $x, $y; }; f(@a, @b); 04:34
exp_evalbot OUTPUT[12345678910ā¤]
pmichaud pugs: my @a = 1..5; my @b = 6..10; sub f($x, $y, *@z) { say $x, $y; }; f((@a, @b), 15);
exp_evalbot OUTPUT[1 2 3 4 56 7 8 9 1015ā¤]
mncharity one of the nice things about writing a compiler is you don't have to make it pretty or convenient for humans using p5. so it will probably end up just some internal runtime code.
Auzon That's usually easier :) 04:35
mncharity *"it" being the emitted p5
04:35 justatheory_ joined
pmichaud pugs: my @a = 1..5; my @b = 6..10; sub f($x, $y, *@z) { say $x, $y; }; f((@a, @b), 15, 20); 04:35
exp_evalbot OUTPUT[1 2 3 4 56 7 8 9 1015ā¤]
Auzon elf: say $?PACKAGE
exp_evalbot OUTPUT[Global symbol "$PACKAGE" requires explicit package name at (eval 14) line 3.ā¤ at ./elf_f_faster line 4586ā¤]
pmichaud pugs: my @a = 1..5; my @b = 6..10; sub f($x, $y, *@z) { say $x, $y; }; f((@a, 0, @b), 15, 20);
exp_evalbot OUTPUT[1 2 3 4 506 7 8 9 1015ā¤]
pmichaud pugs: my @a = 1..5; my @b = 6..10; sub f($x, $y, *@z) { say $x, $y; }; f((1..5, 0, 6..10), 15, 20); 04:36
exp_evalbot OUTPUT[12345067891015ā¤]
mncharity elf: package IForgotToHandleMain { say $?PACKAGE; }
exp_evalbot OUTPUT[Global symbol "$PACKAGE" requires explicit package name at (eval 14) line 6.ā¤ at ./elf_f_faster line 4586ā¤]
mncharity hmm,maybe not synced yet.
Auzon Nope
svn.pugscode.org is being unreliable for me.
also on evalbot's server
elf: say $?PACKAGE 04:37
exp_evalbot OUTPUT[ā¤]
pmichaud same here.
Auzon I just manually synced elf
pmichaud (unreliable svn.pugscode.org tonight)
Auzon because I can :)
mncharity lol 04:38
Auzon elf: package Test {say $?PACKAGE;}
exp_evalbot OUTPUT[Testā¤]
Auzon elf: package Test; say $?PACKAGE;
exp_evalbot OUTPUT[Parse error in: /tmp/GVtlxUXO5Xā¤panic at line 1 column 0 (pos 0): Can't understand next input--giving upā¤WHERE: package Test; say $?PACKAGE;ā¤WHERE:/\<-- HEREā¤ STD_red/prelude.rb:98:in `panic'ā¤ STD_red/std.rb:76:in `scan_unitstopper'ā¤ STD_red/std.rb:224:in `comp_unit'ā¤
..STD_red/std.rb:210:in `_UNIT'ā¤ ./../STD_red/STD_red_run:108:in `ma...
pmichaud pugs: my @a = 1..5; my @b = 6..10; sub f($x, $y, *@z) { say $x, $y; }; f(list(@a, 0, @b), 15, 20); 04:39
exp_evalbot OUTPUT[1 2 3 4 506 7 8 9 1015ā¤]
pmichaud that looks odd to me. oh well.
pugs: say (1..5).elems 04:40
exp_evalbot OUTPUT[5ā¤]
pmichaud pugs: say (1..5, 6..10).elems
exp_evalbot OUTPUT[10ā¤]
pmichaud pugs: say (1..5, 0, 6..10).elems
exp_evalbot OUTPUT[11ā¤]
pmichaud pugs: my @a = 1..4; say @a.elems 04:41
exp_evalbot OUTPUT[4ā¤]
pmichaud pugs: my @a = 1..4; say (@a).elems
exp_evalbot OUTPUT[4ā¤]
pmichaud pugs: my @a = 1..4; say (@a,5).elems
exp_evalbot OUTPUT[5ā¤]
pmichaud pugs: my @a = 1..4; say (@a,5,1..7).elems
exp_evalbot OUTPUT[12ā¤]
04:43 braceta left
pmichaud pugs: say (:a<3>); 04:44
exp_evalbot OUTPUT[a 3ā¤]
Auzon That seems very wrong. :-/ 04:45
Oops, I was scrolled up
pmichaud pugs: say (~(:a<3>)).chars;
exp_evalbot OUTPUT[3ā¤]
04:49 justatheory left 04:53 cmarcelo joined
mncharity TimToady: (n+1) In 'package P; ...' package_def eats the ';' which is needed by its callees. 04:54
Auzon elf: package Test;; say $?PACKAGE;
exp_evalbot OUTPUT[Use of uninitialized value in concatenation (.) or string at ./elf_f_faster line 4457.ā¤ā¤]
Auzon elf: say 5;;
exp_evalbot OUTPUT[Use of uninitialized value in join or string at ./elf_f_faster line 156.ā¤5ā¤]
Auzon oh well. ;; is silly. 04:55
04:55 cmarcelo left 04:56 mmorrow joined
mncharity :) 04:57
pugs_svnbot r20533 | putter++ | [STD_red] Parse 'package Foo;'. Auzon++
mncharity parser fixed. will teach the emitter about it another day. 04:58
Auzon You'll probably pass the S11 tests then (which I just added recently)
mncharity nontrivial because have to know when to invoke Moose immutability. but I fuzzily recall p6 prohibits 'package P1; ... package P2; ...', thus simplifying. 04:59
re S11, :) 05:00
Auzon My tests didn't smartlink for some reason. I'll look into it tomorrow or Monday, and probably add more tests.
mncharity re ;; , yeah, have to do something about that. first need to learn what the spec behavior is.
tests++ 05:01
past end of day. g'night ļ»æAuzon &
05:01 mncharity left
Auzon end of day indeed. & 05:02
rakudo_svn r27797 | pmichaud++ | [rakudo]: 05:19
r27797 | pmichaud++ | * Fix :a<3> Pair notation. (mncharity++ for noticing this.)
r27797 | pmichaud++ | * Add stringification for Pairs (possibly incorrect -- needs
r27797 | pmichaud++ | spec clarification).
05:47 thestarslookdown left
bacek perl6: my @pop = (1..3); say(pop @pop, 3, 'test'); 05:55
exp_evalbot kp6: OUTPUT[syntax error at position 8, line 1 column 8:ā¤my @pop = (1..3); say(pop @pop, 3, 'test')ā¤ ^ HEREā¤]
..pugs: OUTPUT[33testā¤]
..rakudo: OUTPUT[Could not invoke non-existent sub popā¤current instr.: '_block11' pc 75 (EVAL_13:31)ā¤called from Sub 'parrot;PCT::HLLCompiler;eval' pc 783 (src/PCT/HLLCompiler.pir:458)ā¤called from Sub 'parrot;PCT::HLLCompiler;evalfiles' pc 1065 (src/PCT/HLLCompiler.pir:587)ā¤called from Sub
..'parrot;PCT::HLLCompiler;command_line' pc 1244 (src/PCT/HLLCompile...
..elf: OUTPUT[Undefined subroutine &GLOBAL::pop called at (eval 15) line 4.ā¤ at ./elf_f_faster line 4600ā¤]
bacek my I ask stupid question: why it treated as say((pop..., 3, '')) not as say((pop ..), 3, '')? 05:56
05:57 rindolf left
TimToady I believe pop is now defined with an extra arg that says how many to pop, so it should probably be not finding an appropriate multi 05:58
bacek our Scalar multi method pop ( @array: ) is export 05:59
TimToady hmm, will S29 is still in a "formative" stage :) 06:00
bacek TimToady, :)
TimToady *well
on the other hand, there's always splice for that 06:01
bacek so, if I have 2 multi subs: Array a(), Array a(@l) and b(@l), b(@,@) how b(a @l1, @l2) should be parsed?
fix: 'a' is (@) and (@,@) s well. 06:02
and, AFAIK, functions signatures not available during parsing phase... 06:03
TimToady in scalar context the return of a is considered a scalar, even if it produced a list
that is, it returns a single Capture containing the returned values, and scalar context turns it into an array 06:04
bacek ok. What about second argument? Should all statement handled as b(a(@,@)) or b(a(@), @)? 06:05
and how parser can distinguish this variants if method's signatures not available? 06:06
TimToady list operators will always parse the whole list 06:07
there's no mechanism for picking off N args like in some languages
which is why "for" binding has to be a special case 06:08
bacek TimToady, does it mean that t/spec/S29-array/pop.t must must be fixed? (And many other tests as well) 06:10
TimToady depends on whether we define prefix:<pop> as a unary operator 06:11
I think at the time the export was written we were just assuming a sig with a single arg was sufficient
but lately we're requiring prefix:<x> for that
so I dunno if export can be made to do that 06:12
unless we extend it to have some kind of "export as" syntax
certainly p5 folx will expect pop @x to be unary 06:13
have to think about what would be a good export syntax for that 06:14
bacek sorry, have to go.
TimToady or maybe it's just a special enough case that we write one in terms of the other
k bye
06:16 ting_ joined, agentzh joined 06:34 agentz1 left, ting left 06:43 smtms left, alester_ left 06:47 jiing joined 07:12 pmurias joined 07:17 IllvilJa joined 07:33 meppl joined 07:34 alc left
pugs_svnbot r20534 | moritz++ | t/blocks/pointy.t when compilation of an eval() fails, rely on $!, 07:52
r20534 | moritz++ | not on the return value of eval().
07:53 alc joined 08:00 smtms joined 08:41 iblechbot joined
meppl good morning 08:44
moritz_ good morning meppl ;) 08:45
meppl good morning, moritz 08:48
08:54 schmalbe joined 09:07 lisppaste3 left 09:13 alc left
pugs_svnbot r20535 | moritz++ | [pugs/debian] a few small, ugly changes to debian/ that makes 09:26
r20535 | moritz++ | debian packages build if pugs built is fixed ;-)
r20535 | moritz++ | (Still depends on ghc 6.6.1, which is that last ghc version that
r20535 | moritz++ | worked for me)
09:36 chris2 joined 09:41 schmalbe left 09:57 chris2 left 09:59 lisppaste3 joined 10:21 rindolf joined 11:08 vixey left 11:22 polettix joined
moritz_ what should [*] (); return? 11:23
pugs: say [*] (); 11:24
exp_evalbot OUTPUT[1ā¤]
moritz_ so how does the reduce meta op [...] knows what the neutral element for multiplication is? 11:25
12:11 chris2 joined 12:21 kane_ left, ruoso left, Caelum left, r0bby left, kolibrie left, Auzon left, jjore left, arguile left, allbery_b left, Maddingue left
moritz_ is there a particular reasons for feed operators to be discussed in S06? are they somewhat closely related to subs? 12:23
12:23 kane_ joined, ruoso joined, Caelum joined, jjore joined, Auzon joined, Maddingue joined, kolibrie joined, arguile joined, allbery_b joined 12:24 FurnaceBoy joined, elmex joined 12:30 alc joined 13:07 Alias_ joined
moritz_ rakudo: sub foo(:$x, $y){ say "$x|$y"}; say 1; 13:10
exp_evalbot OUTPUT[1ā¤]
moritz_ rakudo: sub foo(:$x, :$y){ say "$x|$y"}; say 1;
exp_evalbot OUTPUT[1ā¤]
moritz_ rakudo: sub foo(:$x, :$y){ say "$x|$y"}; foo(:x<a>, :y<b>); 13:11
exp_evalbot OUTPUT[Null PMC access in type()ā¤current instr.: 'parrot;PAST::Compiler;keyed' pc 6130 (src/PAST/Compiler.pir:1703)ā¤
moritz_ rakudo: sub foo(:$x, :$y){ say "$x|$y"}; foo(x => 'a', y => 'b')
exp_evalbot OUTPUT[a|bā¤]
13:12 FurnaceBoy left 13:13 iblechbot left 13:20 alc left
pmurias moritz_: feed operators are a way of invoking a subroutine 13:34
13:49 Ched- left, Ched- joined 13:52 kaether_ joined 13:54 jhorwitz joined 13:56 kaether left, kaether_ is now known as kaether 14:29 FurnaceBoy joined 14:47 ruoso left 15:05 alester_ joined 15:10 cmarcelo joined 15:15 BinGOs_ joined 15:18 BinGOs left 15:20 alester_ left 15:21 polettix left 15:26 alanhaggai joined 15:32 FurnaceBoy left 15:33 kaether_ joined 15:35 BinGOs_ is now known as BinGOs 15:38 kaether left, kaether_ is now known as kaether 15:44 FurnaceBoy joined 15:52 masak joined 15:56 iblechbot joined 16:00 kanru joined 16:07 FurnaceBoy is now known as FornalhoGaroto 16:24 melg joined 16:28 FornalhoGaroto is now known as FurnaceBoy 16:32 alanhaggai left 16:35 ChanServ sets mode: +o diakopter, diakopter sets mode: +o TimToady, diakopter sets mode: -o diakopter
diakopter rakudo: sub foo(:$x, :$y){ say "$x|$y"}; foo(x => 'a') 16:35
exp_evalbot OUTPUT[a|ā¤]
diakopter rakudo: sub foo(:$x, :$y){ say "$x|$y"}; foo(y => 'b') 16:36
exp_evalbot OUTPUT[MMD function __concatenate not found for types (79, 80)ā¤current instr.: 'foo' pc 101 (EVAL_12:55)ā¤
diakopter thinks.
moritz_ rakudo is lacking robustness
diakopter is there a "required named parameter" marker in the sub declaration? 16:37
moritz_ rechecks S06
rindolf diakopter: what is :$x in subroutine args? 16:38
moritz_ Required parameters may optionally be declared with a trailing !, though that's already the default for positional parameters:
rindolf: named parameter
rindolf moritz_: ah.
masak moritz_: pugs was also lacking in robustness at rakudo's age :)
lambdabot masak: You have 1 new message. '/msg lambdabot @messages' to read it.
masak ooh, a message!
diakopter rakudo: sub foo(:$x, :$y!){ say "$x|$y"}; foo(y => 'b')
exp_evalbot OUTPUT[MMD function __concatenate not found for types (79, 80)ā¤current instr.: 'foo' pc 91 (EVAL_12:50)ā¤
diakopter rakudo: sub foo(:$x!, :$y){ say "$x|$y"}; foo(y => 'b') 16:39
exp_evalbot OUTPUT[too few arguments passed - missing required named arg 'x'ā¤current instr.: 'foo' pc 41 (EVAL_12:23)ā¤
moritz_ masak: I know ;)
masak moritz_: oka. will read and get back to you.
kudos for writing stuff, that's a way to get people enthusiastic (me included)
16:40 Psyche^ joined
diakopter rakudo: sub foo(:$x, :$y){ say "$x"~"|"~"$y"}; foo(y => 'b') 16:41
exp_evalbot OUTPUT[|bā¤]
diakopter well that worked
moritz_ maybe it can't concatenate Undef or Failure 16:42
rakudo: my $x = Failure.new; print "x$x";
exp_evalbot OUTPUT[x]
moritz_ rakudo: my $x = Undef; print "x$x";
exp_evalbot OUTPUT[xFailure]
moritz_ lol
diakopter giggles
pugs: my $x=Failure.new;print "x$x"; 16:43
exp_evalbot OUTPUT[*** No such subroutine: "&Failure"ā¤ at /tmp/Z5oV61gm0O line 1, column 3-18ā¤]
moritz_ barewords that aren't types are parsed as subs
diakopter rakudo: sub foo(:$x, :$y){ say "$x"~"|"~"$y"}; foo('y' => 'b') 16:48
exp_evalbot OUTPUT[|bā¤]
moritz_ rakudo: sub foo(:$x, :$y){ say "$x"~"|"~"$y"}; foo(:x(1), :y(2)); 16:51
exp_evalbot OUTPUT[1|2ā¤]
moritz_ rakudo: sub foo(:$x, :$y(2)){ say "$x"~"|"~"$y"}; foo(:x(1));
exp_evalbot OUTPUT[Scope not found for PAST::Var '$x'ā¤current instr.: 'parrot;PCT::HLLCompiler;panic' pc 156 (src/PCT/HLLCompiler.pir:103)ā¤
moritz_ rakudo: sub foo(:$x, :$y = 2){ say "$x"~"|"~"$y"}; foo(:x(1));
exp_evalbot OUTPUT[1|2ā¤]
diakopter rakudo: sub foo(:$x, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(1)); 16:53
exp_evalbot OUTPUT[|1ā¤]
diakopter rakudo: sub foo(:$x, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(Undef));
exp_evalbot OUTPUT[|Failureā¤]
diakopter rakudo: sub foo($x?, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(3));
exp_evalbot OUTPUT[|ā¤]
diakopter interesting 16:54
moritz_ buggy ;)
we really need a point-n-click mechanism for making test cases out of IRC logs ;) 16:55
diakopter x is an optional positional parameter; y is a defaulted but overridden named parameter
moritz_ except that named paramenters are optional by default
diakopter rakudo: sub foo($x?, :$y? = 2){ say "$x"~"|"~"$y"}; foo(:y(3));
exp_evalbot OUTPUT[|ā¤]
diakopter duh; defaulted parameters are optional; silly me 16:56
rakudo: sub foo(:$y = 2, $x?){ say "$x"~"|"~"$y"}; foo(:y(3)); 16:57
exp_evalbot OUTPUT[|ā¤]
16:57 Patterner left, Psyche^ is now known as Patterner
diakopter pugs: sub foo(:$y = 2, $x?){ say "$x"~"|"~"$y"}; foo(:y(3)); 16:57
exp_evalbot OUTPUT[|3ā¤]
diakopter pugs: sub foo(:$y = 2, $x){ say "$x"~"|"~"$y"}; foo(:y(3)); 16:58
exp_evalbot OUTPUT[*** Missing required parameters: $xā¤ at /tmp/rn1EXKNr5w line 1, column 43-53ā¤]
diakopter pugs: sub foo($x, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(3));
exp_evalbot OUTPUT[*** Missing required parameters: $xā¤ at /tmp/dNpxvaDr1p line 1, column 43-53ā¤]
diakopter pugs: sub foo($x?, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(3));
exp_evalbot OUTPUT[|3ā¤]
diakopter ok; pugs does what my understanding expects
pugs: sub foo($x?, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(3), 1); 16:59
exp_evalbot OUTPUT[1|3ā¤]
diakopter oooo interesting
moritz_ and correct IMHO 17:00
17:00 alanhaggai joined
diakopter so, optional positional parameters and named parameters can be interspersed in both the declaration and invocation, but are treated as two separate parameter lists. 17:00
(for the purposes of ordering the positional parameters) 17:01
moritz_ aye
diakopter rakudo: sub foo($x?, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(3), 1); 17:02
exp_evalbot OUTPUT[1|3ā¤]
diakopter but rakudo got that one.
so, rakudo is currently ignoring named arguments if there is an optional positional argument missing. 17:04
rakudo: sub foo(:$y = 2, $x?){ say "$x"~"|"~"$y"}; foo(:y(3), 1); 17:06
exp_evalbot OUTPUT[1|3ā¤]
diakopter rakudo: sub foo($x?, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(3), 1); 17:07
exp_evalbot OUTPUT[1|3ā¤]
diakopter rakudo: sub foo($x?, :$y = 2){ say "$x"~"|"~"$y"}; foo(1, :y(3));
exp_evalbot OUTPUT[1|3ā¤]
diakopter rakudo: sub foo(:$y = 2, $x?){ say "$x"~"|"~"$y"}; foo(1, :y(3));
exp_evalbot OUTPUT[1|3ā¤]
diakopter yep; that's it.
17:07 justatheory_ left
diakopter rakudo: sub foo($x?, :$y = 2){ say "$x"~"|"~"$y"}; foo(:y(3)); 17:07
exp_evalbot OUTPUT[|ā¤]
diakopter in fact, it's not even using the default value of y 17:10
rakudo: sub foo($x, $y?, :$z = 2){ say $x~"|"~$y~"|"~$z}; foo(1,:y(3),4); 17:11
exp_evalbot OUTPUT[too many named arguments - 'y' not expectedā¤current instr.: 'foo' pc 55 (EVAL_12:27)ā¤
diakopter rakudo: sub foo($x, $y?, :$z = 2){ say $x~"|"~$y~"|"~$z}; foo(1,:z(3),4);
exp_evalbot OUTPUT[1|4|3ā¤]
diakopter rakudo: sub foo($x, $y?, :$z = 2){ say $x~"|"~$y~"|"~$z}; foo(1,:z(3)); #should say: 1||3 17:14
exp_evalbot OUTPUT[1||ā¤]
diakopter rakudo: sub foo($w, $x?, $y?, :$z = 2){ say $w~"|"~$x~"|"~$y~"|"~$z}; foo(1,,,:z(3)); #should say: 1|||3 17:15
exp_evalbot OUTPUT[1|||ā¤]
diakopter rakudo: sub foo($w, $x?, $y?, :$z = 2){ say $w~"|"~$x~"|"~$y~"|"~$z}; foo(1,Undef,Undef,:z(3)); #should say: 1|||3 17:16
exp_evalbot OUTPUT[1|Failure|Failure|3ā¤]
diakopter that's closer
moritz_ actually I don't think that Undef is forced to stringify to ''
diakopter oh?
moritz_ after all it's a proto object, which should stringify to its class name 17:17
diakopter what should foo(1,,,:z(3)) have said
moritz_ dunno
rakudo: my Int $x; say $x 17:18
exp_evalbot OUTPUT[Intā¤]
diakopter pugs: sub foo($w, $x?, $y?, :$z = 2){ say $w~"|"~$x~"|"~$y~"|"~$z}; foo(1,,,:z(3)); #should say??: 1|||3 #asking pugs for help
exp_evalbot OUTPUT[*** ā¤ Unexpected ",,:"ā¤ expecting ":", identifier or ")"ā¤ at /tmp/LP94cgcgwN line 1, column 69ā¤]
diakopter rakudo doesn't mind empty arguments, but pugs does. 17:19
17:19 braceta joined
diakopter pugs: sub foo($w, $x?, $y?, :$z = 2){ say $w~"|"~$x~"|"~$y~"|"~$z}; foo(1,undef,undef,:z(3)); #asking pugs for help 17:21
exp_evalbot OUTPUT[1|||3ā¤]
diakopter pugs: sub foo($w, $x?, $y?, :$z = 2){ say $w~"|"~$x~"|"~$y~"|"~$z}; foo(1,undef,undef,'something_extra',:z(3));
exp_evalbot OUTPUT[*** No compatible multi variant found: "&foo"ā¤ at /tmp/BwplDZyBLJ line 1, column 63-105ā¤]
diakopter interesting it gives that error when there are too many arguments, but "too few arguments" error when there are too few arguments. 17:22
rakudo: sub foo($w, $x?, $y?, :$z = 2){ say $w~"|"~$x~"|"~$y~"|"~$z}; foo(1,Undef,Undef,'something_extra',:z(3)); 17:23
exp_evalbot OUTPUT[1|Failure|Failure|something_extraā¤] 17:24
diakopter wow; that's utter failure
diakopter tries to imagine what would cause that 17:25
17:32 cmarcelo left
diakopter rakudo: sub foo($w, $x?, $y?, :$z = 4){ say $w~"|"~$x~"|"~$y~"|"~$z}; foo(1,,3,:z(5)); #should say: 1||3|5 17:39
exp_evalbot OUTPUT[1|3||ā¤]
diakopter ok; rakudo treats a double comma as a single comma 17:40
rakudo: sub foo($v, $w?, $x?, $y?, :$z = 5){ say $v~"|"~$w~"|"~$x~"|"~$y~"|"~$z}; foo(1,,3,,:z(6)); #should say: 1||3||6 17:41
exp_evalbot OUTPUT[1|3|||ā¤]
diakopter TimToady: is ,, legal in an argument list? 17:43
pugs seems to think not; rakudo treats multiple commas as 1 comma 17:44
18:03 masak left 18:17 chris2 left 18:19 jhorwitz left
diakopter rakudo: sub foo($w=4){say $w.perl}; foo w => 3; # $w is a positional parameter, but w is passed as a named argument, so this should fail with "not enough (positional) arguments" 18:39
exp_evalbot OUTPUT[:w(3)ā¤]
diakopter rakudo: sub foo(:$w=4){say $w.perl}; foo w => 3; # $w is a named parameter ($w should be 3), but produces a Pair (":w(3)") 18:40
exp_evalbot OUTPUT[:w(3)ā¤]
moritz_ rakudo: sub foo(:$w=4){say $w.perl}; foo :w(3)
exp_evalbot OUTPUT[:w(3)ā¤] 18:41
moritz_ b0rked
diakopter rakudo: sub foo($w){say $w.perl}; foo('w'=>3); # $w should be a Pair, not a named argument 18:48
exp_evalbot OUTPUT[too many named arguments - 'w' not expectedā¤current instr.: 'foo' pc 41 (EVAL_12:23)ā¤
moritz_ rakudo: sub foo { say %_.perl }; foo('w' => 3) 18:49
exp_evalbot OUTPUT[Method 'perl' not found for invocant of class 'Hash'ā¤current instr.: 'foo' pc 78 (EVAL_11:41)ā¤
moritz_ rakudo: sub foo { say %_l }; foo('w' => 3) 18:50
exp_evalbot OUTPUT[Scope not found for PAST::Var '%_l'ā¤current instr.: 'parrot;PCT::HLLCompiler;panic' pc 156 (src/PCT/HLLCompiler.pir:103)ā¤
diakopter rakudo: sub foo(:$w){say $w.perl}; foo |('w'=>3); # $w should be a named argument
exp_evalbot OUTPUT[Method 'perl' not found for invocant of class 'Undef'ā¤current instr.: 'foo' pc 121 (EVAL_12:51)ā¤
diakopter er, what? 18:51
18:52 ggoebel joined 18:53 ggoebel left
diakopter rakudo: sub foo(:$w=:w(:z(4))){say $w.perl}; my %h=(x=>3);foo(%h); # $w should be a named argument, not a Pair 18:55
exp_evalbot OUTPUT[:x(3)ā¤]
moritz_ diakopter: actually foo(%h) shouldn't work at all 18:57
diakopter: because foo expects a named arg
diakopter: and receives only a positional
diakopter right, that's what my comment says 18:58
$w should be a named argument (scalar), not a (positionally interpreted) Pair 18:59
although, S06 implies that named arguments are optional by default (when it specifies that positional arguments are required by default) 19:01
parameters, I mean 19:02
moritz_ so?
19:02 rindolf left
moritz_ you'r still not allowed to call a sub with an optional named argument with a positional one 19:03
diakopter so, foo(%h) should run, just with :$w not defined
ok, you're right; so, it should give a fatal error, "too many [positional] arguments", or in pugs' case, "mmd method not found" 19:05
moritz_ a sub without a "multi" or a "proto" is implicitly an "only" sub, so the correct message is "wrong argument list" and not "no multi sub found" 19:06
diakopter ah, ok. i was assuming pugs was correct. :)
this is interesting: 19:10
rakudo: sub foo(:$w=4){say $w.perl}; my $w=5; foo(:$w); my %w=6; foo(%w);
exp_evalbot OUTPUT[5ā¤6ā¤]
moritz_ rakudo: my %w = 6; say %w 19:11
exp_evalbot OUTPUT[6ā¤]
moritz_ not type checks yet on containers 19:12
diakopter this is also wrong: 19:13
rakudo: sub foo(:$w=4){say $w.perl}; my %w=:x(7); foo(%w);
exp_evalbot OUTPUT[:x(7)ā¤]
diakopter rakudo: sub foo(:$w=4){say $w.perl}; my %z=:x(7); foo(%z); # I guess named arguments fall back to being positional ones...? 19:15
exp_evalbot OUTPUT[:x(7)ā¤]
moritz_ actually it should be the other way round 19:16
19:27 vixey joined 19:30 icwiener joined
pmurias vixey: hi 19:46
vixey hiya
meppl good night 19:49
19:51 icwiener left 19:52 meppl left 20:09 rhizo joined 20:16 FurnaceBoy left 20:50 mmorrow left 21:14 jferrero joined
TimToady moritz_: S03:3510 discusses identity values for reduce operators 21:24
feed operators are syntactically statement separators like ; 21:25
moritz_ *reading* 21:26
TimToady so they don't really fit well anywhere. maybe they belong in S04 more than S06...
moritz_ or maybe in their own synopsis - the existing ones are large enough, a bit more modularisation wouldn't hurt 21:28
TimToady it is incorrect to put any positional parameter after any named-only parameter 21:32
I think ,, should probably be legal, given a trailing , is legal 21:38
And missing args are considered to be equivalent to (), so 1,2,,3, is really 1,2,(),3,() 21:42
21:42 pmurias left
TimToady (well, that's the p5 view; maybe it should not autogenerate a null list when bound to a scalar though) 21:44
moritz_ should STD5_run work atm? I tried it today and it chokes (iirc it can't localize %_ or some such)
TimToady running under 5.10?
moritz_ aye 21:45
at least I think so, I'll try again now
TimToady could be broken at the moment--I'm in the middle of a quoting refactor
might well be broken on some input and not other input 21:46
moritz_ perl5.10.0 STD5_run noun -e 42
Can't use global %_ in "my" at STD5.pm line 7256, near "my %_"
the line is my %_ = @_; 21:47
pugs_svnbot r20536 | Auzon++ | Smartlink fixes with help from moritz++ 21:51
TimToady that's very odd; I've never seen that error. unfortunately I'm not in a runnable state at the momet to try it
*moment
moritz_ TimToady: don't worry, I'll try again in a week 21:52
21:58 FurnaceBoy joined 22:11 bacek_ joined 22:13 bacek left 22:36 iblechbot left 22:37 r0bby joined 23:03 FurnaceBoy left 23:05 rhizo_ joined 23:07 alanhaggai left 23:16 jferrero left 23:19 elmex left 23:21 justatheory joined 23:24 braceta left 23:26 rhizo left 23:49 justatheory left 23:56 braceta joined