Camelia, the Perl 6 bug

IRC log for #perl6, 2009-10-10

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 jnthn rakudo: say " ( no ouptput )"
00:01 p6eval rakudo f99cc4:  ( no output )
00:02 pugs_svn r28704 | lwall++ | [viv] do similarly with postcircumfix and dotty
00:02 jnthn \o/ # wow p6eval has spell checker!
00:02 moritz_ rakudo: say 1
00:02 p6eval rakudo f99cc4:  ( no output )
00:02 jnthn ...oops.
00:02 moritz_ I was wondering why the NL was missing from yours
00:03 moritz_ it segfaults during build
00:03 jnthn heh heh
00:03 jnthn ...during build?!
00:03 jnthn That's...ouch.
00:03 jnthn moritz_: Where in the build?
00:04 moritz_ rather late... but I didn't look closure, instead started a rebuild ;-)
00:06 moritz_ /home/p6eval//p2/bin/parrot  -o perl6_s1.pbc perl6.pir
00:06 moritz_ make: *** [perl6_s1.pbc] Segmentation fault
00:07 jnthn Oh, Parrot SEGV just on compiling?
00:07 jnthn Damm.
00:07 jnthn oh, hmm...I committed...
00:08 jnthn -41447
00:08 jnthn +41772
00:08 jnthn So I did dump Parrot rev.
00:08 jnthn Didn't actually need it for this commit, but instead for forthcoming one.
00:09 moritz_ I have no idea how clean or unclean the parrot dir on that server is
00:10 jnthn Maybe worth cleaning that up before we panic. :-)
00:11 moritz_ aye
00:12 moritz_ oh, did somebody fix the parallel build?
00:12 lumi joined #perl6
00:13 jnthn moritz_: I tweaked the makefile a little today.
00:14 jnthn moritz_: Added one missing dep I'd forgotten before.
00:14 jnthn That may have done it.
00:15 moritz_ ok, on two of the hosts the build was successful
00:15 moritz_ now waiting for the p6eval one ;-)
00:18 moritz_ rakudo: say 2
00:18 p6eval rakudo 3a4d14: OUTPUT«2␤»
00:18 moritz_ much better ;-)
00:18 jnthn \o/
00:19 jnthn rakudo: sub foo(::T $x) { }; say &foo.signature.perl
00:19 p6eval rakudo 3a4d14: OUTPUT«:(Any ::T $x)␤»
00:19 jnthn \o/
00:19 moritz_ \o/ indeed
00:19 jnthn Now we just need the default closure in there
00:19 jnthn And then the sig objects probably have everything the new binder will need.
00:19 jnthn Well, apart from nested signatures.
00:20 jnthn There's a slut for those.
00:20 jnthn But we're not parsing 'em yet.
00:20 moritz_ rakudo: sub foo(::T Int $x  where { $x % 2 } ) { }; say &foo.signature.perl
00:20 p6eval rakudo 3a4d14: OUTPUT«Multiple prefix constraints not yet supported at line 2, near ") { }; say"␤in Main (src/gen_setting.pm:1161)␤»
00:20 moritz_ did you mean "slot"?
00:20 jnthn didn't I type...oh...wow...ouch
00:20 moritz_ :)
00:21 jnthn That code should parse - I copied STD though. ;-)
00:21 jnthn STD got fixed for that only a day or two ago.
00:21 moritz_ rakudo: say 3 !% 2
00:21 p6eval rakudo 3a4d14: OUTPUT«0␤»
00:22 moritz_ rakudo: say 4 !% 2
00:22 p6eval rakudo 3a4d14: OUTPUT«1␤»
00:25 lumi joined #perl6
00:25 moritz_ jnthn: is .constraints supposed to be implemented?
00:27 jnthn rakudo: sub foo($x) { }; say &foo.signature.params.constraints
00:28 p6eval rakudo 3a4d14: OUTPUT«Method 'constraints' not found for invocant of class 'List'␤in Main (src/gen_setting.pm:204)␤»
00:28 jnthn rakudo: sub foo($x) { }; say &foo.signature.params[0].constraints
00:28 p6eval rakudo 3a4d14: OUTPUT«Use of uninitialized value␤␤»
00:28 jnthn rakudo: sub foo($x where 1) { }; say &foo.signature.params[0].constraints
00:28 p6eval rakudo 3a4d14: OUTPUT«Use of uninitialized value␤␤»
00:28 jnthn hmm
00:28 jnthn That second one is more unexpected.
00:28 jnthn Yes, I think it's meant to be.
00:28 SmokeMachine joined #perl6
00:28 jnthn Maybe bug.
00:29 jnthn Or something else odd.
00:29 pugs_svn r28705 | moritz++ | [t/spec] .constraints tests
00:30 NorwayGeek joined #perl6
00:30 pugs_svn r28706 | moritz++ | [t/spec] non-closure constraints
00:31 payload joined #perl6
00:31 moritz_ rakudo: sub h(::T $x, T $y) { };
00:31 p6eval rakudo 3a4d14:  ( no output )
00:32 moritz_ rakudo: sub h(::T $x, T $y) { }; say &h.signature.params[1].type.perl
00:32 p6eval rakudo 3a4d14: OUTPUT«Any␤»
00:32 moritz_ not quite what I expected, but then I don't know what else it could have returned
00:33 moritz_ rakudo: sub h(::T $x, T $y) { }; say &h.signature.params[0].type_capture.perl
00:33 p6eval rakudo 3a4d14: OUTPUT«Method 'type_capture' not found for invocant of class 'Parameter'␤in Main (src/gen_setting.pm:204)␤»
00:33 moritz_ rakudo: sub h(::T $x, T $y) { }; say &h.signature.params[0].type_captures.perl
00:33 p6eval rakudo 3a4d14: OUTPUT«["T"]␤»
00:34 jnthn moritz_: It transforms that lookup into a constraint.
00:34 jnthn moritz_: For the moment, anyway.
00:34 pugs_svn r28707 | moritz++ | [t/spec] type_captures
00:35 jnthn moritz_: So :(::T $x, T $y) is kinda more like :(::T $x, $y where T)
00:35 moritz_ is it also supposed to be that way?
00:35 jnthn I'm really not too sure.
00:35 moritz_ I mean it does make a difference for narrowness
00:35 jnthn Well, that's an interesting problem.
00:35 jnthn Remember narrowness matters when we're sorting the candidates.
00:36 jnthn And that sorting is independent of any particular call.
00:36 jnthn So we don't know that T will be when we do the sort.
00:36 rgrau` joined #perl6
00:37 jnthn So we'd have to assume Any in the above case.
00:37 jnthn At sort time.
00:37 moritz_ so :(Any, Int) wins against :(::T, T) when called with (1, 2)
00:37 jnthn Right.
00:37 moritz_ that's fair if you document it, IMHO
00:37 jnthn Well, the thing is
00:37 jnthn :(Any, Int) wins against :(::T, T)
00:38 jnthn That's *it*.
00:38 jnthn Well
00:38 jnthn If the first can bind of course.
00:38 jnthn But the sorting - which is call-independent - sees the first sorted before the second.
00:40 pugs_svn r28708 | lwall++ | [viv] more strange operator type cleanup, fake infixes, regex_infix, etc.
00:40 jnthn The perhaps nice thing is that :(T, ::T) sorts narrower than :(Any, Any)
00:40 jnthn Because the constraint makes it narrower.
00:40 jnthn Which I think is what you want.
00:41 moritz_ aye
00:42 lumi joined #perl6
00:43 jnthn It's certainly a topic I've pondered quite a bit too, though.
00:43 jnthn "is treating it as a constraint really OK"
00:43 TimToady would :(Int ::T $x, T $y) be tighter than that?
00:44 jnthn TimToady: :(Int ::T $x, T $y) would be tighter than :(T, ::T), yes
00:44 moritz_ I'd expect that to turn into :(Int $x, Int $y where T)
00:44 sjohnson Tene: on your slurp function you wrote for me a few months ago, do i need to close the $fh handler you wrote?
00:44 sjohnson >> sub slurp { my $name = shift; open my $fh, '<', $name; local $/; <$fh> }
00:44 jnthn moritz_: Actually only (ATM) :(Int ::T $x, $y where T)...hmm
00:44 Tene sjohnson: no, because you're using a lexical filehandle.
00:44 Tene sjohnson: so it's automatically closed at the end of the scope.
00:45 jnthn TimToady: OOps, I meant :(::T, T) above
00:45 jnthn moritz_: Though there's a decent argument for what you suggest.
00:45 sjohnson Tene: thanks
00:45 sjohnson ( `ー´)
00:47 moritz_ jnthn: if that's implementable without a major refactor of the dispatcher, that'd be a great compromise
00:47 dalek rakudo: 1b83557 | moritz++ | t/spectest.data:
00:47 dalek rakudo: we pass t/spec/S06-signature/introspection.t, jnthn++
00:47 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​b835575694653a394944ae24fec731f7e286e1c
00:47 moritz_ maximal DWIM but preserving pre-sortability
00:47 jnthn moritz_: Well, it's not even a dispatcher issue.
00:47 jnthn moritz_: It's more a signature construction one.
00:47 moritz_ right
00:48 jnthn So in many senses, it's kinda easy. :-)
00:48 moritz_ \o/
00:48 jnthn I agree it's a good balance.
00:49 moritz_ I'll sneak it in as a TODO test ;-)
00:49 TimToady we just have to say that an en passant type also captures the nominal type
00:49 jnthn TimToady: ...in English? ;-)
00:50 TimToady en passant is English, as of 1070
00:50 TimToady er, 1066
00:50 jnthn :-P
00:50 moritz_ ;-)
00:50 moritz_ "in passing"
00:50 moritz_ playing chess now and then helps you understand what "en passant" means ;-)
00:51 jnthn TimToady: The proposal here is that :(Int ::T $x, T $y), which currently gets transformed to :(Int ::T $x, $y where T) would instead become :(Int ::T $x, Int $y where T)
00:51 TimToady seems right
00:51 jnthn TimToady: In other words, it's just shoving along as much as we statically can know about the nominal type.
00:52 TimToady what about :(Int ::T $x where *.odd, T $y)?
00:53 moritz_ would be turned into ... Int $y where T & *.odd
00:53 moritz_ I suppose
00:53 jnthn TimToady: Since ::T captures the nominal type, and has no relation to the constraint, I'd not really expect to distribute the constraint from the first parameter too.
00:53 moritz_ so here our expectations diverge
00:54 jnthn Well, but then things like :(Odd ::T $x) gets fun
00:54 moritz_ but what jnthn says makes sense, also
00:54 jnthn Assuming a subset Odd of Int where ...
00:54 pmichaud I'm not sure I agree with the transformation
00:54 jnthn Because signature construction picks that apart into a nominal type of Int and a constraint.
00:54 TimToady that seems to argue for carrying wheres over
00:54 stephenlb joined #perl6
00:55 jnthn TimToady: Yeah, it can be argued both ways. :-)
00:55 TimToady indeed, what if you want ::T to be *only* the nominal type
00:55 TimToady and appy a different constraint?
00:56 jnthn TimToady: Well, ::T *is* only the nominal type.
00:56 TimToady :(Odd ::T $x, T where Even)
00:56 TimToady until a tighter type is bound
00:57 TimToady then it's actual type
00:57 jnthn rakudo: subset Even of Int where { $^n % 2 == 0 }; sub foo(::T $x) { say T.WHAT }; my Even $x = 42; foo($x)
00:57 p6eval rakudo 1b8355: OUTPUT«Int()␤»
00:57 jnthn TimToady: Well, thingy is...we've been talking so far about this as nothing more than signature syntax sugar.
00:57 TimToady s/tighter/derived/
00:58 jnthn Rather than analysing relations between the types.
00:58 TimToady en passant is supposed to mean the actual type of the argument
00:58 TimToady suppose you derive MyInt from Int
00:58 TimToady if you pass in a MyInt, T is MyInt, not Int
00:59 jnthn TimToady: It's whatever .WHAT on the arguemnt hands back.
00:59 jnthn TimToady: Oh, for sure, I agree.
00:59 TimToady but you said it was only the nominal type, which that ain't
01:00 jnthn TimToady: We really need to define some terms somewhere for what we call things. :-)
01:00 TimToady if you say :(Int ::T $x, T $y), then the nominal type is Int, but actual is MyInt
01:00 jnthn Nominal is a really bad word for what I want to express here really. I wish we had a better one.
01:01 TimToady nominal isn't bad at all if you're thinking about "name equiv" vs "structural equiv"
01:01 jnthn TimToady: Yes, but in :(Int ::T $x, T $y) then I see T as being bound to $x.WHAT
01:01 jnthn Which I'd say is the nominal type of $x
01:02 jnthn Well, assuming we found $x already of course.
01:02 TimToady that's the storage type
01:02 jnthn heh :-)
01:02 TimToady no, $x's storage type may have no name at all
01:02 jnthn Right, thus why we need to sort out the terminology on types. :-)
01:02 TimToady a storage type is what the subset type is actually stored as
01:02 TimToady the WHAT type
01:03 jnthn I probably when I say "nominal" so often maybe what to actually say "storage type"
01:03 TimToady but that's not what I've been calling nominal type at all
01:03 TimToady I only mean the declared type in the sig
01:03 jnthn Ah, OK.
01:03 jnthn I think we're meaning the same thing and using different words. :-)
01:03 moritz_ rakudo: multi a(::T $x, T $y) { 1 }; multi a($x, $y) { 2 }; say a([], {})
01:03 p6eval rakudo 1b8355: OUTPUT«2␤»
01:05 jnthn So, ::T captures the storage type?
01:05 jnthn Is that fitting with how you'd describe it?
01:05 TimToady yes
01:05 jnthn OK.
01:05 jnthn I can accept that way of calling things. :-)
01:05 TimToady we already know the nominal type, so no need to capture it
01:06 jnthn I've been using nominal type in far wider sense than you.
01:06 jnthn Or differently, at least.
01:06 TimToady $x.WHAT can very easily give you a nameless type
01:06 jnthn Yes. Nominal is a bad word for the thingy I wanted to express.
01:06 TimToady not much nominal about that
01:06 jnthn Indeed.
01:07 jnthn It'd probably be worth trying to document our terms for this stuff a bit more somewhere.
01:07 TimToady but fine for the declared type, as in the meaning of nominal: "that which we assume"
01:08 TimToady as in "Larry is nominally a linguist" :)
01:08 jnthn ;-)
01:09 jnthn OK, I think we're agreeing. Or at least, agreeing more than disagreeing. :-)
01:09 lumi joined #perl6
01:10 moritz_ now if you want to make me happy, put the intersection of your agreeing into the spec somewhere ;-)
01:11 * jnthn points at TimToady: he's in a far better timezone for being coherent than me ;-)
01:14 moritz_ speaking of timezones... it's 3AM, I should try to get some sleep too
01:14 moritz_ TTFN
01:15 jnthn aye, 3am here too...I should perhaps do similar :-)
01:17 orafu joined #perl6
01:20 rhr_ joined #perl6
01:26 M_o_C joined #perl6
01:42 pugs_svn r28709 | lwall++ | [S06]
01:42 pugs_svn r28709 | document both nominal and storage aspects of ::T capture
01:42 pugs_svn r28709 | clarify that T does not require an exact match
01:42 pugs_svn r28709 | rename section to En passant type capture
02:15 TiMBuS joined #perl6
02:35 JimmyZ joined #perl6
02:55 envi^home joined #perl6
03:15 lumi joined #perl6
03:18 rhr joined #perl6
03:22 TiMBuS joined #perl6
03:31 pugs_svn r28710 | lwall++ | [Cursor] switch back to YAML::XS because Syck can't load STD.pm.syml
03:34 diakopter o_O
03:35 TimToady why t/spec/S05-grammar/std.t was coredumping
03:36 TimToady sorry if you have to download XS
03:36 TimToady XS is a bit faster, actually
03:37 diakopter viv already used ::XS
03:37 TimToady hah
03:37 TimToady maybe that's why cursor could load using Syck :)
03:37 TimToady well, probably not
03:38 * diakopter runs make again 2C what he canC
03:38 TimToady make clean
03:38 diakopter k
03:42 diakopter ./tryfile STD.pm took about 4% less time than r28709
03:42 diakopter within the error margin for linux64 in vmware on win64
03:43 diakopter how would one run a nytprof on ./tryfile STD.pm
03:44 diakopter (to get the .html results you pasted awhile back)
03:44 diakopter (is there a switch somewhere)
03:44 agentzh joined #perl6
03:45 TimToady perl -d:NYTProf tryfile STD.pm, I think
03:47 * diakopter builds perl-devel-nytprof from svn trunk
03:51 diakopter JSON::Any depends on JSON::DWIW, but it doesn't say it does.
03:54 diakopter er something.
03:55 pugs_svn r28711 | kyle++ | [t/spec] Tests for "note" based on "say" tests
03:55 pugs_svn r28712 | kyle++ | [t/spec] more testing of bare say
03:57 davidm123 joined #perl6
03:58 davidm123 is there a robust implementation of perl6 sigils in perl5? (not some source filtering hack)
03:59 TimToady I don
03:59 TimToady I don't know of any such
03:59 TimToady it would be difficult to bypass the lexer without a source filter
04:00 TimToady that's one of the reasons Perl 6 does it differently :)
04:01 davidm123 the peculiarities of perl5 sigils have been known for many years.
04:01 davidm123 one might think there were some bandaid (not that we need to wait a decade for perl6 :) )
04:01 TimToady alas, we brainwashed people too thoroughly about the righteousness of Perl 5's sigil system
04:03 TimToady unfortunately, to change the sigils, you have to change how the slices work, and when you do that, there are ramifications on how context must be applied lazily rather than eagerly
04:08 * diakopter continues to wait for nytprof tryfile std
04:09 diakopter go go gadget cpu fan
04:11 diakopter hrm.  400MiB nytprof.out
04:12 am0c joined #perl6
04:14 sparc joined #perl6
04:15 diakopter methinks for the next attempt I'll   export NYTPROF=stmts=0
04:15 TimToady the stmts are the cool part
04:16 diakopter ok 08:27 367m  - 644785257 2009-10-06 03:51 nytprof.out
04:16 diakopter erm. time must be off.
04:17 diakopter well, not _time_, but the vm's clock. :)
04:18 diakopter phenny: where'd you go
04:19 diakopter Profile of tryfile for 519s, executing 50114444 statements and 7876888 subroutine calls in 120 source files and 923 string evals.
04:20 diakopter only 923?
04:22 diakopter how did 44947 calls to Cursor::_STARr take -424s
04:22 diakopter (exclusive)
04:24 TimToady bbl &
04:26 KyleHa joined #perl6
04:28 KyleHa A grep for 'quietly' in the spec turns up exactly one line.  It's a list with 'try' and 'void' and stuff.  It was added at the same time as 'note'.  Does it suppress $*ERR or something?
04:34 alester joined #perl6
04:42 jrtayloriv joined #perl6
04:44 araujo joined #perl6
04:46 payload joined #perl6
04:47 am0c joined #perl6
04:48 cotto joined #perl6
05:00 JimmyZ rakudo: List.HOW.parents(List).perl.say;
05:00 p6eval rakudo 1b8355: OUTPUT«[Any, Object]␤»
05:17 perler joined #perl6
05:18 jrtayloriv joined #perl6
05:51 eternaleye joined #perl6
05:59 sbp joined #perl6
06:00 nsh joined #perl6
06:08 [particle] joined #perl6
06:09 infrared joined #perl6
06:10 xinming joined #perl6
06:10 Grrrr joined #perl6
06:12 simcop2387 joined #perl6
06:15 rapacity joined #perl6
06:15 synth joined #perl6
06:15 yahooooo joined #perl6
06:16 pugs_svn joined #perl6
06:18 athomason joined #perl6
06:18 colomon joined #perl6
06:21 takadonet joined #perl6
06:22 sjohnson joined #perl6
06:23 zerhash joined #perl6
06:24 arthur-_ joined #perl6
06:24 buubot joined #perl6
06:34 gbacon joined #perl6
06:38 pugs_svn r28713 | lwall++ | [viv] unbitrot -6 roundtripping; also unbitrot some -5 functionality
06:57 tak11 joined #perl6
07:03 [particle]1 joined #perl6
07:14 tak11 joined #perl6
07:19 zloyrusskiy joined #perl6
07:21 tak` joined #perl6
07:32 am0c joined #perl6
07:44 [particle]1 left #perl6
07:47 rfordinal joined #perl6
07:51 Bzek joined #perl6
08:17 JimmyZ_ joined #perl6
08:37 eiro joined #perl6
08:37 BinGOs joined #perl6
08:50 rfordinal left #perl6
09:05 ShaneC joined #perl6
09:23 phenny joined #perl6
09:42 mikehh rakudo (1b83557) builds on parrot r41789 make test / make spectest_smolder (up to 28713 -> #28801) PASS - Ubuntu 9.04 amd64
09:46 zloyrusskiy joined #perl6
09:59 pmurias joined #perl6
10:05 meppl joined #perl6
10:06 mikehh holy ... rakudo spectest_smolder reports tests as 35,121 ok, 0 failed, 520 todo, 6,851 skipped and 0 unexpectedly succeeded
10:07 abra joined #perl6
10:07 payload joined #perl6
10:07 synth joined #perl6
10:10 carlin almost 7000 skipped?
10:11 pmurias_ joined #perl6
10:16 icwiener joined #perl6
10:16 pmurias perl6: my @array = [];@array[1] = 23;@array[500] = 4;say @array.elems;
10:17 p6eval sprixel 28713: OUTPUT«Sprixel Error: /_infix__S_Equal_/ not yet implemented; apologies from the crew!␤»
10:17 p6eval ..elf 28713, pugs, rakudo 1b8355: OUTPUT«501␤»
10:18 pmurias S32/Containers.pod mentions that in sparse types elems should return the actuall number of elems, why should the user know about an implementation default?
10:19 moritz_ pmurias: I think "sparse types" are things like hashes
10:20 pmurias Sparse array types
10:22 moritz_ hm
10:22 moritz_ my @a is SparseArray; ?
10:23 pmurias not specced
10:23 moritz_ aye
10:23 pmurias what should it change? how elems works? how map works?
10:23 moritz_ but it would only make sense in that context
10:23 moritz_ that's an interesting question
10:24 moritz_ I only know sparse vectors and matrices from linear algebra packages
10:24 moritz_ if you map over one, it wouldn't make sense to iterate over all the missing items
10:24 moritz_ so it would have to indicate which element is currently being processed
10:25 moritz_ so maybe it'd just passin a pair of index => value to the map closure?
10:27 pmurias you mean in SparseArray map would work differently (get an additional index)?
10:27 moritz_ yes
10:27 moritz_ but I think that's not something you worry about when implementing the classical Array type
10:27 pmurias wouldn't it be best to just move SparseArray to CPAN and delete the mention?
10:28 moritz_ +1
10:28 moritz_ so feel free ;-)
10:29 moritz_ fglock++ btw
10:32 pugs_svn r28714 | pmurias++ | [mildew-js] t/01-sanity/05-sub.t passes
10:32 pugs_svn r28715 | pmurias++ | remove mention of sparse arrays from S32
10:33 pmurias bjj&
10:36 moritz_ http://perlgeek.de/blog-en/mis​c/fun-and-no-fun-with-svg.html # for the SVG fans - not quite Perl 6 though :)
10:44 spinclad rakudo: my @s is SparseArray; for @s.kv -> $k, $v { ... }
10:44 p6eval rakudo 1b8355: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:is'␤in Main (src/gen_setting.pm:204)␤»
10:45 envi^home joined #perl6
10:46 envi^home joined #perl6
10:47 spinclad i don't think map or for should work differently (for @s { ... } would iterate densely), as .kv should already be available to display sparseness.
10:47 moritz_ that's a decision best left to the one who implements it as a module ;-)
10:48 spinclad sure
10:48 spinclad but i'd design it on those principles
10:48 moritz_ well, .map could also do evil magic
10:48 moritz_ like, assume the block is pure
10:49 moritz_ and the result for a missing element
10:53 spinclad ... so @sparse.map would give another sparsearray.  yeah, i could see that.
10:54 spinclad (in which case i don't yet see why the block would have to know which element.)
10:56 sundar joined #perl6
10:58 meteorjay joined #perl6
11:03 abra joined #perl6
11:04 FOAD_ joined #perl6
11:09 masak joined #perl6
11:10 masak best weekend salutations, #perl6!
11:10 masak finally the work week is over, and the real coding begins!
11:12 abra joined #perl6
11:26 ferodo joined #perl6
11:29 ferodo left #perl6
11:31 araujo joined #perl6
11:35 huf joined #perl6
11:38 abra joined #perl6
11:38 masak "Complexity is never eliminated, merely reduced or displaced" -- slide 124 of http://www.slideshare.net/cxp​artners/secrets-of-simplicity -- sound familiar? :)
11:39 abra joined #perl6
11:45 masak moritz_: (re SVG animations) I find http://www.codedread.com/yastgame.php to be quite an impressive proof-of-concept. seems much can be done today with SVG and judicious JavaSCript.
11:51 NorwayGeek joined #perl6
11:53 jnthn masak: heh, sounds like the waterbed theory of... :-)
11:53 masak indeed.
11:53 NorwayGeek joined #perl6
11:56 NorwayGeek joined #perl6
11:56 NorwayGeek joined #perl6
11:56 * jnthn is probably caught up on sleep now
11:58 ejs joined #perl6
11:58 NorwayGeek joined #perl6
11:59 masak jnthn: welcome back! it's so amazing to be part of Rakudo development right now -- even more so now that you're back and doing commits. :)
12:00 sjohnson hey man
12:00 NorwayGeek joined #perl6
12:00 jnthn masak: I enjoyed my trip, but it is nice to be back and hacking on stuff again.
12:01 masak sjohnson: yo frood.
12:02 moritz_ masak: \o/ cool site. But I was actually referring to SVG animations without JS
12:02 moritz_ http://www.w3.org/TR/SVG/animate.html
12:03 KyleHa joined #perl6
12:04 jnthn masak: It's exciting that at the same time both regex/parsing issues and signature binding issues are being worked on - two of the biggest tasks that need doing before Rakudo *. :-)
12:05 * jnthn feels like hacking on more Rakudo stuff today
12:05 masak moritz_: I know. but JS is a workaround.
12:10 moritz_ just like in the days of Netscape and Mosaic ;-)
12:11 masak except it's on different levels of sophistication.
12:12 jnthn Yeah, now it's three or four browsers instead of 2 that you have to worry about. ;)
12:12 jnthn Only two possibilities was so 1990s, man.
12:13 moritz_ doing websites just for fun means that I can ignore those pesky not-quite-browsers which refuse to render according to standards
12:17 cosimo moritz_: which ones?
12:17 moritz_ IE\d for some values of \d
12:19 jnthn I actually have some clients where they consider the cost of supporting IE6 higher than the revenue supporting it would bring in.
12:19 * jnthn loves having a business case for not supporting IE6.
12:19 jnthn On the other hand, there are others where systems are still used by many in the corporate world, many of whom are stuck with IE6, so it has to be supported.
12:19 moritz_ some big sites (not sure which ones... digg? youtube?) are slowly dropping IE6 support
12:20 jnthn *nod*
12:20 jnthn I'm not surprised. They're businesses too.
12:20 jnthn And need to make moneys.
12:20 jnthn In general, it goes "don't do anything to purposefully break IE6, but don't worry about any bugs too much either"
12:23 JimmyZ joined #perl6
12:27 moritz_ my homepage still has 0.5% access with IE 4 *gulp*
12:28 moritz_ don't know how many of these referrers are forged, though
12:30 NorwayGeek joined #perl6
12:31 jnthn 4?!
12:32 moritz_ 4
12:32 pugs_svn r28716 | jimmy++ | [zh-cn/syn/S02-bits.pod] added a bit random translations.
12:35 masak I'm seeing false positive "Redeclaration of variable $pub" errors in some moderately complex code I'm toying with. I haven't had time to isolate the cause, but I'm pretty sure it's a rakudobug.
12:35 jnthn Oddness.
12:35 jnthn But quite possibly.
12:36 jnthn masak: Does std warn in the same way?
12:36 jnthn If not, I expect we'll inherit a fix during switching more to that.
12:36 moritz_ now you're starting with pubs too?
12:36 masak moritz_: I did it to make you happy!
12:36 masak didn't want to use $foo or something.
12:36 moritz_ :-)
12:36 jnthn $pub! \o/
12:37 JimmyZ spectest-progress.csv hadn't been updated for some days.
12:37 masak jnthn: sure, but I have my Rakudo user hat on. I prefer to see this bug classified and reported in RT, regardless of its possible fate in the near future.
12:37 masak JimmyZ: I think pmichaud has too much fun with his nqp-rx repo :)
12:38 masak er, too much fun to care about administrivia, not too much fun in general.
12:39 jnthn masak: Oh, I wasn't advocating not reporting it, just speculating on how it might get fixed. :-)
12:39 JimmyZ masak: ;)
12:40 masak jnthn: since it has no adverse effects, there's no rush. better to fix the postcircumfix:<{ }> parsin issue, for example. :)
12:40 masak s/sin/sing/
12:41 jnthn We have a postcircumfix parsing issue?
12:41 masak oh, yes.
12:42 masak two, actually. but the second one is run-time, not parsing.
12:43 masak the parsing issue causes Rakudo to be confused whenever it sees a line-ending closing block curly without a semicolon, as soon as someone declares a method postcircumfix:<{ }>.
12:43 masak the run-time issue prevents direct use of .{} inside a postcircumfix:<{ }> method. ditto .[] and postcircumfix:<[ ]>.
12:44 JimmyZ this issue? I think I had met it.
12:45 masak the second one is workaroundable. I've been meaning to write that in the ticket.
12:45 masak just do the inner hash or array access in another class.
12:46 jnthn masak: oh, ouch
12:46 jnthn I think I know how to fix the runtime one
12:46 masak the first one is... highly... annoying. things that used to work suddenly stop working when a postcircumfix:<{ }> is introduced.
12:46 jnthn The parsing one is, I'm afraid, rather more confusing...
12:46 jnthn But then, I'm not the parsing whizz.
12:46 * masak neither
12:47 JimmyZ rakudo: class Alpha { has @!a = < beta gamma >; method postcircumfix:<[ ]>($key) { return @!a[$key]; }; }; my $a = Alpha.new; say $a[1];
12:47 p6eval rakudo 1b8355: OUTPUT«No such attribute '@!a'␤in Main (src/gen_setting.pm:204)␤»
12:47 JimmyZ rakudo: class Alpha { has @!a = < beta gamma >; method postcircumfix:<{ }>($key) { return @!a[$key]; }; }; my $a = Alpha.new; say $a{1};
12:47 p6eval rakudo 1b8355: OUTPUT«gamma␤»
12:48 masak aye, that's the one.
12:48 masak accesses of the same type as the one the method is declaring don't work.
12:48 JimmyZ the parser was confused.
12:49 masak well, something was. :)
12:50 masak the 'No such attribute @!a" comes from the fact that the method makes a _second_ call to itself, with the @!a array as invocant. Naturally, it has no @!a.
12:51 jnthn oh, youch.
12:51 jnthn And yes, I think I know how to fix that one.
12:51 jnthn But I'm currently in the middle of giving signautre objects storage for default value closures and stubbing in storage of sub-signatures.
12:52 masak jnthn++
12:52 masak no rush.
12:52 JimmyZ jnthn++ again.
12:52 jnthn After those are done, I think signature objects will have everything the binder could possibly want to know.
12:53 masak JimmyZ: how's the translation work going?
12:54 JimmyZ I had somebody else on the working team. Do I describe it rightly ?
12:55 jnthn had or have? :-)
12:55 moritz_ rakudo: say ~{ a=>3 b=>10 c=>4 d=>-7>}.sort: -*.value
12:55 p6eval rakudo 1b8355: OUTPUT«Confused at line 2, near "b=>10 c=>4"␤in Main (src/gen_setting.pm:204)␤»
12:55 masak JimmyZ: you reqcruited a co-worker?
12:55 moritz_ rakudo: say ~{ a=>3 b=>10 c=>4 d=>-7>}.sort: *.value
12:55 masak s/q//
12:55 p6eval rakudo 1b8355: OUTPUT«Confused at line 2, near "b=>10 c=>4"␤in Main (src/gen_setting.pm:204)␤»
12:55 JimmyZ masak: yep
12:55 moritz_ rakudo: say ~{ a=>3 b=>10 c=>4 d=>-7}.sort: *.value
12:55 p6eval rakudo 1b8355: OUTPUT«Confused at line 2, near "b=>10 c=>4"␤in Main (src/gen_setting.pm:204)␤»
12:55 moritz_ rakudo: say ~{ a=>3, b=>10, c=>4, d=>-7}.sort: *.value
12:55 masak JimmyZ: or should I say 翻译工作怎么样? :)
12:55 jnthn std: say ~{ a=>3 b=>10 c=>4 d=>-7}.sort: *.value
12:55 p6eval rakudo 1b8355: OUTPUT«d  -7 a    3 c     4 b     10␤»
12:55 p6eval std 28716: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/2ehl3pCybl line 1:␤------> [32msay ~{ a=>3 [33m⏏[31mb=>10 c=>4 d=>-7}.sort: *.value[0m␤    expecting any of:␤    bracketed infix␤  infix stopper␤    standard stopper␤ statement modifier loop␤  terminator␤FAILED 00:01
12:55 p6eval ..110m␤»
12:55 masak moritz_: commas.
12:55 KyleHa joined #perl6
12:55 JimmyZ masak: good ;)
12:55 moritz_ rakudo: say ~{ a=>3, b=>10, c=>4, d=>-7}.sort: -*.value
12:55 p6eval rakudo 1b8355: OUTPUT«get_number() not implemented in class 'Sub'␤in Main (src/gen_setting.pm:204)␤»
12:55 moritz_ masak: aye
12:56 moritz_ rakudo: say *.value.perl
12:56 JimmyZ masak: a better one. 翻译工作做的怎么样了。
12:56 p6eval rakudo 1b8355: OUTPUT«{ ... }␤»
12:56 moritz_ rakudo: say *.value.WHAT
12:56 p6eval rakudo 1b8355: OUTPUT«Block()␤»
12:56 moritz_ that should be a WhateverCode
12:56 moritz_ which explains why -*.value doesn't work
12:56 masak JimmyZ: ah. thanks.
12:56 masak JimmyZ: 了 because the work is ongoing?
12:57 JimmyZ masak: yep
12:57 masak \o/
13:00 jnthn (paradise lost)++ # nice sig hacking music
13:01 masak today's spec test results are in: PASS. good work, people.
13:02 abra_ joined #perl6
13:02 jnthn phew
13:02 jnthn masak: Don't worry, I'll probably fail at linker usage and break the build on some platform today. :-/
13:02 jnthn Actually, maybe I'll do that in a branch. :-)
13:03 moritz_ (easy branching)++
13:03 moritz_ git++
13:04 masak the reason I'm not complaining more about the lack of useful line numbers in Rakudo error messages, is that by now, I'm used to it.
13:04 masak seems we had useful line numbers for a while, but not long enough for me to get used to that. :P
13:05 jnthn So you get un-useful ones now? :-/
13:05 masak well, I get files that aren't mine and numbers that don't make sense.
13:06 abra_ joined #perl6
13:06 jnthn ah, that
13:06 moritz_ at gen_setting.pm:1192 or so
13:06 JimmyZ joined #perl6
13:06 jnthn nod
13:06 moritz_ and there's nothing interesting at that line either ;-)
13:06 moritz_ just a closing curly bracket or so
13:06 masak actually, I've been getting lower line numbers lately. 204 or so.
13:07 * moritz_ wonders if they'll become negative eventually :-)
13:08 colomon Did Rakudo stop returning line numbers for errors in ordinary code somewhere along the line as well?
13:08 moritz_ rakudo: die 'foo'
13:08 abra_ joined #perl6
13:08 p6eval rakudo 1b8355: OUTPUT«foo␤in Main (/tmp/TRISBPtRJn:0)␤»
13:08 moritz_ wow, line 0
13:08 moritz_ *that* used to work.
13:08 colomon Looking at my hacking last night, it seems like the error messages are much better, but lack line numbers.
13:09 jnthn Ouch.
13:09 * jnthn suspects some Parrot change. :-/
13:11 moritz_ typical for things we don't test.
13:12 jnthn Yeahbut we do have some tests for annotations stuff in Parrot at least.
13:12 moritz_ jnthn: how much work would it be to change format from (%s:%d) to (file %s, line %d)?
13:12 jnthn Evidently, not good enough ones.
13:12 NorwayGeek joined #perl6
13:12 jnthn moritz_: little, but motivation?
13:12 moritz_ it currently looks like noise
13:13 moritz_ and I notice that even in perl 5, many newbies ignore the line numbers, even if they contain valuable information
13:13 KyleHa rakudo: say()
13:13 p6eval rakudo 1b8355: OUTPUT«say requires an argument at line 2, near ""␤in Main (src/gen_setting.pm:2555)␤»
13:13 moritz_ and not explicitly stating that it's a line number will only increase that
13:13 JimmyZ rakudo: say 'foo'
13:13 moritz_ KyleHa: parse errors still seem to have correct line numbers
13:13 p6eval rakudo 1b8355: OUTPUT«foo␤»
13:13 JimmyZ rakudo: exit 'foo'
13:13 p6eval rakudo 1b8355:  ( no output )
13:14 jnthn moritz_: Feel free to tweak it.
13:14 jnthn moritz_: It's in perl6.pir, there's a sub I think for generating the output.
13:14 jnthn Light PIR hacking required. :-)
13:15 KyleHa Is 'say()' actually an error?
13:15 rfordinal joined #perl6
13:15 NorwayGeek joined #perl6
13:15 jnthn KyleHa: aye
13:15 KyleHa rakudo: say ()
13:15 jnthn std: say()
13:16 p6eval rakudo 1b8355: OUTPUT«␤»
13:16 p6eval std 28716: OUTPUT«ok 00:01 103m␤»
13:16 jnthn but not one that std catches.
13:16 KyleHa std: say ()
13:16 p6eval std 28716: OUTPUT«ok 00:01 106m␤»
13:16 jnthn KyleHa: say() and say () are different things.
13:16 KyleHa jnthn: Guess so.  I'll adjust my tests...
13:16 colomon rakudo: say;
13:16 jnthn :-)
13:16 p6eval rakudo 1b8355: OUTPUT«say requires an argument at line 2, near ";"␤in Main (src/gen_setting.pm:2538)␤»
13:17 jnthn moritz_: Oh, I found the constraints introspection bug, btw
13:17 moritz_ \o/
13:17 colomon Is there some good reason we shouldn't support say with no arguments?
13:17 moritz_ colomon: perl 5 hackers who think it defaults to $_
13:17 jnthn moritz_: I'd typo'd the named parameter when calling the constructor. :-S
13:17 colomon moritz_: ..... aye, that's a good reason.
13:18 moritz_ colomon: I sometimes find that annoying, and want a 'no perl5_compat;' pragma ;-)
13:18 JimmyZ I just want print "\n",can't I just use 'say'?
13:18 moritz_ JimmyZ: that's what we've just discussed.
13:19 colomon well sure, it seems like a horrible kludge to have this elegant say command that replaces print "\n" in every case except the simplest.
13:19 JimmyZ rakudo: print "\n";
13:19 p6eval rakudo 1b8355: OUTPUT«␤»
13:19 NorwayGeek joined #perl6
13:19 carlin rakudo: say '';
13:19 p6eval rakudo 1b8355: OUTPUT«␤»
13:19 jnthn rakudo: sub nl() { print "\n" }; nl
13:19 jnthn ;-)
13:19 p6eval rakudo 1b8355: OUTPUT«␤»
13:20 pugs_svn r28717 | kyle++ | [t/spec] say() really is an error
13:22 pugs_svn r28718 | kyle++ | [t/spec] much faster test of the same thing
13:24 ruoso joined #perl6
13:28 jnthn masak: oh ouch, I found a snag in fixing that postcircumfix bug...it's not quite so easy after all :-/
13:28 moritz_ pmichaud had an analysis of that bug a few days ago
13:29 masak jnthn: don't let yourself get distracted by my ranting. it's not urgent anyway.
13:29 moritz_ http://irclog.perlgeek.de/​perl6/2009-10-05#i_1570424 and onwards
13:29 moritz_ masak: if you remeber the ticket number, maybe you could add that IRC log link to the ticket
13:30 masak moritz_: good idea. I will.
13:30 masak I'll also add my workaround.
13:31 masak rakudo: my %h = a => "b"; my @a = {%h}; say @a.perl
13:31 p6eval rakudo 1b8355: OUTPUT«[{ ... }]␤»
13:31 masak by S04:1324, this should be a hash, not a closure.
13:31 masak is this known/ticketed?
13:31 jnthn masak: Yeah, I'm gonna leave it.
13:32 jnthn masak: What I was going to do is a bit of a workaround anyway, though not a really awful one.
13:32 moritz_ masak: it's tested at least
13:32 jnthn But it tickles another issue, so needs a tad more thought.
13:32 masak moritz_: oki.
13:32 jnthn masak: That one should be a hash? ah.
13:33 jnthn Just means tweaking the thingummy that decides. :)
13:34 jnthn It'll be an issue somewhere in method circumfix($/, $key) {
13:35 jnthn oh, I think I see what's wrong
13:35 jnthn rakudo: my %h = a => "b"; my @a = {%h, a => 42}; say @a.perl
13:35 p6eval rakudo 1b8355: OUTPUT«[{"a" => 42}]␤»
13:35 jnthn *nod*
13:35 jnthn And you're sure by the spec {%h} is meant to be a hash, yes?
13:37 moritz_ yes
13:37 moritz_ the spec has that as an example explicitly
13:37 moritz_ $hash = { %stuff };
13:38 jnthn Try this patch
13:38 jnthn http://gist.github.com/206842
13:40 jnthn Bwaha. So env.t has failed on my platform for a little while...probably some weird Parrot and Win32 issue. Anyway, I just glanced the error message. :-)
13:41 jnthn t\spec\S02-magicals\env...................................ok 8/14Failed allocation of 1919968627 bytes
13:41 jnthn Parrot VM: PANIC: Out of mem!
13:44 synth joined #perl6
13:49 icwiener_ joined #perl6
13:49 moritz_ it tries to allocate 1.8G at once? :-)
13:51 jnthn yeah!
13:52 jnthn OK, when I came back from vacation, Rakudo + the version of Parrot we were using then took 1.06s to start and say hello world. Rakudo today with just about latest Parrot is down to 0.79 for me.
13:52 moritz_ cool
13:53 jnthn Which is still way too much, but a decided improvement.
13:56 jnthn yay
13:56 jnthn t\spec\S06-signature\introspection........................ok 5/39 skipped: various reasons, 2/39 unexpectedly succeeded
13:56 jnthn TODO PASSED tests 33, 36
13:56 jnthn I'm guessing thow are the constraitns ones.
14:02 icwiener-_- joined #perl6
14:14 carlin rakudo: my $i = 0; loop { $i++; if $i == 5 { break; } if $i < 10 { die ''; } }; say 'Foo';
14:14 p6eval rakudo 1b8355: OUTPUT«Died␤in Main (/tmp/nqspaAZxaQ:2)␤»
14:14 carlin rakudo: my $i = 0; loop { $i++; if $i == 5 { break; } if $i > 10 { die ''; } }; say 'Foo';
14:14 p6eval rakudo 1b8355: OUTPUT«␤Died␤in Main (/tmp/EPevxgOixK:2)␤»
14:15 carlin rakudo: say break.WHAT;
14:15 p6eval rakudo 1b8355: OUTPUT«␤Null PMC access in find_method()␤in Main (src/gen_setting.pm:204)␤»
14:16 Psyche^ joined #perl6
14:17 colomon carlin: isn't it "last" rather than break?
14:18 carlin rakudo: my $i = 0; loop { $i++; if $i == 5 { last; } if $i > 10 { die ''; } }; say 'Foo';
14:18 p6eval rakudo 1b8355: OUTPUT«Foo␤»
14:18 carlin Ah
14:18 carlin I was trying to figure out what 'break' was. Seems to just print a newline.
14:18 carlin rakudo: break
14:18 p6eval rakudo 1b8355: OUTPUT«␤»
14:20 tak11 joined #perl6
14:26 justatheory joined #perl6
14:29 dalek rakudo: bd7966f | jonathan++ | src/ (15 files):
14:29 dalek rakudo: Start to store the default value as a closure inside the signature object. Also stub in space for sub-signatures - we don't support them just yet, but it'll be ready for when we do. Also fix a typo that caused constraints introspection to be broken.
14:29 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​d7966f695b87d1ae9c192908045fbead1ee64f6
14:35 dalek rakudo: 4cdac8a | moritz++ | perl6.pir:
14:35 dalek rakudo: make backtraces a bit less noisy
14:35 dalek rakudo: Hopefully marking line numbers with the word "line" makes their purpose more
14:35 dalek rakudo: obvious.
14:35 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​cdac8a020c0e98b53ed5f4dcee019adb8a80c15
14:36 jnthn moritz++
14:37 jnthn Also for tests, which have made me fix up one other thingy. :-)
14:37 pugs_svn r28719 | colomon++ | [spec/t] Start of test file to give a solid workout to the operator overloading facilities.
14:41 jnthn moritz_: patch looks good to me
14:43 pugs_svn r28720 | jnthn++ | [t/spec] A little unfudging of some now-passing tests.
14:43 pugs_svn r28721 | jimmy++ | [zh-cn/syn/S12-objects.pod] added Chinese transcript for S12, edgar++ for translation.
14:44 pugs_svn r28722 | jimmy++ | [zh-cn/syn] updated README for edgar++
14:46 dalek rakudo: 925fd06 | jonathan++ | src/ (2 files):
14:46 dalek rakudo: Tweak to .constraints to pass another spectest.
14:46 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​25fd06b2cf044a604b7aafbc99469eb4d28f4ef
14:47 synth joined #perl6
14:48 pmurias joined #perl6
14:53 TSa joined #perl6
14:53 pmurias ruoso: do you have any js experience?
14:56 colomon jnthn: there is an excellent error  message when there are multiple matching signatures, listing all the matches.
14:56 colomon jnthn: is there any possibility of getting the same sort of message when you incorrectly call new?
14:57 colomon right now you get something like "too many arguments passed (5) - 1 param expected" even though 4 arguments would have been fine...
14:58 am0c joined #perl6
15:01 jnthn colomon: Yes.
15:02 jnthn colomon: Once I get the binder re-working done, we'll have a *lot* more control over the error messages.
15:07 pmurias perl6: say [].shift
15:07 p6eval rakudo 925fd0: OUTPUT«Undefined value shifted from empty array␤␤»
15:07 p6eval ..sprixel 28722: OUTPUT«Sprixel Error: /_dotty__S_Dot_/ not yet implemented; apologies from the crew!␤»
15:07 p6eval ..elf 28722, pugs: OUTPUT«␤»
15:10 pmurias we should spec what shifting an empty array does
15:11 TopoMorto joined #perl6
15:11 jnthn pmurias: I suspect failure object (as Rakudo gives)
15:12 pmurias rakudo: if ([].shift) {say
15:12 p6eval rakudo 925fd0: OUTPUT«say requires an argument at line 2, near ""␤in Main (file src/gen_setting.pm, line 2540)␤»
15:12 pmurias rakudo: if ([].shift) {say "a"} else {"b"}
15:12 p6eval rakudo 925fd0:  ( no output )
15:12 pmurias rakudo: if ([].shift) {say "a"} else {say "b"}
15:12 p6eval rakudo 925fd0: OUTPUT«b␤»
15:12 pmurias rakudo: [].shift
15:12 p6eval rakudo 925fd0:  ( no output )
15:13 pmurias jnthn: seems resonable, the spec should mention it though
15:14 jnthn pmurias: Aye.
15:14 jnthn Patches welcome. ;-)
15:15 pmurias really? i'm thinking just commiting is the resonable thing here ;)
15:16 jnthn :-P
15:19 zloyrusskiy joined #perl6
15:23 pugs_svn r28723 | pmurias++ | [S32] Array.shift and Array.pop return a failure if the @array is empty
15:29 jnthn I've just created a branch resig, which is holding the signature binding switch. At the moment all I've done is tweak the build process a bit so we build bind.dll (or whatever your platform's extension is).
15:29 jnthn If anyone wants to test commit 42cbb57d621489be216d437d499aac8a996b33d5 and see if it builds on other platforms, and fix it if not, that's be great.
15:30 jnthn And for the next days this is where I'll be committing stuff / progress.
15:30 masak hm, src/gc/api.c:248: failed assertion 'PObj_is_PMC_TEST(obj)'
15:30 masak that's bad, no?
15:30 jnthn Yes. Where'd you hit that?
15:31 masak in my awesome program.
15:31 masak it sort of froze and then did that.
15:31 masak I haven't tried to reproduce it yet.
15:31 jnthn I did manage to get that one under the debugger recently but it was a tad heisenbug-ish and didn't happen not under the debugger. :-/
15:31 jnthn I fear there's a lurking GC-ish bug.
15:32 masak oh, doesn't matter. :) it occurs after the test I'm working on anyway. :P
15:32 jnthn Oh wow
15:32 moritz_ jnthn: I spectestest your {%h}-is-a-hash patch, and it's all green (+1 passing TODO) - would you commit it?
15:33 jnthn moritz_: Oh, I diff'd and then threw it away ;-)
15:33 jnthn 'cus I had a bunch of other bits going on
15:33 jnthn Feel free to apply it yourself.
15:33 moritz_ ok
15:33 jnthn masak: Heh. Crash is in Parrot_gc_mark_PMC_alive_fun it seems.
15:33 jnthn I don't consdier this very fun. ;-)
15:34 masak heh.
15:34 jnthn Hmm
15:34 jnthn Parrot_gc_mark_PMC_alive(INTERP, ctx->current_sub);
15:34 masak aye, that is number 2 in my stacktrace.
15:34 jnthn youch
15:35 jnthn That's quite a deep stacktrace too.
15:35 masak only 31 steps here.
15:35 masak but it went away now.
15:35 masak probably never existed.
15:35 masak moving right along.
15:36 jnthn Sadly, it very much exists. :-(
15:36 moritz_ cc: src/binder/bind.ar: No such file or directory
15:36 * carlin got that too
15:37 pugs_svn r28724 | kyle++ | [t/spec] [].shift and [].pop return Failure, per spec r28723
15:37 dalek rakudo: 3208e7b | jonathan++ | src/parser/actions.pm:
15:37 dalek rakudo: {%h} constructs a Hash, not a closure
15:37 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3​208e7b7fe7f8034f662b0025b942d2214b8203b
15:38 * KyleHa loves spectest_smolder
15:39 KyleHa jdv79++ # smolder spectest reporting
15:40 jnthn moritz_: Hmm. I wonder if I shoulda used $(A) instead of $(AR) ?
15:40 moritz_ no idea... have to run now
15:40 jnthn OK
15:40 moritz_ will look into it later tonight, hopefully
15:40 jnthn moritz_: OK, thanks.
15:40 jnthn It's probably going to be some days until this branch gets to the point of being ready to merge.
15:40 jnthn masak: Seems a context holds a junk Sub pointer.
15:41 masak jnthn: ok.
15:42 masak oh ouch, now I got it again, much earlier in the test suite. :(
15:43 masak guess I'll just insert comments and meaningless print statements until it starts working again.
15:43 masak nobody promised that Perl 6 coding would be glamorous when I signed up... :)
15:47 jnthn masak: Under the debugger, I see it right away at startup.
15:48 masak meanwhile, over here, adding new stuff sporadically helped.
15:52 jnthn masak: Ah, some exploration later, I fear we may just have an "access to uninit'd memory"
15:52 masak that sounds reassuringly non-magical.
15:53 jnthn Trying a
15:53 jnthn ctx->current_sub       = PMCNULL;
15:53 masak I was afraid it might be something on the order of "we've freed this thing, but we can't know whether we have or not due to the Halting Problem".
15:53 jnthn Since it seems we were init'ing most things, but not that
15:53 jnthn Granted it will *usually* get filled with something meaningful.
15:54 diakopter http://www.perlcabal.org/syn/S16.html  reports an error at the bottom; also Basics.pod refers to S16 by an older name
15:55 diakopter also syn/index.html refers to S16 by even another name
15:56 jnthn oh hey, the segfault went away
15:56 * jnthn runs Parrot tests, then commits
15:58 colomon jnthn: (re better error reporting) yay!
16:02 diakopter anyone: which S16 is correct
16:02 diakopter title
16:04 TimToady agh, p{} must die, I think
16:04 pmurias diakopter: the most correct S16 lives in the pugs repo
16:04 jnthn masak: Fix committed to Parrot.
16:04 jnthn masak: Bump to PARROT_REVISION coming.
16:04 masak jnthn++
16:04 jnthn That was a happily easy gc segv to fix.
16:05 pmurias TimToady: what's wrong with it?
16:05 TimToady uses up a common letter, unlike q
16:06 TimToady qp is okay
16:06 Tene What is p{} ?
16:06 pmurias path quoting
16:07 Tene Ah.
16:07 diakopter pmurias: yes, all three of those titles I mentioned live in the pugs repo
16:07 * colomon now pondering a song with the lyric "p curly brace must die"...
16:08 diakopter in syn/index.html it's called "IO / User / Group", S16 calls itself "IO / Name Services", and S32 Basic.pod refers to it as "IPC / IO / Signals"
16:08 pmurias diakopter: the TITLE section in S16 seems to sugges IO / Name Services
16:11 dalek rakudo: 27d9f14 | jonathan++ | build/PARROT_REVISION:
16:11 dalek rakudo: Bump PARROT_REVISION to get a fix I just put in for a segfault.
16:11 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​7d9f14b0e0ffb9aa1898ea32dc27961e955c953
16:11 jnthn masak: ^^
16:11 masak thank you.
16:12 jnthn Welcome. The fact that I was about to write a bunch of C-code and Parrot segfaulted during Rakudo startup under my debugger was kinda an extra incentive to fix that one. :-)
16:13 rhr_ joined #perl6
16:14 masak (aligning goals)++
16:18 pugs_svn r28725 | colomon++ | [t/spec] Enough tests to roughly establish that is_approx works for Vectors.
16:21 colomon hokey smokes, that was a lot of patching to Rakudo, considering I pulled yesterday...
16:24 jnthn colomon: Myabe you pulled yesterday before I merged a branch.
16:24 colomon I thought I pulled after, but I could have been wrong.
16:25 jnthn Well, I've done some other little bits since the branch too.
16:25 jnthn However, right now it's branch time again. :-)
16:25 jnthn ooh...actually, right now is go to the shops to buy something for dinner before they close time...
16:30 SmokeMachine joined #perl6
16:31 masak good idea.
16:32 msmatsko joined #perl6
16:35 lucs joined #perl6
16:37 lucs rakudo: say "What is the evalbot's nick?"
16:38 p6eval rakudo 27d9f1: OUTPUT«What is the evalbot's nick?␤»
16:38 lucs Aha.
16:38 lucs (Maybe the /topic should mention that.)
16:39 masak sure, but why?
16:39 lucs Because I don't use it often, I never remember it, and it pollutes the channel to have to do what I just did :)
16:40 lucs (I prefer to /msg it)
16:41 masak oh. now I understand your reason.
16:41 dalek nqp-rx: a0788f8 | pmichaud++ | src/Regex/Cursor-builtins.pir:
16:41 dalek nqp-rx: Add some builtin subrules to Cursor.
16:41 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/a​0788f8a7eaac5a14f3c63a231eb0a17da93b17d
16:41 dalek nqp-rx: 86f5d68 | pmichaud++ |  (8 files):
16:41 dalek nqp-rx: Add lexical $�.
16:41 dalek nqp-rx: Add subrule matching -- non-capturing and non-backtracking as yet.
16:41 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/8​6f5d68869a4f607c8dcf7d4fb4191ee46d5ea6b
16:43 masak whoz op? could someone add p6eval's nick to the topic?
16:47 payload joined #perl6
16:51 nihiliad joined #perl6
16:51 pmurias joined #perl6
16:52 lucs So, suggested /topic: »ö« | http://perl6.org/ | nopaste: http://paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: http://irc.pugscode.org/ | UTF-8 is our friend!
17:01 gavv joined #perl6
17:03 * jnthn back from shops.
17:04 Topic for #perl6is now »ö« | http://perl6.org/ | nopaste: http://paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: http://irc.pugscode.org/ | UTF-8 is our friend!
17:04 jnthn yaz op!
17:04 lucs Thanks :)
17:05 masak yayjnthnzop!
17:06 masak food &
17:10 pugs_svn r28726 | pmurias++ | [mildew-js] say FETCHes it's arguments, basic array support
17:15 jnthn .oO( how many people are writing a Perl 6 => js compiler now? :-) )
17:16 pugs_svn r28727 | lwall++ | [S04,S06]
17:16 pugs_svn r28727 | Placeholders may never be used in a hash composer.
17:16 pugs_svn r28727 | Explain how this means map always works right even if it's map { $_ => 1 }
17:16 pugs_svn r28727 | Placeholders @_ and %_ may be used standalone, not just with other placeholders.
17:16 pugs_svn r28727 | Explain how this makes P5 subs fall out naturally, more or less
17:16 pugs_svn r28727 | Clarify that $_ is a placeholder only in the absence of other placeholders.
17:16 pugs_svn r28727 | Mention how if statements don't pass anything to implicit $_ blocks even if
17:16 pugs_svn r28727 | they have an optional $_ in the signature.
17:18 pmurias jnthn: fglock, diakopter and mberends, and me
17:20 TimToady well, apparently I am too, insofar as STD is being used :)
17:20 TimToady and viv
17:21 pmurias you are writting 2 js compilers ;)
17:21 pmurias s/js/to js/
17:21 * TimToady stands on a stump and pounds his chest
17:21 pmurias as both mildew and sprixel use STD
17:21 * TimToady wonders why his ribs hurt now
17:23 jnthn hehe
17:25 jnthn Heh. The day I patch the hash composer, the spec relating to it gets patched too. :-)
17:25 Tene whirlpool, jnthn
17:25 TimToady yes, well, I patched the spec because I was backlogging and didn't remember about { %stuff }
17:25 jnthn Indeed.
17:26 TimToady and noticed I hadn't hacked in the new no-placeholders policy that fixes map
17:26 KyleHa joined #perl6
17:26 TimToady most of the changes are simplifications, and the only casualty I can see is the proviso about embedded @_ not seeing the outer @_
17:27 TimToady which seems like a small loss
17:27 TimToady since we'll be encouraging people to translate to real signatures anyway
17:27 jnthn Aye, it looks sane at first glance.
17:28 gavv left #perl6
17:28 TimToady and most existing uses of @_ in P5 are not embedded in an inner block anyway
17:28 KyleHa Most.
17:28 KyleHa I bet there's one or two programmers out there who do it All The Time.
17:29 Tene OMG DARKPAN
17:29 TimToady and we're immune to the backwards compatibility argument that plagues p5l :)
17:29 KyleHa I'm more than happy to irritate those one or two programmers.  8-)
17:29 TimToady In fact, we *have* to break a few eggs to prove we're making an omelet.
17:30 diakopter joined #perl6
17:34 pugs_svn r28728 | pmurias++ | [mildew-js] add true method to integers
17:35 pmurias KyleHa: they'll just switch to using $^a,$^b...$^z ;)
17:38 melba joined #perl6
17:43 TimToady Fortunately, being allergic to eggs doesn't make you allergic to egg metaphors.  Or maybe unfortunately...
17:44 pugs_svn r28729 | kyle++ | [t/spec] todo test passes now
17:45 jnthn .oO( what an eggcellent thought )
17:45 TimToady Or maybe not maybe.
17:46 felipe joined #perl6
17:47 pugs_svn r28730 | diakopter++ | [evalbot] remove sprixel from evalbot during its soul replacement therapy.
17:48 p6eval joined #perl6
17:48 diakopter to clarify: during sprixel's soul replacement, not evalbot's soul replacement.
17:50 * jnthn hopes the soul is being replaced with heavy metal, not hip-hop
17:53 melba joined #perl6
17:54 lumi_ joined #perl6
17:55 diakopter gregorian chants ^ symphonic sci-fi soundtracks
17:56 pmurias diakopter: what does the soul replacement therapy consit of
17:56 jnthn diakopter: ooh, not bad
18:01 diakopter pmurias: making the sprixel.setting generated by ... stuff
18:02 * pmurias doesn't undestand
18:03 mberends joined #perl6
18:03 Psyche^ joined #perl6
18:03 * mberends backlogs desperately hurriedly... what's this about sprixel's soul?
18:10 TimToady well, everyone knows that a backend has no soul, unless maybe you're a dinosaur with a hindbrain
18:11 mberends so maybe sprixel needed sole replacement instead?
18:14 diakopter just.. now that the interpreter engine proved itself enough [in my mind at least] and I'm [mentally] comfortable with the way STD/viv is presenting the AST, I'm reworking how the interpreter engine does dispatch entirely... so basically stripping interp.js and builtins.js back down to essentially nothing.  Then, we'll be building up the setting in Perl 6 (with jseval (aka Q:PIR {})) in place of most function bodies, until a proper dependency tree is deri
18:14 diakopter Then, we'll be building up the setting in Perl 6 (with jseval (aka Q:PIR {})) in place of most function bodies, until a proper dependency tree is derived for the setting files, and then the routine bodies will be able to be replaced with Perl 6 bodies.
18:14 diakopter sigh
18:15 diakopter so at first, the only classes that need written in solely JS will be Routine, Signature, Parameter, and their dependencies.
18:18 slavik joined #perl6
18:20 mberends diakopter: ok, that's an extension of what you wrote earlier. does that mean that most of the code in builtins.js is obsolete?
18:21 diakopter yes, as well as in interp.js :)
18:22 diakopter b/c almost all of those function bodies were keyed by names that are setting-dependent
18:23 diakopter that whole dispatch scheme should be viewed only to support a proof-of-concept (where the concept is the interpreter engine)
18:23 diakopter it'll be much more efficient to write all of that in Perl 6 in the setting... even as jseval '' embedded heredocs or whatever
18:23 diakopter no 'hardcoding'
18:24 mberends will testing sprixel have to be put on hold until this rewrite reaches a certain minimum functionality again?
18:25 diakopter yes, tho the interfaces shouldn't change...  I mean, Test.pm.js will change a lot I'm sure, but your harness/system shouldn't break
18:26 mberends the harness now passes 427 tests here on the old interpreter :)
18:26 diakopter oh :D  well cool
18:26 snearch joined #perl6
18:27 abra joined #perl6
18:28 TimToady diakopter: I'm much happier with the type structure of viv now with respect to --p5, thanks for the attitude adjustments :)
18:29 lumi joined #perl6
18:34 tak11 joined #perl6
18:35 diakopter oh, another big change: now that STD/viv generates/attaches data structures representing the lexical pads (and implied signatures!) to each routine/block, block invocation will use the JS-converted editions of those data structures directly
18:36 diakopter essentially I want to get the interpreter engine to the point where it merely handles control flow; all other "node type" dispatch will hopefully be done by in-Perl-6 dispatching
18:40 diakopter hopefully the circularity saw can exist in several places at once
18:41 diakopter while cutting other places
18:41 mberends is any of it running yet?
18:42 diakopter it tries, but I keep catching it and pressing delete
18:42 diakopter :)
18:44 mberends just don't let it crawl ;)
18:45 ejs joined #perl6
18:46 diakopter well, while I'm at it, I might as well create a Continutation_State JS object that's a lot smarter about cloning itself
18:47 diakopter instead of cloning the ast nodes themselves
18:47 diakopter Continuation_State, I meant
18:52 pmurias joined #perl6
18:53 diakopter that way, each ast node actually can keep some global state (incl whether (and how "much") that node has been 'compiled' or preprocessed)
18:54 mberends that's interesting, a kind of JIT processing apparently
18:54 diakopter so, each node type can do some initialization work that doesn't need to be repeated for every execution of its 'instance' nodes
18:55 diakopter sorta; maybe better described as smart caching
18:55 diakopter er, flexible caching
18:56 mberends yep, some cacheing of metadata generated at runtime as opposed to parse time
19:01 diakopter each cstate (continuation state) object represents an 'activation' of an ast node, and each ast node represents an occurrence (instance) of each node_type (the VAST type as it's received from viv)
19:05 pugs_svn r28731 | lwall++ | [Cursor] sometimes accidentally propagated _ast out of <?before> and <?after>
19:05 pugs_svn r28731 | [viv] get all the way back to being able to translate EXPR to Perl 5 correctly, yay!
19:06 mberends lwall++ indeed
19:11 mberends diakopter: then shouldn't node_type construct cstate instead of cloning itself? (different data structures)
19:12 diakopter exactly
19:13 pugs_svn r28732 | mberends++ | [sprixel] harness-fudging.pl can skip complete code blocks, spectest.data skip and todo directives are formatted like function calls
19:16 pugs_svn r28733 | colomon++ | [t/spec] All the basic functions tested.
19:16 colomon Ack, that looks like it needs more info to mean anything in this context.  All the basic functions tested in my new operator overloading test.  Time to get hyper...
19:17 * jnthn hands colomon the energy drinks
19:21 lumi joined #perl6
19:23 NorwayGeek joined #perl6
19:23 abra joined #perl6
19:26 colomon rakudo: say [&&] 1, 1, 1, 1, Bool::True;
19:26 p6eval rakudo 27d9f1: OUTPUT«say requires an argument at line 2, near " [&&] 1, 1"␤in Main (file src/gen_setting.pm, line 2545)␤»
19:26 colomon rakudo: say 1 && 1;
19:26 p6eval rakudo 27d9f1: OUTPUT«1␤»
19:27 colomon rakudo: say 1 && Bool::True;
19:27 p6eval rakudo 27d9f1: OUTPUT«1␤»
19:27 colomon rakudo: say [&&] (1, 1, 1, 1, Bool::True);
19:27 p6eval rakudo 27d9f1: OUTPUT«say requires an argument at line 2, near " [&&] (1, "␤in Main (file src/gen_setting.pm, line 2545)␤»
19:27 colomon rakudo: say all(1, 1, 1, 1, Bool::True);
19:27 p6eval rakudo 27d9f1: OUTPUT«all(1, Bool::True)␤»
19:29 quietfanatic Oh, by the way...
19:29 quietfanatic rakudo: say()
19:29 p6eval rakudo 27d9f1: OUTPUT«say requires an argument at line 2, near ""␤in Main (file src/gen_setting.pm, line 2562)␤»
19:29 quietfanatic rakudo: &say()
19:29 p6eval rakudo 27d9f1: OUTPUT«␤»
19:29 quietfanatic ^ that.
19:29 colomon :O
19:29 jnthn lol
19:29 jnthn std: &say()
19:29 jnthn std: &say.()
19:29 p6eval std 28733: OUTPUT«ok 00:02 134m␤»
19:29 p6eval std 28733: OUTPUT«ok 00:02 132m␤»
19:29 jnthn std: say()
19:29 p6eval std 28733: OUTPUT«ok 00:03 103m␤»
19:29 jnthn oh, it doesn't check at all. fine.
19:30 __ash__ joined #perl6
19:30 colomon BTW, just wrote this to implement the heart of is_approx_array: all((@got >>-<< @expected)>>.abs.map({$_ <= 0.00001}))
19:31 colomon Can't decide if it is brilliant or unutterably scary.
19:31 mberends it's neat :)
19:31 quietfanatic Makes sense to me.
19:31 jnthn Scarilly brilliant?
19:33 colomon I haven't really internalized the >>.abs syntax yet.
19:33 colomon Nor "all", for that matter.
19:34 jnthn colomon: erm, yeah, ...you're constructing a junction, so >>. is just .
19:34 jnthn oh wait
19:34 jnthn the all is around all of it.
19:34 colomon yes.
19:34 jnthn Yes, it's right. :-)
19:34 * jnthn is filling out the new binder :-)
19:35 colomon Hmm... turns out my local "is_approx_array" doesn't work because Test.pm doesn't export proclaim (or something like that.
19:35 colomon ("local" here means in t/spec/S06-operator-overloading/workout.t)
19:36 moritz_ ok() is pretty close to proclaim
19:36 colomon Any wisdom on the best way to handle that?
19:36 colomon but it will screw up the test skipping code, won't it?
19:36 moritz_ you can add #?DOES 1 before your testing function
19:36 moritz_ then fudge learns that it's a test function like is()
19:37 colomon trying that now....
19:37 colomon yay!
19:41 colomon looks like it skips, too.
19:41 colomon moritz_++
19:44 abra joined #perl6
19:45 eternaleye_ joined #perl6
19:45 Chillance joined #perl6
19:48 arnsholt_ joined #perl6
19:49 TimToady1 joined #perl6
19:49 jrockway_ joined #perl6
19:49 shachaf_ joined #perl6
19:49 sunnavy_ joined #perl6
19:50 colomon yay!  bug!
19:50 colomon I think it's reported, but I don't think it has a test suite entry before this.
19:56 pugs_svn r28734 | colomon++ | [t/spec] First wave of hyper tests.
20:03 IRSeekBot joined #perl6
20:04 wormphlegm joined #perl6
20:14 colomon So, one of the weird thing about the hyper operator bugs is how some things fail when you use >> and some when you use ».
20:15 jnthn Wow.
20:15 jnthn And...ouch...
20:17 mberends that kind of weirdness is similar to http://www.grymoire.com/Unix/CshTop10.txt
20:17 jnthn mberends: Yeah, but here it's a bug. ;-)
20:18 mberends jnthn: Yeah, but that means it gets fixed... eventually ;-)
20:19 jnthn Eventually. ;-)
20:19 pugs_svn r28735 | colomon++ | [t/spec] Test hyper on user-defined (rather than user-overloaded) operators.
20:19 * jnthn just wrote the first, completely untested, cut of some code that should solve one of the oldest RT tickets we have. :-)
20:20 mberends yay!
20:20 colomon If you do svn up on the t/spec/S06-operator-overloading directory and look at the workout.t file, the skipped tests trigger the bugs I'm talking about.
20:21 colomon Honestly, I'm surprised at how well the hyper operators are doing with my tests.  I was under the impression they were even more fragile.
20:22 jnthn colomon: I really like that we're doing more exhaustive testing of the various permutations.
20:22 jnthn For operating overloading and hypers and the various other meta-operators.
20:24 __ash__ does perl6 support/willsupport function composition? like if i did something like: &z= &f . &g; maybe?
20:24 __ash__ so z = f(g(x))
20:25 colomon __ash__: you can always do it with closures.
20:25 colomon something like
20:26 colomon std: sub Comp(Code $a, Code $b) { return { $a($b($_)); }; };
20:26 p6eval std 28734: OUTPUT«ok 00:02 115m␤»
20:26 colomon I've not tested that, but I think something along those lines ought to work.
20:26 jnthn rakudo: sub infix:<comp>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 2 }; my $z = &f comp &g; $x(20)
20:26 p6eval rakudo 27d9f1: OUTPUT«Symbol '$x' not predeclared in <anonymous> (/tmp/5KjFpmwii1:2)␤in Main (file <unknown>, line <unknown>)␤»
20:27 jnthn rakudo: sub infix:<comp>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 2 }; my $z = &f comp &g; $z(20)
20:27 p6eval rakudo 27d9f1:  ( no output )
20:27 jnthn rakudo: sub infix:<comp>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 2 }; my $z = &f comp &g; say $z(20)
20:27 p6eval rakudo 27d9f1: OUTPUT«44␤»
20:27 colomon rakudo++
20:27 jnthn rakudo: sub infix:<comp>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 1 }; my $z = &f comp &g; say $z(20)
20:27 p6eval rakudo 27d9f1: OUTPUT«42␤»
20:27 jnthn \o/
20:27 __ash__ yeah, i figured you could do something like that, just define an operator
20:27 jnthn I don't know that you can have '.' though
20:28 jnthn rakudo: sub infix:<.>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 1 }; my $z = &f . &g; say $z(20)
20:28 __ash__ well, haskell uses infix '.' thats all
20:28 p6eval rakudo 27d9f1: OUTPUT«42␤»
20:28 jnthn heh heh
20:28 jnthn std: sub infix:<.>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 1 }; my $z = &f . &g; say $z(20)
20:28 p6eval std 28734: OUTPUT«[31m===[0mSORRY![31m===[0m␤Obsolete use of . to concatenate strings; in Perl 6 please use ~ instead at /tmp/2gotXXIWVi line 1:␤------> [32mx }; sub g($x) { $x + 1 }; my $z = &f . [33m⏏[31m&g; say $z(20)[0m␤FAILED 00:02 133m␤»
20:28 jnthn Yeah, I thought that is what would happen. :-)
20:29 jnthn Well... use Haskell; :-)
20:30 colomon I've been toying with the notion of defining a class for math functions using closures like that.
20:31 __ash__ i was asking about perl6, just wonder, its a toy feature of some functional programming languages and since i heard perl6's motto is all your paradigms all belong to us, i thought i'd ask
20:31 __ash__ i only know a little haskell, its was just an example
20:31 __ash__ how would you get it to handle more paramters? like if they took x and y, instead of just x
20:31 __ash__ rakudo: sub infix:<.>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x, y) { 2 * $x, 2 *  $y }; sub g($x, y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20);
20:31 p6eval rakudo 27d9f1: OUTPUT«Unable to parse multisig; couldn't find final ')' at line 2, near ", y) { 2 *"␤in Main (file <unknown>, line <unknown>)␤»
20:32 __ash__ sub infix:<.>(&x, &y) { return { x(y($_)) } }; sub f($x, $y) { 2 * $x, 2 *  $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
20:32 jnthn __ash__: Well, my answer really is, even if standard Perl 6 doesn't provide such an operator, it provides you a very easy way to write a library that looks pretty natural.
20:32 araujo joined #perl6
20:32 __ash__ rakudo: sub infix:<.>(&x, &y) { return { x(y($_)) } }; sub f($x, $y) { 2 * $x, 2 *  $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
20:32 p6eval rakudo 27d9f1: OUTPUT«too many arguments passed (2) - at most 1 param expected␤in Main (file src/gen_setting.pm, line 206)␤»
20:33 jnthn __ash__: Take the multiple parameters.
20:33 jnthn return -> $a, $b { ... }
20:34 jnthn Or *@params to take as many as you want, and you can flatten with |@params when passing, or similar.
20:34 __ash__ sub infix:<.>(&x, &y) { return -> |@params { x(y(*@params)) } }; sub f($x, $y) { 2 * $x, 2 *  $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
20:35 __ash__ rakudo: sub infix:<.>(&x, &y) { return -> |@params { x(y(*@params)) } }; sub f($x, $y) { 2 * $x, 2 *  $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
20:35 p6eval rakudo 27d9f1: OUTPUT«Confused at line 2, near "-> |@param"␤in Main (file <unknown>, line <unknown>)␤»
20:36 lumi joined #perl6
20:36 __ash__ I haven't done any of that parameter magic
20:37 __ash__ how would you do that right?
20:38 quietfanatic I think you have the * and | backwards.
20:38 SmokeMachine joined #perl6
20:38 quietfanatic rakudo: sub infix:<.>(&x, &y) { return -> *@params { x(y(|@params)) } }; sub f($x, $y) { 2 * $x, 2 *  $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
20:38 p6eval rakudo 27d9f1: OUTPUT«too few arguments passed (1) - 2 params expected␤in Main (file src/gen_setting.pm, line 206)␤»
20:38 quietfanatic Hmm.
20:39 xenoterracide joined #perl6
20:39 jnthn quietfanatic: yes, you're right
20:39 jnthn quietfanatic: I think just wants to be x(y(|@params), y(|@params))
20:39 jnthn For the two param case.
20:40 __ash__ i wonder how to do it so it doesn't matter the number of paramters...
20:40 quietfanatic I think it wants to be something like x(|@(y(|@params)))
20:40 quietfanatic if the @() syntax works in rakudo
20:41 quietfanatic rakudo: sub infix:<.>(&x, &y) { return -> *@params { x(|@(y(|@params))) } }; sub f($x, $y) { 2 * $x, 2 *  $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
20:41 p6eval rakudo 27d9f1: OUTPUT«4242␤»
20:41 __ash__ you can drop the @ after |
20:41 quietfanatic rakudo: sub infix:<.>(&x, &y) { return -> *@params { x(|y(|@params)) } }; sub f($x, $y) { 2 * $x, 2 *  $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
20:41 __ash__ rakudo: sub infix:<.>(&x, &y) { return -> *@params { x(|y(|@params)) } }; sub f($x, $y) { 2 * $x, 2 *  $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
20:41 p6eval rakudo 27d9f1: OUTPUT«4242␤»
20:41 p6eval rakudo 27d9f1: OUTPUT«4242␤»
20:41 quietfanatic __ash__ :)
20:42 jnthn And the world was filled with happiness. :-)
20:44 mirage77 joined #perl6
20:46 mirage77 left #perl6
20:49 __ash__ how do you find the length of a string?
20:49 mikehh_ joined #perl6
20:49 __ash__ rakudo: say "«".chars;
20:50 p6eval rakudo 27d9f1: OUTPUT«1␤»
20:50 __ash__ hmm
20:50 __ash__ on my terminal that puts 2
20:50 __ash__ weird
20:52 synth joined #perl6
20:52 Tene __ash__: in the repl or in a script?
20:52 __ash__ okay, that works when you do it from a file, but doing it in a terminal returns 2, must be the encoding of the terminal or something
20:52 Tene __ash__: there are issues with utf encoding in the repl
20:53 __ash__ okay, got ya
20:54 jnthn omgwtfgithelp!
20:54 jnthn http://github.com/rakudo/rakudo/commits/resig shows no commits since the last time I pushed
20:54 jnthn However, git push origin resig complains about non-fast-forward.
20:55 jnthn How might this happen?
20:57 Tene jnthn: you could have branched from an earlier commit.
20:57 Tene jnthn: git fetch; git rebase origin; git push
20:57 Tene try that.
20:58 eternaleye joined #perl6
20:59 jnthn Tene: Ah, did a pull, resolved whatever it thought was the problem and it's let me push now.
20:59 jnthn But thanks
20:59 * jnthn still not quite sure what happened...
20:59 Tene ah
21:00 Tene spooky.
21:00 jnthn Anyways, http://github.com/rakudo/rakudo/commits/resig has latest.
21:00 jnthn Should still build fine for now.
21:00 jnthn Will continue to fill it out and migrate us to this new binder in the next few days. :-)
21:01 jnthn Just making it work first, but there'll be a bunch of chances for optimization later too.
21:02 Tene jnthn: if you run gitk, you'll see what happened.
21:03 Tene see how you have "re-work binder into a library of its own" in there twice, with different parents?
21:04 jnthn yeah
21:04 jnthn hmm
21:04 Tene you must have rebased that commit on top of master, then pushed to the branch, or something.
21:04 jnthn I'm still not sure how I managed that one.
21:04 jnthn oh, I wonder if I pushed to the wrong place at some point. :-S
21:04 Tene yeah, that could be it, maybe.
21:04 rhr joined #perl6
21:05 jnthn Ah, but that patch hasn't ended up in master. Phew. :-)
21:30 moritz_ jnthn: replacing .$(AR) with $(O) makes your branch build on linux
21:31 moritz_ (tried in Makefile directly, not in build/Makefile.in)
21:31 jnthn erm, with $(O) ?!
21:31 jnthn oh, erm.
21:31 jnthn Yes, I can see why that would work.
21:31 jnthn Trouble is
21:32 jnthn You've just linked two copies of the same code separately into two other dynamic libraries.
21:32 moritz_ and bloated the binary that way
21:32 jnthn Rather than building it once and linking against that one copy.
21:32 jnthn Yeah
21:33 jnthn I fear that the two libraries having the same exported symbol will cause...fun...too :-)
21:33 jnthn oh, well, maybe not actually
21:33 jnthn I guess it'll be OK.
21:33 moritz_ with that build spectest seems to run fine so far
21:33 jnthn Yeah
21:33 jnthn I'm sorta pondering that building it as a separate library is a bad idea.
21:33 moritz_ anyway, have to go to bed now, more investigation tomorrow
21:34 eternaleye_ joined #perl6
21:34 jnthn I want to bundle it in with the dynpmcs really *but* the dynops need to be able to call it too...
21:34 jnthn Anyway, there's a while to find a solution before this merges. Sleep well. :-)
21:36 dalek nqp-rx: b0e696b | pmichaud++ | src/Regex/Cursor.pir:
21:36 dalek nqp-rx: Remove some obsolete methods from Cursor.
21:36 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/b​0e696bf7dfded473872b13aade629fcb36b54c2
21:36 dalek nqp-rx: 5ecd319 | pmichaud++ | src/Regex/Cursor.pir:
21:36 dalek nqp-rx: Partial change of match stack to a cursor stack, update bstack handling.
21:36 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/5​ecd31941c3d6483f4751108d1b51b67704ceed7
21:36 dalek nqp-rx: 7b01e97 | pmichaud++ | src/Regex/Cursor.pir:
21:36 dalek nqp-rx: Manage cstack on mark_fail.
21:36 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/7​b01e976627a08108493df3f0f96d5fc3f30d4f6
21:42 lumi joined #perl6
21:45 Chillance joined #perl6
21:49 synth joined #perl6
21:50 synth joined #perl6
21:50 synth joined #perl6
21:56 Whiteknight joined #perl6
21:59 crythias joined #perl6
22:05 pmurias joined #perl6
22:26 FOAD_ joined #perl6
22:32 diakopter std: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{​{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{​{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{say 33}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}​}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}​}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
22:32 p6eval std 28735: OUTPUT«Deep recursion on subroutine "LazyMap::lazymap" at Cursor.pm line 824.␤Deep recursion on subroutine "LazyMap::lazymap" at Cursor.pm line 824.␤Deep recursion on subroutine "LazyMap::lazymap" at Cursor.pm line 609.␤Deep recursion on anonymous subroutine at Cursor.pm line 677.␤Deep
22:32 p6eval ..re…
22:33 diakopter rakudo: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{​{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{​{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{say 33}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}​}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}​}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
22:33 p6eval rakudo 27d9f1: OUTPUT«maximum recursion depth exceeded␤in Main (file src/gen_setting.pm, line 206)␤»
22:33 jnthn lolfail
22:33 KyleHa Lucky we're not writing lisp.
22:34 diakopter jnthn: :) I thought you'd like that one
22:35 jnthn diakopter: Parrot sets a default max rec depth to make debugging easier - we can clear that though to support deeply recursive code if we like. :-)
22:35 jnthn otoh the depth is 1000
22:35 jnthn That isn't so many curlies to overall take us to that. :-)
22:36 diakopter rakudo: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{​{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{​{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
22:36 p6eval rakudo 27d9f1: OUTPUT«maximum recursion depth exceeded␤in Main (file src/gen_setting.pm, line 206)␤»
22:36 jnthn :-)
22:36 diakopter (parsing)
22:36 crythias joined #perl6
22:36 Whiteknight joined #perl6
22:36 SmokeMachine joined #perl6
22:36 shachaf_ joined #perl6
22:36 slavik joined #perl6
22:36 lucs joined #perl6
22:36 ruoso joined #perl6
22:36 arthur-_ joined #perl6
22:36 sjohnson joined #perl6
22:36 colomon joined #perl6
22:36 pugs_svn joined #perl6
22:36 yahooooo joined #perl6
22:36 Grrrr joined #perl6
22:36 nsh joined #perl6
22:36 davidm123 joined #perl6
22:36 PacoLinux joined #perl6
22:36 cosimo joined #perl6
22:36 jnthn Yes, it's hitting it in parsing, for sure.
22:37 diakopter (same with std)
22:37 KyleHa rakudo: eval ('{' x 100) ~ 'say "oh hai"' ~ ('}' x 100)
22:37 p6eval rakudo 27d9f1: OUTPUT«oh hai␤»
22:37 jnthn huh, it works for eval?!
22:38 KyleHa rakudo: eval ('{' x 1000) ~ 'say "oh hai"' ~ ('}' x 1000)
22:38 p6eval rakudo 27d9f1:  ( no output )
22:38 jnthn ah. :-)
22:38 KyleHa rakudo: eval ('{' x 500) ~ 'say "oh hai"' ~ ('}' x 500)
22:38 p6eval rakudo 27d9f1:  ( no output )
22:38 eternaleye joined #perl6
22:38 KyleHa rakudo: eval ('{' x 250) ~ 'say "oh hai"' ~ ('}' x 250)
22:38 p6eval rakudo 27d9f1:  ( no output )
22:39 KyleHa rakudo: eval ('{' x 150) ~ 'say "oh hai"' ~ ('}' x 150)
22:39 p6eval rakudo 27d9f1:  ( no output )
22:39 jnthn rakudo: my $n = 100; $n++ while eval(('{' x $n) ~ ' 1 ' ~ ('}' x $n)); say $n;
22:39 p6eval rakudo 27d9f1: TIMED_OUT
22:39 KyleHa jnthn++
22:39 jnthn aww
22:47 TimToady1 what you don't see there is that std actually succeeded in parsing it, since that was just a warning
22:48 diakopter yep; with 'no warnings;' it's hunkily dorily
22:50 diakopter rakudo: say ('.' x 200000000 ~~ /.+/).chars
22:50 p6eval rakudo 27d9f1: OUTPUT«200000000␤»
22:50 diakopter (impressive)
22:51 KyleHa I'm looking at this ticket:  http://rt.perl.org/rt3/Tic​ket/Display.html?id=65272
22:51 KyleHa It uses 'A.HOW.dispatch(.., ..)'  That doesn't work anymore.
22:54 KyleHa rakudo: class A { method x { say 'A' } }; class B is A { method x() { say 'B' } }; B.new.x; B.x;
22:54 p6eval rakudo 27d9f1: OUTPUT«B␤B␤»
22:54 eternaleye_ joined #perl6
22:54 jnthn I'm not even sure if the ticket is correct...
22:54 KyleHa Yeah, that's what I was thinking.
22:55 jnthn .dispatch is API I guess
22:55 jnthn But you're giving it an invocant B to work on, so the metaclass is going to care about its methods, probably.
22:56 jnthn Anyway, I suspect it dates back to the days before you could write $x.A::x
22:59 KyleHa Closed: crusty.  8-)
22:59 diakopter std: goto: last goto
22:59 p6eval std 28735: OUTPUT«ok 00:01 106m␤»
23:01 diakopter std: last last last last last last last
23:01 p6eval std 28735: OUTPUT«ok 00:02 104m␤»
23:02 KyleHa rakudo: say <<:a(1)>>.perl
23:02 p6eval rakudo 27d9f1: OUTPUT«":a(1)"␤»
23:03 diakopter std: last.last.last.last.last.last
23:03 p6eval std 28735: OUTPUT«ok 00:01 103m␤»
23:04 diakopter std: .goto.goto.goto.goto ** *
23:04 p6eval std 28735: OUTPUT«ok 00:01 104m␤»
23:04 * diakopter shrugs
23:07 KyleHa This says <<:a(1)>> should interpolate a pair:  http://rt.perl.org/rt3/Tic​ket/Display.html?id=65304  Is that right?
23:09 quietfanatic rakudo: say (* == 3).WHAT
23:09 p6eval rakudo 27d9f1: OUTPUT«!whatever_closure␤»
23:09 quietfanatic rakudo: say (* ~~ 3).WHAT
23:09 p6eval rakudo 27d9f1: OUTPUT«Bool()␤»
23:10 quietfanatic Should * also produce a WhateverCode for ~~?
23:11 * diakopter flips a coin
23:12 KyleHa S02 says yes, <<:a(1)>> should cough up a Pair object.
23:29 jrtayloriv joined #perl6
23:34 eternaleye joined #perl6
23:37 diakopter as dukeleto said yesterday, whoa nelly... this improved interpreter model gives a 50-100x speedup of arbitrary node evaluation
23:45 pugs_svn r28736 | kyle++ | [t/spec] Mark test for RT #65304
23:46 pugs_svn r28737 | kyle++ | [t/spec] Test for RT #65322
23:48 quietfanatic Does anyone know how Perl namespaces map to Parrot namespaces?
23:48 quietfanatic rakudo: $Place::thing = 4; Q:PIR {$P0 = get_hll_global ['Place'], '$thing'}; QPIR{say $P0}
23:48 p6eval rakudo 27d9f1: OUTPUT«4␤»
23:48 quietfanatic This gets the right thing
23:48 quietfanatic but
23:48 quietfanatic rakudo: $Some::Place::thing = 4; Q:PIR {$P0 = get_hll_global ['Some::Place'], '$thing'}; QPIR{say $P0}
23:48 quietfanatic This does not.
23:48 p6eval rakudo 27d9f1: OUTPUT«Null PMC in say␤in Main (file src/gen_setting.pm, line 206)␤»
23:51 quietfanatic rakudo: $Some::Place::thing = 4; Q:PIR {$P0 = get_hll_global ['Some';'Place'], '$thing'}; QPIR{say $P0}
23:51 p6eval rakudo 27d9f1: OUTPUT«4␤»
23:51 quietfanatic Okay, I figured it out. :)
23:59 diakopter rakudo: say (QPIR{}).WHAT
23:59 p6eval rakudo 27d9f1: OUTPUT«ResizablePMCArray: Can't shift from an empty array!␤in Main (file src/gen_setting.pm, line 206)␤»
23:59 diakopter rakudo: say (QPIR{say 3}).WHAT
23:59 p6eval rakudo 27d9f1: OUTPUT«The opcode 'descalarref_p' (descalarref<1>) was not found. Check the type and number of the arguments␤in Main (file src/gen_setting.pm, line 206)␤»

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs