»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:04
Chillance left
00:11
telex left
00:15
benabik joined
00:19
s1n joined,
MikeFair joined,
skids joined
00:25
Circlepuller joined
00:27
Circlepuller_ left
00:28
UnknownCharacter left
00:32
telex joined
00:34
kid51 joined
00:35
tokuhiro_ left
00:39
MikeFair left
00:41
MikeFair joined
00:51
s1n left
01:06
hypolin joined
01:07
s1n joined
01:16
scott_ joined,
scott_ is now known as Guest33156
01:56
FROGGS_ joined
01:59
flightrecorder left
02:00
FROGGS left
02:01
flightrecorder joined
02:02
kid51 left
02:05
gootle joined
02:08
OuLouFu joined
02:29
benabik left
02:31
s1n left
02:45
s1n joined
03:45
benabik joined
03:54
yarp joined
04:02
benabik left
04:09
benabik joined
04:16
hypolin left
04:20
hypolin joined
04:25
hypolin left
04:26
hypolin joined
04:27
skids left
04:33
Khisanth joined
04:37
hypolin left
04:44
hypolin joined
04:45
yarp left
04:51
hypolin left
04:53
hypolin joined
|
|||
TimToady admires all the crickets | 05:04 | ||
05:08
kaleem joined
|
|||
sorear | o/ | 05:16 | |
moritz | \o | 05:22 | |
05:40
wk_ left
|
|||
dalek | ast: eecc10a | moritz++ | S06-multi/proto.t: test {*} in terms within protos |
05:41 | |
05:51
marmay joined
06:04
wtw_ joined
06:10
FROGGS_ left
06:12
flightrecorder left
06:29
kaleem left,
kaleem joined
06:33
GlitchMr joined
06:40
DreamingInCode left
06:48
wk_ joined
|
|||
sorear | occasionally I do things so stupid I have to share them | 06:50 | |
[core] | |||
excludesfile = /Users/sorear/.gitconfig | |||
it has been set up this way for several months | |||
06:53
stepnem joined
07:01
Parul joined
07:04
LlamaRider joined
07:06
flightrecorder joined
07:07
wamba joined,
FROGGS joined
07:09
yarp joined
07:16
fhelmberger joined,
Parul left
|
|||
moritz | erm, what? :-) | 07:17 | |
tadzik | heh,took me a while to catch :) | 07:18 | |
moritz looked up the docs for core.exludesfile in order to verify it was really what I though | 07:19 | ||
tadzik | I assume it's a path to .gitignore | ||
sorear | yeah. | 07:20 | |
$ git add t/rt_gh2.t | |||
The following paths are ignored by one of your .gitignore files: | |||
t | |||
and I'm like "wtf?" | |||
in retrospect this explains why I was having such trouble getting $HOME/.gitignore to work | |||
tadzik | :P | 07:22 | |
07:27
yarp left
|
|||
FROGGS | good morning btw | 07:30 | |
tadzik | FROGGS: this looks nice | 07:32 | |
File::Spec | |||
FROGGS | ya, and the important thing, it works ;o) | 07:34 | |
wasnt that easy to add methods to a class depending on $*OS | 07:35 | ||
and making them reusable, so that the Mac part uses the Unix stuff by default, just overwriting a few | |||
it would be easier if you just could do: self."$package".method() | 07:36 | ||
moritz | ::($package_name).^add_method($name, $method); | 07:37 | |
::($package_name).^compose | |||
FROGGS | inside submethod BUILD? | 07:38 | |
and if $name is the method name to add, what is $method? | |||
what does compose do? | |||
so much questions... I hope you already got your coffee ;o) | 07:39 | ||
07:40
cognominal joined,
cognominal left
07:41
cognominal joined
|
|||
hoelzro | does NativeCall work with C functions that require callbacks? | 07:42 | |
FROGGS | hoelzro: it does | ||
there is a t/callbacks.t, have a look at that | |||
hoelzro | =D | 07:43 | |
I'm thinking of trying to write a small Gtk application in Perl6 | |||
FROGGS | Its pretty easy | 07:44 | |
you might have a look at SDL | |||
as an example | |||
github.com/PerlGameDev/SDL6/ | 07:45 | ||
hoelzro | whoa, cool | ||
FROGGS | SDL::Mixer::Channels uses callbacks | ||
hoelzro wishes he had more time to contribute to Rakudo | |||
tadzik | FROGGS: how is SDL6's NativeCall different from the original one? | 07:46 | |
Su-Shee | hoelzro: PLEASE do. and PLEASE make it Gtk3 and use the GIR stuff (look into the Perl5 module, Gtk3 already reaches out halfway to the target bindings..) | ||
FROGGS | ya, but writing modules is very important too | ||
tadzik: what do you mean? | |||
hoelzro | Su-Shee: GIR? | ||
tadzik | FROGGS: github.com/PerlGameDev/SDL6/blob/m...veCall.pm6 | ||
FROGGS | ohh this one | 07:47 | |
tadzik | it also makes me think we may need 'conflicts' and 'provides' in panda :F | ||
hoelzro | it would probably just be the minimum I'd need to write my application | ||
FROGGS | there is the refresh method (at bottom) commented out, my rakudo 2012.08 doesnt like it | ||
hoelzro | but that would be a repository accepting contributions for further refinement =) | ||
07:47
cognominal left
|
|||
FROGGS | but it shouldnt be in the repo though :/ | 07:47 | |
sorear | FROGGS: have you tried using "handles"? | 07:48 | |
Su-Shee | hoelzro: Gtk3 and related has made a facility to make bindings much easier by creating an external definition of all symbols (I think) so you just wrap _that_ and not the calls itself. the Gtk3 Perl5 module is like 150 lines of code and that's ALL gtk3. look into it before you wrap anything. | ||
hoelzro | Su-Shee: I knew that Gtk3 uses inspectable objects, which is nice! | 07:49 | |
sorear | hoelzro: if you use niecza it is possible to directly use the "gtk#" CLR binding | ||
hoelzro | so I'll probably go with that =) | ||
FROGGS | sorear: if I dont exactly know what you mean, does it states "no"? | ||
Su-Shee | hoelzro: live.gnome.org/GObjectIntrospection/ | ||
hoelzro: yes, that's exactly it! really, look into the Perl5 module, it couldn't be shorter... | |||
hoelzro | ok =) | ||
thanks for the info! | |||
Su-Shee | hoelzro: and half of the gnome stack actually HAS GIR, it's not just Gtk, but many libs more. | 07:50 | |
hoelzro | neat | ||
sorear | FROGGS: role File::Spec::Guts { ... }; class File::Spec { has $!guts handles File::Spec::Guts = pick-guts($*OS); }; class File::Spec::Unix does File::Spec::Guts { ... } | ||
hoelzro | so I could make a GIR module that Gtk3 would be based on | ||
07:51
cognominal joined
|
|||
sorear | tadzik: so I hear you've been playing with niecza | 07:51 | |
Su-Shee | well alright, it's 900 lines -> metacpan.org/source/TSCH/Gtk3-0.008/lib/Gtk3.pm | ||
FROGGS | sorear: no, haven't seen that possibility yet | ||
tadzik | sorear: I'm playing with it from time to time; I just ran some bailador code on it recently | ||
Su-Shee | hoelzro: no, you basically incorporate the GIR definition you generated and re-map it to perl calls so to speak. | ||
hoelzro | I see... | 07:52 | |
I'll have to investigate this some more... | |||
sorear | tadzik: I'm curious how it went | ||
Su-Shee | hoelzro: I strongly recommend it, otherwise you're doing the typical wrap-c-lib-by-hand stuff. | ||
FROGGS | sorear: I will try that, that looks pretty much like one approach I tried yesterday | 07:53 | |
tadzik | sorear: oh it was nice :) After I got over the surprise that niecza doesn't automagically pick ~/.perl6/lib it all went smoothly | ||
Su-Shee | hoelzro: and your gtk stuff has to be configured with --gobject-introspection of course. | ||
tadzik | works faster and better than rakudo, as in: it doesn't actually work on rakudo at all | ||
Su-Shee | hoelzro: atk, glib, pango, cairo, gtk, hmhm and hmhmhm. | ||
tadzik | (HTTP::Easy is broken) | ||
sorear: I got hit by the lack of nativecall later, quite understandably | 07:54 | ||
sorear | I wonder how hard it would be to get nativecall working on niecza | ||
moritz | surely there's already a nativecall interface for mono/.net? | 07:55 | |
hoelzro | NativeCall, imo, is one of the coolest things about Perl 6^W^WRakudo | ||
moritz | n: sub f($a, $b) { }; say &f.signature.perl | 07:56 | |
p6eval | niecza v21-2-gc592587: OUTPUT«Potential difficulties: $a is declared but not used at /tmp/iV10pdzAmf line 1:------> sub f(⏏$a, $b) { }; say &f.signature.perl $b is declared but not used at /tmp/iV10pdzAmf line 1:------> sub f($a, ⏏$b) { }; say &f.… | ||
moritz | n: sub f($a, $b) { $a + $b }; say &f.signature.perl | ||
sorear | moritz: yes, there is a .net nativecall interface | ||
p6eval | niecza v21-2-gc592587: OUTPUT«:(Any $a, Any $b)» | ||
hoelzro | I almost feel that the NativeCall library should be part of the spec | ||
07:56
cognominal left
|
|||
moritz | n: sub f($a, $b) { $a + $b }; say &f.signature.params.perl | 07:56 | |
p6eval | niecza v21-2-gc592587: OUTPUT«(Any $a, Any $b).list» | ||
sorear | hoelzro: it absolutely should be | 07:57 | |
maybe not a "full synopsis", but its interface should be significantly standardized | |||
hoelzro | yeah | ||
moritz | maybe not in its current form, but after going through one or two incremental interface optimizations | ||
07:58
cognominal joined
|
|||
FROGGS | @all: IMO every module should run in the end on all platforms/compilers/interpreters with the same behaviour | 08:00 | |
there is no need to write extra specs, the docs should be enough, no? | |||
but if you think NativeCall as a "core" module then just the docs are at a different place | 08:01 | ||
moritz | right | ||
FROGGS | but hey, I can write a synopsis for my bubblebreaker game ;o) | 08:02 | |
sorear | FROGGS: NativeCall is an unusual case because of how tied to the runtime it is | 08:04 | |
Niecza and Rakudo are likely to have more or less exactly the same Temporal, for instance, in the future, even though Temporal is in the setting | 08:05 | ||
s/Temporal/DateTime/g | |||
NativeCall is outside the setting, yet I doubt niecza and rakudo will ever share much code there | 08:06 | ||
08:06
cognominal left
|
|||
sorear is reading the docs for the .net "NativeCall"-like functionality | 08:06 | ||
08:08
thou left
08:12
bugi joined,
bugi is now known as Guest14777
|
|||
dalek | ecza: f1ac9af | sorear++ | lib/CodeGen.cs: Use real constant-table entries instead of directly accessing Kernel.FooMO in the code generator |
08:18 | |
ecza: 3a9759e | sorear++ | lib/CodeGen.cs: Remove now-dead code generation for static field access |
|||
FROGGS | sorear: how can I return my class File::Spec::Unix by pick-guts that is declared in another file? | ||
sorear | require File::Spec::Unix; return ::("File::Spec::Unix") | 08:19 | |
FROGGS | ohh | ||
sorear | theoretically you should be able to do just "return File::Spec::Unix" | 08:20 | |
08:20
Psyche^ joined
|
|||
sorear | but there are spec problems with the handling of double-colon names | 08:20 | |
08:24
Psyche^ is now known as Patterner,
domidumont joined,
Guest14777 left
|
|||
sorear | I am thinking of speccing "require" to return the object which it treats as a bindable class name | 08:25 | |
so that the code for FROGGS would simply become 'return require File::Spec::Unix' | 08:26 | ||
I would like at least one +1 before I commit to the spec | 08:27 | ||
FROGGS | sounds cool | ||
sorear++ | |||
? | |||
moritz | nr: say (require Test) | 08:29 | |
p6eval | niecza v21-2-gc592587: OUTPUT«Unhandled exception: System.NotImplementedException: The requested feature is not implemented. at Anon.1.Run.MAIN.C0mainline (Niecza.Frame ) [0x00000] in <filename unknown>:0  at Niecza.Kernel.RunCore (Niecza.Frame& cur) [0x00000] in <filename unknown>:… | ||
..rakudo 0e36b2: OUTPUT«Nil» | |||
sorear | n: say (require "Test") | ||
p6eval | niecza v21-2-gc592587: OUTPUT«===SORRY!===Expressional forms of require NYI at /tmp/eZjBlgmnrD line 1:------> say (require "Test"⏏)Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1435 (die @ 5)  at /home/… | 08:30 | |
jnthn | Would it desugar to like do { require-primitive Foo::Bar; ::('Foo::Bar') } ? | ||
And if the module doesn't actually have something matching that name, you just get Any or so? | |||
sorear | jnthn: per spec, require is supposed to stub Foo::Bar at compile time | ||
jnthn: then install something into it later | |||
I'm just adding a clause that the returned value is the installed value | |||
jnthn | S11 says a lot of things :) | ||
Well, require can't really do the installation | 08:31 | ||
It'd be a product of global merging, no? | |||
sorear | Well, "use" is already doing this | ||
Insofar as: | |||
A.pm: my class A { } | |||
b.pl: use A; | |||
finds an object in A.pm and binds it to 'A', without involving global scopes | |||
moritz | r: sub f { use Test }; say f() | ||
p6eval | rakudo 0e36b2: OUTPUT«Nil» | ||
jnthn | That will not get you an A unless you add "is export" | 08:32 | |
Exporting lexical stuff not marked as "is export" is just wrong. | |||
And it can work without "use" doing any kind of stubbing. | |||
sorear | it absolutely will. | ||
moritz | sorear: which part? | 08:33 | |
jnthn | I've considered locating what file to load and handling import and global merging as distinct things ever since EXPORT became lexical. | 08:35 | |
sorear | they are separate things | ||
jnthn | Right, so why is the mere presence of a "use" statement thinking it should do symbol installation? | ||
It's global merging and the stuff in EXPORT that adds any symbols anywhere. | 08:36 | ||
sorear | ok, jnthn | ||
how do you think "need MyClass" works? | 08:37 | ||
see also S11:181 | |||
jnthn | That just loads the module in question and does global merging, but doesn't do any kind of import. | ||
sorear | there are two import steps in a "use" statement | ||
one of them installs a lexical alias to the module object that is being imported | 08:38 | ||
the other insgtalls aliases to exported symbols | |||
jnthn | "module object" makes no sense to me. | ||
sorear | n: use Test; say Test.WHAT | ||
jnthn | Also s11 says a lot of conflicting things. | ||
p6eval | niecza v21-2-gc592587: OUTPUT«Unhandled exception: Unable to resolve method gist in type Test at /home/p6eval/niecza/lib/CORE.setting line 1293 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 1295 (gistcat @ 6)  at /home/p6eval/niecza/lib/CORE.setting line 1297 (say @ 7) … | ||
08:39
mucker joined
|
|||
dalek | ecs: d46a8ab | sorear++ | S11-modules.pod: Spec a useful return value for "require" This is inspired by some repetitive code being written for File::Spec, see irclog.perlgeek.de/perl6/2012-09-14#i_5986754 . |
08:45 | |
08:47
wk__ joined,
wk_ left,
mdupont_ joined
09:00
GlitchMr left
09:03
daniel-s_ joined
09:11
kresike joined
|
|||
kresike | hello all you happy perl6 people | 09:11 | |
tadzik | kresike! \o/ | ||
kresike | tadzik, o/ | 09:12 | |
Guest33156 | 0、 | 09:18 | |
o/ | 09:19 | ||
tadzik | hello | ||
masak | hi, Guest33156. | ||
sorear | o/ | 09:20 | |
Guest33156 | hi | ||
why? my name is guest. i have named | 09:21 | ||
09:22
M_o_C joined
|
|||
Guest33156 | in other service, i have the same set | 09:23 | |
but in this service i named Guest | |||
09:24
cogno joined
|
|||
Guest33156 | i don't understand. | 09:24 | |
sorear | Guest33156: someone else has registered your name. | ||
the system gave you 1 minute to present the correct password | 09:25 | ||
when you didn't, it renamed you. | |||
Guest33156 | oh. | 09:26 | |
sorear | my advice is to pick a less common name | ||
Guest33156 | yes | ||
09:27
Guest33156 left,
anuby joined
|
|||
anuby | i renamed | 09:27 | |
now i am not the guest. | 09:29 | ||
sorear | welcome, person formerly known as scott__ | ||
anuby | sorear:how can you got my formerly name? | 09:30 | |
sorear | moritz: I might put some effort into NativeCall on niecza this month or next, looking over the MSDN docs suggests this is highly possible | ||
09:31
wamba left
|
|||
sorear | anuby: if you run /whois anuby it will tell you a few bits of information | 09:31 | |
on irc there are 2 secondary names | |||
anuby | sorear:thank, i got it | 09:32 | |
sorear | your names are currently anuby, scott, and scott | ||
this doesn't prove that you are the same person as scott__, but it's enough to guess | |||
anuby | whois sorear | ||
sorear | needs the slash in front | ||
anuby | yes | ||
09:34
cogno left
09:35
raiph joined
|
|||
FROGGS | sorear: these handles are only initialized if I do File::Spec.new | 09:37 | |
is there a good way to come around that without add all the methods that get declared in the ::Unix class? | 09:38 | ||
raiph | blogs.perl.org/users/perl_6_reports...09-02.html | ||
moritz | raiph++ | 09:39 | |
sorear | r: class Foo { method bar { 2 } }; class Bar { method get_foo handles <bar> { Foo } }; say Bar.bar | 09:40 | |
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Cannot call 'trait_mod:<handles>'; none of these signatures match::(Attribute:D $target, $thunk)at /tmp/a39kLIiaMg:1» | ||
sorear | r: class Foo { method bar { 2 } }; class Bar { our $!x handles <bar> = Foo }; say Bar.bar | ||
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Cannot use ! twigil on our variableat /tmp/IS22kTlmRA:1» | ||
sorear | r: class Foo { method bar { 2 } }; class Bar { our $.x handles <bar> = Foo }; say Bar.bar | ||
p6eval | rakudo 0e36b2: OUTPUT«No such method 'bar' for invocant of type 'Bar' in block at /tmp/9fDMNGxt12:1» | ||
sorear | r: class Foo { method bar { 2 } }; class Bar { my $.x handles <bar> = Foo }; say Bar.bar | ||
p6eval | rakudo 0e36b2: OUTPUT«No such method 'bar' for invocant of type 'Bar' in block at /tmp/Q8cKoaym_v:1» | ||
sorear | r: class Foo { method bar { 2 } }; class Bar { my $!x handles <bar> = Foo }; say Bar.bar | ||
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Cannot use ! twigil on my variableat /tmp/XPQCMEG5EM:1» | ||
sorear | FROGGS: it seems that there is no working way in current Rakudo | 09:41 | |
FROGGS: you could use .^add_fallback directly, but don't ask me for the details | |||
FROGGS | k, thanks you | ||
k, I'll try something | 09:42 | ||
raiph | moritz: i did this report manually. took me forever. | 09:44 | |
09:44
am0c joined
|
|||
raiph | moritz: but the format is intended to be something that's very easy to produce. | 09:44 | |
moritz: if there was an appropriate variant of or addition to your irclogging software | 09:45 | ||
moritz | raiph: that can be discussed :-) | ||
raiph: I already have a branch which adds (on request) check boxes | |||
which you can then click, and mark those lines that make up the summary | |||
and then I can add an export function or so | 09:46 | ||
tadzik | raiph: awesome job, thank you! | 09:48 | |
moritz | raiph: what kind of tools do you want from the IRC logs/ | 09:49 | |
? | |||
raiph | let me prepare my thoughts for a few minutes... | 09:50 | |
FROGGS | raiph++ | ||
sorear | tadzik: what's a nice NativeCall binding to focus on? | 09:51 | |
tadzik | sorear: DBIish I guess | 09:52 | |
that's what stopped me from running źblog an niecza :) | |||
09:53
the joined,
the is now known as Guest49709
|
|||
Guest49709 | hey | 09:53 | |
can anyone help | |||
sorear | Guest49709: not without knowing your problem. | 09:54 | |
moritz | though maybe the right solution is to make niecza-specific backends for DBIish | 09:56 | |
tadzik | I think sorear is generally trying to get NativeCall for niecza | ||
sorear | let's have sharable NativeCall versions | 09:57 | |
but I guess an ADO.NET backend wouldn't be a horrible idea | |||
tadzik: what is źblog? | |||
09:57
cogno joined
|
|||
tadzik | sorear: it's a not-really-blog engine on Bailador | 09:58 | |
it's using DBIish, templates and all this | |||
09:59
dayangkun left
10:03
daxim joined
10:05
wamba joined
10:08
cogno left,
hypolin left
|
|||
arnsholt | sorear: I'd love to talk about ways to have sharable NativeCalls for Rakudo and Niezca | 10:08 | |
sorear | arnsholt: can it wait until tomorrow? | 10:10 | |
arnsholt | Sure | ||
sorear | sleep& | ||
arnsholt | Sleep well. I'm in no rush | 10:11 | |
10:13
anuby left
10:26
gootle left
10:57
kaleem left
10:58
Guest49709 left
11:05
Su-Shee_ joined
11:10
Su-Shee_ is now known as Su-Shee
11:14
drbean joined
11:19
mucker left
|
|||
raiph | sleep& | 11:24 | |
moritz | sleep well | 11:25 | |
11:25
crab2313 joined
|
|||
eiro | hello all | 11:30 | |
hoelzro | o/ eiro | 11:31 | |
11:31
crab2313 left
11:32
crab2313 joined
|
|||
eiro | is there a syntax to create a token within the regexp ? like perl5 named capture ? | 11:38 | |
arnsholt | Yes | ||
moritz | $<foo> = [ regex here ] | ||
arnsholt | The <subrule> syntax creates it automatically | ||
eiro | qr/(?<id> \d+)/ | ||
arnsholt | If you don't want to use a subrule, what moritz said | 11:39 | |
eiro | ok thanks | ||
moritz | r: 'abc' ~~ /$<name>=\d+/; say $/.keys | ||
p6eval | rakudo 0e36b2: OUTPUT«» | ||
moritz | huh. | ||
r: 'abc' ~~ /$<name>=\w+/; say $/.keys | |||
p6eval | rakudo 0e36b2: OUTPUT«name» | ||
moritz | it helps to actually match :-) | ||
arnsholt | Yeah, that'll work better ^_^ | ||
eiro | actually i'm trying to figure out what the url dispatching rule from flask '/user/<int:id>' could be written in a perl6 regex | 11:40 | |
Su-Shee | probably the same way as in the dancer variant whatsitcalled.. bailador.. | 11:41 | |
eiro | rx( /user/[ $<id> = <digit>+ ] ) | ||
arnsholt | So, that captures an int named id? | ||
Right | |||
eiro | cool! | ||
thanls | |||
arnsholt | I think that'll work, yeah | ||
11:42
raiph left
|
|||
moritz | if you don't want to capture each digit separately, use <.digit> | 11:42 | |
oh, and you need to escape or quote those slashes | |||
so | |||
arnsholt | r: "/user/123" ~~ m{/user/$<id>=[\d+]}; say $<id> | ||
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Unrecognized regex metacharacter / (must be quoted to match literally) at line 2, near "user/$<id>"» | ||
arnsholt | r: "/user/123" ~~ m{"/user/"$<id>=[\d+]}; say $<id> | ||
p6eval | rakudo 0e36b2: OUTPUT«「123」» | ||
eiro | rx( /user/[ $<id> = <digit>+ { fail unless $0 < 1000 ] ) | ||
moritz | rx{ '/user/' <$id> = \d+ } | ||
eiro | it can work ? | ||
moritz, <digit> isn't defined ? i thought it was | 11:43 | ||
moritz | eiro: nobody knows what fail() is supposed to do in regexes | ||
eiro | moritz, just don't match :) | ||
arnsholt | Digit should be defined | ||
moritz | rathr write <?{ $<id> < 1000 }> | ||
arnsholt | Er, digit, that is | ||
moritz | nr: say '42' ~~ /<digit>/ | ||
p6eval | niecza v21-4-g3a9759e: OUTPUT«#<match from(0) to(1) text(4) pos([].list) named({"digit" => #<match from(0) to(1) text(4) pos([].list) named({}.hash)>}.hash)>» | ||
..rakudo 0e36b2: OUTPUT«「4」 digit => 「4」» | |||
arnsholt | Damn sentence case | ||
eiro | outch... now i have to put it all together again ... | 11:44 | |
arnsholt | eiro: perlcabal.org/syn/S05.html#Predefined_Subrules has all the predefined rules | ||
moritz | nr: say '/user/42' ~~ rx{ '/user/' $<id>=\d+ $ <?{ $<id> < 1000 }> } | ||
p6eval | niecza v21-4-g3a9759e: OUTPUT«#<match from(0) to(8) text(/user/42) pos([].list) named({"id" => #<match from(6) to(8) text(42) pos([].list) named({}.hash)>}.hash)>» | ||
..rakudo 0e36b2: OUTPUT«「/user/42」 id => 「42」» | |||
eiro | i'll use \d+ | ||
moritz | nr: say so '/user/12345' ~~ rx{ '/user/' $<id>=\d+ $ <?{ $<id> < 1000 }> } | 11:45 | |
p6eval | rakudo 0e36b2, niecza v21-4-g3a9759e: OUTPUT«False» | ||
eiro | p6eval, rx{ '/user/' <$id> = \d+ <?{ $<id> < 1000 }>'} | ||
nr: rx{ '/user/' <$id> = \d+ <?{ $<id> < 1000 }>'} | 11:46 | ||
p6eval | niecza v21-4-g3a9759e: OUTPUT«===SORRY!===Variable $id is not predeclared at /tmp/qSrg0Y6Yb7 line 1:------> rx{ '/user/' <⏏$id> = \d+ <?{ $<id> < 1000 }>'}Unrecognized regex metacharacter = (must be quoted to match literally) at /tmp/qSrg0Y6Yb7 … | ||
..rakudo 0e36b2: OUTPUT«=␀␀␀=␀␀␀=␀␀␀S␀␀␀O␀␀␀R␀␀␀R␀␀␀Y␀␀␀!␀␀␀=␀␀␀=␀␀␀=␀␀␀␀␀␀V␀␀␀a␀␀␀r␀␀␀i␀␀␀a␀␀␀b␀␀␀l␀␀␀e␀␀␀ ␀␀␀$␀␀␀i␀␀␀d␀␀␀ ␀␀␀i␀␀␀s␀␀␀ ␀␀␀n␀␀␀o␀␀␀t␀␀␀ ␀␀␀d␀␀␀e␀␀␀c␀␀␀l␀␀␀a␀␀␀r␀␀␀e␀␀␀d | |||
moritz | $<id> vs. <$id> | ||
eiro | this was just a question mark :) | ||
moritz | ok :-) | ||
eiro | nr: rx{ '/user/' $<id> = \d+ <?{ $<id> < 1000 }>'} | ||
p6eval | niecza v21-4-g3a9759e: OUTPUT«===SORRY!===Unrecognized regex metacharacter ' (must be quoted to match literally) at /tmp/wD4U5wdcVx line 1:------> /user/' $<id> = \d+ <?{ $<id> < 1000 }>'⏏}Unhandled exception: Check failed at /home/p6eval/nie… | ||
..rakudo 0e36b2: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<{ }>, couldn't find final '}' at line 2, near "'/user/' $"» | |||
eiro | yeah :) | 11:47 | |
thank you all | |||
arnsholt | <$id> will use the thing in $id as a subrule | ||
eiro | i'll talk about perl6 regexp during my pycon talk :) | ||
tadzik | wow :) | 11:48 | |
11:52
GlitchMr joined
11:53
the joined
11:54
the is now known as Guest9049
11:55
snearch joined
|
|||
eiro | cya all and thanks | 12:08 | |
12:09
wamba left
|
|||
dalek | q: 426f666 | GlitchMr++ | answers.md: `want` in Perl 5 is called `wantarray`, not `wantarry`. |
12:10 | |
GlitchMr | Also: "easy to understand, explicit scoping rules (unlike Python)" | 12:12 | |
It reminds me why Python was rather annoying for me. | 12:13 | ||
At least Python 3 has 'nonlocal', but it's still annoying | |||
... that `nonlocal` actually reminds me `use` from PHP | 12:16 | ||
huf | i wonder why they went the `nonlocal` way instead of the `use strict` way... | 12:17 | |
moritz | to break less code, I think | 12:18 | |
GlitchMr | Why not overload `global`? | ||
huf | it'd only affect new code anyway | ||
use strict; aint gon magically appear in a source file | |||
moritz | yes, but if you want to use it, you have to fix the whole file | ||
huf | or whatever the pythonic equivalent of such a declaration would be | ||
moritz: true | |||
moritz | oh, and did I mention that 'nonlocal' is a terrible name? | ||
huf | ah well, road to hell, good intentioned paving stones, all that | 12:19 | |
moritz | why say what it's not? | ||
GlitchMr | This is why I think the scoping in JavaScript and Perl is better | ||
moritz | if it's not local, what is it? global? file scoped? related to closures? /me has no idea | ||
huf | up_yours | ||
err, i mean the blocks | |||
moritz | (and if you can't find a good name for a concept, that can be a warning sign too0 | 12:20 | |
s/0/)/ | |||
GlitchMr | I wonder how Pythonic would be this instead: 'def inner() using (x): | ||
12:21
mtk joined,
kaleem joined
|
|||
huf | GlitchMr: huh, on first glance, that looks saner than nonlocal | 12:21 | |
which is amazing, since it's lifted straight from php | |||
arnsholt | huf: use strict is right out, since Python doesn't distinguish declaration and use | 12:22 | |
huf | arnsholt: but with a strict mode, it could, is what i'm saying. | 12:23 | |
arnsholt | And, I'm pretty sure they want it to stay that way (for some reason) | ||
huf | of course, if my aunt had wheels, she'd be the tram | ||
so this is all pointless faffing | |||
arnsholt | Well yes, but I don't think van Rossum wants that distinction in Python, for whatever reason | ||
Well true | |||
12:24
benabik left,
benabik joined
|
|||
GlitchMr | (also, CoffeeScript, while compiles to JavaScript somehow manages to completely break scoping) | 12:25 | |
Su-Shee | javascript's scoping is weird. how does coffeescript break it? | 12:26 | |
GlitchMr | Su-Shee: lucumr.pocoo.org/2011/12/22/implici...feescript/ | 12:29 | |
huf | i am now very afraid. | ||
GlitchMr | JavaScript scoping was fine | 12:30 | |
huf | i never understood why people think declaring is such a burden that it's worth introducing much more complex and weird interactions to do away with it | ||
GlitchMr | It wasn't block scoped, it was function scoped, but other than that it was fine | ||
huf | GlitchMr: the hoisting thing is scary as hell tho | ||
function() { a = 1; var a; } /* just... why */ | |||
GlitchMr | Why somebody would do that | 12:31 | |
moritz | by accident | ||
arnsholt | huf: I agree. Especially since it precludes things like variable name checking, which is really, really nice | ||
GlitchMr | Why somebody would assign to variable before predeclaration | ||
declaration* | |||
moritz | nr: eval 'say $foo'; my $foo = 42; | ||
p6eval | rakudo 0e36b2: OUTPUT«Any()» | ||
..niecza v21-4-g3a9759e: OUTPUT«Potential difficulties: $foo is declared but not used at /tmp/qtflYjse8v line 1:------> eval 'say $foo'; my ⏏$foo = 42;Any()» | |||
huf | GlitchMr: try to imagine a case that's a tiny bit more complex than the example i gave | ||
moritz | nr: sub f() { eval 'say $foo' }; my $foo = 42; f() | ||
p6eval | niecza v21-4-g3a9759e: OUTPUT«Potential difficulties: $foo is declared but not used at /tmp/DYh7vwN94v line 1:------> sub f() { eval 'say $foo' }; my ⏏$foo = 42; f()42» | ||
..rakudo 0e36b2: OUTPUT«42» | |||
huf | also try to imagine multiple programmers working on code, with differnet skillsets | ||
sometimes some of them are tired | |||
moritz | note that variables are block-scoped in Perl 6, it's only the parser that restricts their use to after the declaration | 12:32 | |
huf | oh heh | ||
arnsholt | huf: Also, I am intimately aware that I'm really stupid. I want all the help I can get from the compiler =) | ||
huf | arnsholt: oh _yes_ | 12:33 | |
Su-Shee | I don't even understand his problem in this article.. | ||
huf | even if we're writing in a goo-language where everything is everything, some bondage is nice | ||
12:33
JimmyZ joined
|
|||
arnsholt | Su-Shee: He wanted to shadow the variable log, but instead it overwrote the global one | 12:33 | |
GlitchMr | That is - adding variable could break program | 12:35 | |
Su-Shee | arnsholt: I understood the article. I don't understand what his problem is, but I usally don't get why people have problems with different kinds of scoping.. | ||
GlitchMr | This simply wouldn't have happen in any other kind of scoping | ||
arnsholt | r: my $x = "outer"; { my $x = "inner"; say $x; }; say $x; | ||
p6eval | rakudo 0e36b2: OUTPUT«innerouter» | ||
GlitchMr | my/var or nonlocal/use based | ||
arnsholt | That's impossible in CoffeeScript, which is a problem since variables and functions share the same namespace | 12:36 | |
12:36
kaleem left
|
|||
arnsholt | So it's reasonably easy to overwrite a standard library function, which will lead to non-local failures and other action at a distance bugs, which will probably be hell to debug | 12:37 | |
GlitchMr | coffeescript.org/#try:%23a%20%3D%20...20%3D%2024 | ||
Uncomment first line to see problem | |||
eiro | if some want to review my slides: ramirez.u-strasbg.fr/pycon.odp | ||
Su-Shee | I think I had maybe one scoping-related mistake every 5 years... | 12:38 | |
eiro: what IS "opd"?! | |||
err odp | |||
arnsholt | That's because you program in Perl, which is very explicit about scope (as long as you use strict) =) | ||
OpenOffice Presenter, I assume | 12:39 | ||
12:39
Guest9049 left
|
|||
arnsholt | Or whatever OOo Power Point is called =) | 12:39 | |
12:39
Guest9049 joined
|
|||
Su-Shee | arnsholt: I program Perl, JavaScript, SQL, PL/SQL, C, Java, Ruby, Python and Smalltalk .. I don't have problems with different scoping.. | 12:39 | |
GlitchMr | Also, github.com/jashkenas/coffee-script...ch?q=scope | 12:40 | |
Su-Shee | ah. I don't have any office programs anymore since 1998. | 12:41 | |
arnsholt | Right. Then I guess you're just better at it than me =) | ||
kresike | What is the point of having a script language compile to another script language ? | ||
Su-Shee | arnsholt: that's not it, it's just not my realm of mistakes. | 12:42 | |
arnsholt | I think the main motivation is that JavaScript has some really weird corners (and Python syntax, obviously =) | ||
Su-Shee | kresike: cleanup. coffeescript is the better, nicer javascript. | ||
moritz | kresike: the point is to make it run a platform (browser) that accepts just that single language | ||
eiro | it's oo presenter | ||
got to go | |||
cya | |||
GlitchMr | kresike: also, Perlito also does that | 12:43 | |
Su-Shee | every DSL does it. ;) | ||
GlitchMr | Well, even every C compiler does that | 12:44 | |
kresike | Instead of writing one of these compilers, maybe people should work on making the original script language better ? | ||
GlitchMr | Those compilers compile C to assembly | ||
kresike: tell IE6 to magically improve ;-) | |||
kresike | But that would require a perfect world ... | ||
Su-Shee | kresike: wake up. how realistic is it that the entire planet switches to "browser x which now has the clean version of javascript".. | ||
which first would require that they decide on one ;) | 12:45 | ||
Dart? Rust? Coffeescript? | |||
GlitchMr | Perlito? | ||
kresike | :) Perl ? | ||
GlitchMr | Programming for the web using Perl could be fun | ||
Su-Shee | no, it's not, one thing that javascript has actually going for itself is the ease of moving function objects around and create objects on the fly thanks to "no classes" and the slightly evented twist in JS.. | 12:46 | |
kresike | GlitchMr, I believe that _can_ be done | ||
you just need to run it on a server, not a crappy browser ... | 12:47 | ||
Su-Shee | yes, they tried that already in the late 90ies, there was a short loved perl in browser thingie. | ||
GlitchMr | kresike: but in browser! | 12:48 | |
Su-Shee | kresike: browsers aren't crappy, they're amazingly fast and sophisticated rendering engines with events and networking facilities these days. they just lack - for obvious reasons - nice file i/o | ||
GlitchMr | I know that you can make CGI in AWK. That doesn't matter. | ||
huf | Su-Shee: err.. | ||
Su-Shee | short lived... | ||
huf | Su-Shee: they _are_ rather crappy when you get down to it :) | ||
GlitchMr | But in browser, you can only use JavaScript... or compile something to JavaScript | ||
moritz | or JVM | 12:49 | |
Su-Shee | huf: no, they're not. consider the level of crappiness browsers are able to deal with. that's an amazing feat. | ||
moritz | what happend to the bad old java plugins? | ||
huf | the platform is changing really fast though, and the standards are insane in places, so i think it's understandable | ||
but they're not good. they're perhaps as good as they can be, given circumstances. | |||
kresike | Su-Shee, tell that to all the programmers writing hacks to solve stupid problems caused by IE3...10 and all the other who knows what browsers out there ... | 12:50 | |
Su-Shee | huf: so, what exactly isn't good these days about the technical features of a browser? | ||
huf | Su-Shee: UI, stability, speed | ||
Su-Shee | kresike: I'm one of them. | ||
huf: WHAT? | |||
kresike | Yes, I know you can download a shiny new Chorme with the nice File API and be happy | ||
huf | Su-Shee: oh yeah and incompatibility | ||
kresike | but only 30% of the users have done that ... | 12:51 | |
Su-Shee | huf: a) UI isn't a technical category. b) my firefoxes and chromes run with MONTHS of constant uptime - I call that stable for a standalone application which isn't a server and HOW on earth do you get to "speed"?! | ||
huf | Su-Shee: *shrug* i had to restart chrome about 10 times yesterday because its inspector suddenly fell over and refused to function. i'm not aware of a sane way to force a complete refresh of all the assets of a website in chrome; it sometimes works, sometimes doesnt. firefox is dead slow. all of them are incompatible with each other in hilarious ways. | 12:52 | |
Su-Shee | ah, whatever, why do I bother. ok, browsers are bad and a piece of shit and all developers working on them are idiots. ;) | 12:54 | |
huf | Su-Shee: not what i said. | ||
Su-Shee | huf: I didn't say that you said that. | ||
huf | what i'm saying is that out of all the things i use, browsers cause me the most grief in every imaginable way. | ||
this might be the best that can be expected, given the way the web is | |||
but i dont like to call this "good" | |||
Su-Shee | yeah, whatever. think what you want. | 12:55 | |
12:55
benabik left,
wamba joined
12:56
mucker joined
|
|||
[Coke] | I think huf's experiences are uncommon. My biggest problem with browsers is writing cross-platform web apps, and that gets muuuch easier when the low bar is at least set to IE8. | 13:01 | |
huf | my experiences are fairly common among the people i talk to, or my coworkers. install a stock *, wiggle for an hour, shout. | 13:02 | |
kill -9, restart, continue | |||
13:03
Woodi joined
|
|||
[Coke] | huf: what's your platform? | 13:03 | |
huf | debian | ||
moritz | debian uses pretty ancient browsers | 13:13 | |
the new ones are much better | |||
tadzik | which debian? :) | ||
moritz | even debian testing uses pretty ancient browsers :( | ||
tadzik | unless you mean stable, aka "OSS Museum" they're pretty decent | ||
I don't have that impression | |||
huf | sid, but i dont see how this is really relevant. a) chrome is installed straight from google and b) i've seen these things consistently on winxp, win7, ubuntu and debian | 13:14 | |
and i dont mean to rag only on chrome, firefox is just as bad in very different ways :) | |||
moritz | $work still uses Debian Lenny in production :( | ||
(but I don't use browsers on it :-) | |||
doy | i haven't had any significant problem with firefox in a good year or two at this point | 13:16 | |
it did used to be pretty bad | |||
but it has improved pretty dramatically lately | 13:17 | ||
in my experience anyway | |||
Ulti | ooo Browser chat, FF is far better than Chrome at dealing with >30 tabs | ||
tadzik | I don't see why you need that. Both support bookmarks :) | 13:18 | |
huf | doy: yes, i see the improvement too. i suppose my main problem is that since it's almost an OS, it's entirely monolithic and i cant mix-and-match like i can on linux | ||
doy | what do you want to mix and match? | 13:19 | |
Ulti | everyone says this to me ;) I genuinely need this many things open at once, plus if I'm offline I still have what I need cached | ||
Su-Shee | tadzik: because it's a nice todo/toread list. I usally have about 30-40 tabs open - some constantly (mail), others "to read when time"... | ||
Ulti | I use 3 browsers just to have their caches for different projects with all the tabs left open | ||
Su-Shee | work alone is 7 tabs.. | 13:20 | |
doy | perhaps something like conkeror or uzbl is more what you're looking for if that's really important to you | ||
and yeah, i use tabs in preference to bookmarks too | |||
Su-Shee | oh, I'm fine. ;) | ||
doy | Su-Shee: no, i'm talking to huf | ||
(: | |||
huf | could be | ||
doy | recent versions of firefox are actually really nice about tab support too - tabs are lazily loaded now, so keeping 80 tabs or so open regularly isn't actually an issue at all | 13:21 | |
and the tab groups thing makes it easy to keep them organized | 13:22 | ||
Su-Shee | I've recently subscribed to pinboard and now I actually do bookmark things.. from time to time. | ||
13:22
bluescreen10 joined
13:23
fgomez left
|
|||
Ulti | the key to lots of tabs is flashblock | 13:23 | |
Su-Shee | what I really need is a proxy locally, capturing everything I've loaded, automatically analysing it, adding keywords and tags and load appropriate lists of suggestions when I input something into the urlbar. | ||
13:24
fgomez joined
|
|||
Su-Shee | "flock" had a similar mechanism in its infancy.. | 13:24 | |
Ulti | yeah if I had time I'd write my own browser that performs topic allocation on all my tabs and groups them | 13:25 | |
PerlJam | Ulti: and you're going to write it in perl 6? :) | 13:26 | |
tadzik | you can extend the existing one :) | 13:27 | |
it has gtk and webkit and stuff | |||
Su-Shee | it's 8 lines or so ;) | 13:28 | |
tadzik | that too :) | ||
Su-Shee | here, it even has back and forward ;) | ||
github.com/Su-Shee/prettyperl/blob.../webkit.pl | |||
tadzik | oh, but that's Perl 5 :) | 13:29 | |
github.com/sorear/niecza/blob/mast...browser.pl | |||
13:30
skids joined
|
|||
Su-Shee | "textonly"?! | 13:30 | |
tadzik | I'm not sure what does that mean | ||
istr it rendered everything just fine | |||
Su-Shee | mine has full-blown js support and everything ;) | ||
I think the Webkit lib wrapped even finds flash if available and uses it.. | 13:33 | ||
13:49
sirrobert joined
13:58
crab2313 left,
flightrecorder left
13:59
benabik joined
14:00
FROGGS left
14:04
snearch left
14:05
mtk left,
flightrecorder joined,
mtk joined
14:07
stopbit joined,
thou joined
|
|||
sirrobert | if I have a class A { has $.config_file; has %.config }, I don't quite get how I can use BUILD (or something else?) to call something like .read_config and store it in %.config | 14:08 | |
is it that I have to bless the object manually? | |||
ideally, there would be some way that I could hook into the object after it's completely built and do some initialization *after* everything else is done | 14:09 | ||
14:10
yarp joined,
dayangkun joined
14:12
spider-mario joined
|
|||
moritz | BUILD is the right place | 14:12 | |
14:12
FROGGS joined
|
|||
moritz | suppose someone inherits from your class | 14:12 | |
he wants to be able to call self.config in his BUILD method | 14:13 | ||
and that only works if you do it at BUILD time | |||
so, what's stopping you from using it in BUILD? | |||
14:14
yarp left,
PacoAir joined
14:16
PZt joined
14:19
Circlepuller_ joined
|
|||
moritz | sirrobert: perlgeek.de/blog-en/perl-6/object-c...ation.html # you don't need to call bless if you use BUILD | 14:22 | |
14:22
Circlepuller left,
Circlepuller joined
14:24
Circlepuller_ left
14:25
fhelmberger left
14:33
yarp joined
|
|||
yarp | r: say "hello" | 14:33 | |
p6eval | rakudo 0e36b2: OUTPUT«hello» | ||
FROGGS | r: my $path = '//abc/def///ghi'; $path ~~ s:g|/+| = '/'; say $path | 14:35 | |
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Quantifier quantifies nothing at line 2, near "| = '/'; s"» | ||
FROGGS | r: my $path = '//abc/def///ghi'; $path ~~ s:g/\/+/ = '/'; say $path | ||
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Confusedat /tmp/nJqjJCdrQ7:1» | ||
FROGGS | r: my $path = '//abc/def///ghi'; $path ~~ s:g[\/+] = '/'; say $path | 14:36 | |
p6eval | rakudo 0e36b2: OUTPUT«/abc/def/ghi» | ||
FROGGS | ahh | ||
14:40
yarp left
14:51
sqirrel joined
14:58
benabik_ joined
15:01
benabik left,
benabik_ is now known as benabik
|
|||
kresike | bye folks | 15:06 | |
15:06
kresike left
15:07
yarp joined
|
|||
FROGGS | what OSes do we support right now? | 15:08 | |
unix and windows only, right? | |||
tadzik | I think so | 15:11 | |
FROGGS | k, just because of the tests for File::Spec | 15:12 | |
tadzik: I removed the roles, and calling the package subs directly, github.com/FROGGS/p6-File-Spec/tree/no_roles | |||
feels cleaner and simpler | 15:13 | ||
sirrobert | moritz: thanks (was AFK a min) | ||
15:13
am0c left
|
|||
FROGGS | advantage: you dont have to declare dummy roles just to auto-add methods from another role | 15:13 | |
disadvantage: you have to add all methods to your base class, with params etc | 15:14 | ||
yarp | Can't install Math::Vector due to ...? | 15:16 | |
15:20
FROGGS left,
flightrecorder left
15:25
dayangkun left,
LlamaRider left
|
|||
colomon perks up at the mention of Math::Vector | 15:26 | ||
15:28
wk__ left,
marmay left
|
|||
yarp | ==> Fetching Math::Vector | 15:36 | |
==> Building Math::Vector | |||
Compiling lib/Math/Vector.pm | |||
===SORRY!=== | |||
Serialization Error: could not locate static code ref for closure 'block_immediate' | |||
Mu() | |||
build stage failed for Math::Vector: Failed building lib/Math/Vector.pm | |||
in block at lib/Panda/Builder.pm:53 | |||
15:38
kaleem joined
15:39
tokuhiro_ joined,
fgomez left
15:40
fgomez joined
|
|||
sirrobert | ok, the thing that always throws me off about BUILD is that I can only access the private version, not the accessors. It makes perfect sense, but it's super hard to remember when you're learning. | 15:49 | |
That should be something that's emphasized a fair bit in the "BUILD" section of some manual | |||
or whatever. | |||
PerlJam | we have a manual? :) | ||
sirrobert | a theoretical future manual =) | ||
I will put up a blog post about it right now, actually... | |||
TimToady | it's kinda funny, rosettacode.org/wiki/Ackermann_function#Perl_6 runs faster in rakudo than in niecza (actually, doesn't work at all in niecza since I put the memoizing into the proto) | 15:52 | |
15:52
stepnem left
|
|||
TimToady | otoh, rosettacode.org/wiki/Truncatable_primes#Perl_6 runs 150 times slower in rakudo than in niecza | 15:52 | |
so maybe that would be a good one to profile | |||
jnthn | ooh | 15:53 | |
And I just stopped having an insane workload :) | |||
jnthn will give it a profile later :) | 15:54 | ||
TimToady | cool | ||
15:54
fgomez left
15:55
kaleem left
|
|||
skids | r: role A [:$i = 1] { method foo { $i.say }}; role B [:$i = 2] { $i.say; also does A[:i($i)] }; class C does B[] { }; my C $c .= new(); $c.foo; | 15:57 | |
p6eval | rakudo 0e36b2: OUTPUT«2Mu()» | ||
15:58
am0c joined
|
|||
skids | I could understand where that would be ambiguous when done outside the braces, but how is either form specced? | 15:58 | |
jnthn | Well, for one the Rakudo behavior on such ambiguity changed last night... | 15:59 | |
So now "first one wins". | |||
oh, wait | |||
The roles had differnt names | |||
What ambiguity? :) | |||
JimmyZ | rosettacode.org/wiki/Truncatable_primes#Perl_6, rakudo's answer is different? | 16:00 | |
only perl 6 one outputs 999983 | |||
TimToady | the answer is the same, but it runs in 8 minutes rahter than 3 seconds (niecza) | 16:01 | |
JimmyZ | no , i'm wrong | ||
jnthn | skids: Anyway, I think that the "also does" is evalauted once when parsing the role, since it's a trait and those are static. | ||
Thus the $i is not yet defined at that point, thus the Mu. | |||
Roles are macro-ish, but not actually macros :) | 16:02 | ||
skids | jnthn: I mean if you try to feed those role params forward in a role A [*] does B [*] then $i could be the role param or an in-scope $i. | ||
16:02
kaleem joined
|
|||
jnthn | skids: oh | 16:02 | |
skids: But that's not ambiguous. | |||
In the same way that sub foo($a) { } is not ambiguous about the scope of the $a :) | 16:03 | ||
sirrobert | r: class A { has $.x; submethod BUILD () { $!x = 4; } } class B is A { submethod BUILD () { $!x = 5; } } say A.new.x; say B.new.x; | ||
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Confusedat /tmp/bDJO2etryV:1» | ||
sirrobert | dang, one sec | ||
jnthn | It's just a signature on the role | ||
sirrobert | r: class A { has $.x; submethod BUILD () { $!x = 4; } }; class B is A { submethod BUILD () { $!x = 5; } }; say A.new.x; say B.new.x; | ||
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Attribute $!x not declared in class Bat /tmp/H_SuSbSZbo:1» | ||
sirrobert | is there any way to do that? | ||
to change a property from a super class in a subclass's BUILD? | 16:04 | ||
skids | Point being that role A [*] does role B [*] gets confusing, where the "also does" form is less so. | ||
The other point being that not being able to DWIM above makes it kinda difficult to make a kitchen sink role and then use it as a crony for more specific roles. | 16:05 | ||
jnthn | sirrobert: You don't. | 16:06 | |
PerlJam | sirrobert: you'd use the public accessor to do that. | ||
sirrobert: B's $!x would be and is different from A's $!x | 16:07 | ||
jnthn | skids: That may or may not be fixalbe. | ||
sirrobert | PerlJam: hm ok | ||
jnthn | Bit too tired to think clearly enough about it right now :) | ||
sirrobert | PerlJam: I didn't realize that | ||
skids | It would at least have to start with a spec clarification. | ||
skids lunchtime | 16:09 | ||
sirrobert | $!x is called the "private variable", self.x is the "public accesspr | 16:11 | |
accessor" | |||
what would I call the $.x form? | |||
internal? | |||
TimToady | that's also just a public accessor, but when used in the has, implies the $!x as well | ||
sirrobert | but it's not synonymous with self.x | 16:12 | |
how do I refer to the difference? | |||
TimToady | it means $(self.x) | ||
likewise @.x means @(self.x) | 16:13 | ||
sirrobert | trying to write a tutorial-type blog entry | 16:14 | |
TimToady | including the fact that you can pass arguments to the accessor, if .x is really a method instead | ||
sirrobert | I want a name for the difference that accounts for this effect: | ||
PerlJam | sirrobert++ the more tutorials the better :) | ||
TimToady | so you can write @.x(1,2,3) and it means @(self.x(1,2,3)) | ||
sirrobert | class A { has $.x; submethod BUILD () { self.x = 4; $(self.x) = 5; $.x = 6; } }; say A.new.x; | ||
r: class A { has $.x; submethod BUILD () { self.x = 4; $(self.x) = 5; $.x = 6; } }; say A.new.x; | |||
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Virtual call $.x may not be used on partially constructed objectsat /tmp/K8YkedqeQ5:1» | ||
sirrobert | r: class A { has $.x; submethod BUILD () { self.x = 4; $(self.x) = 5; } }; say A.new.x; | ||
p6eval | rakudo 0e36b2: OUTPUT«Cannot assign to a readonly variable or a value in submethod BUILD at /tmp/Xj2RefjtY_:1 in method BUILDALL at src/gen/CORE.setting:655 in method bless at src/gen/CORE.setting:640 in method new at src/gen/CORE.setting:625 in block at /tmp/Xj2RefjtY_:1»… | 16:15 | |
sirrobert | ugh | ||
r: class A { has $.x is rw; submethod BUILD () { self.x = 4; $(self.x) = 5; } }; say A.new.x; | |||
p6eval | rakudo 0e36b2: OUTPUT«5» | ||
sirrobert | the first one doesn't work, the third form does. | ||
16:15
M_o_C left
|
|||
sirrobert | s/form/example/ | 16:15 | |
both self.x=4 and $(self.x)=5 work in BUILD | 16:16 | ||
as does $!x=6 | |||
TimToady | yes, we arbitrarily disallow the $.x form while the object is still being built | ||
16:16
kaleem left
|
|||
sirrobert | but $.x=7 doesn't | 16:16 | |
so ... I need to talk about it as meaningfully different than the other forms ... =) | |||
TimToady | because it is in fact a virtual method call | 16:17 | |
sirrobert | ok | ||
TimToady | and we don't want people to think of it as synonymous with $!x when it isn't | ||
sirrobert | I can talk about it as the virutal-method accessor | ||
I just needed to be able to say, "you can use the ___ and ___ accessors, but not the ___ accessor" | 16:18 | ||
during BUILD | |||
TimToady | and if people use virtual calls on an incomplete object, they're likely to get the wrong class's method | ||
[Coke] | jnthn: did you ever diagnose the rosetta spectest failures on your box? | 16:19 | |
TimToady | or worse, they'll get the right method on a not-yet built part of the object | ||
sirrobert | lunch & | ||
jnthn | [Coke]: Yeah, it's newline related | 16:20 | |
It (for some reason) chooses to do a custom IO bound to $*OUT that collects the output | |||
16:21
flightrecorder joined,
FROGGS joined
16:24
Yazu joined
|
|||
sergot_ | hi o/ ! | 16:27 | |
FROGGS | hi | ||
16:29
MayDaniel joined
16:32
Yazu left
16:35
bluescreen10 left
|
|||
[Coke] | jnthn: that was so that we could use the code as is from RC. | 16:37 | |
(which expects to print to the default handle) | |||
then we can automate the "grab code from RC" bits. | 16:38 | ||
16:39
bluescreen10 joined
16:40
yarp left
16:42
JimmyZ left
|
|||
jnthn | [Coke]: ah, I see | 16:45 | |
16:46
fgomez joined
|
|||
GlitchMr | perl6: so grep {say "Checking $_"; $_ == 2}, 1, 2, 3, 4, 5 | 16:47 | |
p6eval | niecza v21-4-g3a9759e: OUTPUT«Checking 1Checking 2Checking 3Checking 4Checking 5» | ||
..rakudo 0e36b2: OUTPUT«Checking 1Checking 2» | |||
16:47
wtw_ left
|
|||
GlitchMr | perl6: so grep {say "Checking $_"; $_ == 4}, 1 .. 1000 | 16:47 | |
p6eval | rakudo 0e36b2, niecza v21-4-g3a9759e: OUTPUT«Checking 1Checking 2Checking 3Checking 4» | ||
GlitchMr | huh? | 16:48 | |
So, Niecza is lazy... sometimes | |||
I guess that depending on whatever it is lazy or not is bad idea | |||
... perhaps because 1, 2, 3, 4, 5 is eager and 1 .. 1000 isn't... | 16:49 | ||
perl6: so grep {say "Checking $_"; $_ == 4}, (1 .. 1000).eager | |||
p6eval | rakudo 0e36b2: OUTPUT«Checking 1Checking 2Checking 3Checking 4» | ||
..niecza v21-4-g3a9759e: OUTPUT«Unhandled exception: Unable to resolve method eager in type Range at /tmp/XT0grBHkfi line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4138 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4139 (module-CORE @ 571)  at /home… | |||
TimToady | you probably want first instead of grep | ||
GlitchMr | I know. I was just checking something | 16:50 | |
I would use any for that anyways | |||
But... niecza doesn't know .eager? | |||
TimToady | well, junctions are only theoretically lazy | ||
might have eager as a listop | 16:51 | ||
list assignment is supposed to be eager, in a pinch | |||
rosettacode.org/wiki/Truncatable_primes#Perl_6 avoids using 'prime all @x' because that is not lazy | 16:52 | ||
and I couldn't find a better way to force it than: if prime @x[0] && prime @x[1] && prime @x[2] && prime @x[3] && prime @x[4] && prime @x[5] | 16:53 | ||
GlitchMr | "Highest ltp: 999983" | ||
This is wrong | |||
It should be 998443 | |||
TimToady | hm, you're right | 16:54 | |
16:54
fgomez left
|
|||
GlitchMr | But, it's last prime | 16:54 | |
It's last prime, but it isn't left-truncatable prime | |||
TimToady | works when I put back the 'prime all @x' | 16:55 | |
but slower, obviously, about 15 seconds | |||
oh, duh | |||
needs to be 'and', not '&&' | |||
GlitchMr | ;-) | 16:56 | |
I guess that debugger would help noticing that error | |||
Or -MO=Deparse, except we don't have that for Perl 6 | |||
TimToady | and now works again, and back down to 3.6 seconds | ||
GlitchMr | Also, I find this grep in grep ugly | 16:57 | |
It works, but... I probably would do loop similar to one in Text::Abbrev | 16:58 | ||
TimToady | fixed rosettacode.org/wiki/Truncatable_primes#Perl_6, GlitchMr++ | 16:59 | |
spider-mario | does “not grep {not prime $^n}, @x” not work, TimToady? | ||
(I mean “is it lazier than all?”) | |||
TimToady | yes, it appears to run fast | 17:01 | |
GlitchMr | I should try doing that too :-) | ||
It sounds fun | |||
TimToady | takes 8+ minutes and a hot lap to find that out for rakudo though... | ||
skids | r,std: (8 <<+<<< (1,2,3)).say | 17:02 | |
erm. | |||
std: (8 <<+<<< (1,2,3)).say | |||
p6eval | std cfe8d43: OUTPUT«ok 00:00 44m» | ||
skids | r: (8 <<+<<< (1,2,3)).say | ||
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Preceding context expects a term, but found infix < insteadat /tmp/UPnUp90kl0:1» | ||
TimToady | LTM failure, I guess | 17:03 | |
r: (8 <<[+<]<< (1,2,3)).say | |||
p6eval | rakudo 0e36b2: OUTPUT«16 32 64» | ||
TimToady | yeah | ||
'course, I'd just write X+< there, and then you can omit the parens around the list | 17:04 | ||
[Coke] | 8m... not adding that to the test suite yet... ;) | 17:05 | |
skids | TimToady++ and it's prettier. | ||
TimToady | r: (8 X+< 1,2,3).say | ||
p6eval | rakudo 0e36b2: OUTPUT«16 32 64» | ||
TimToady | and parses righter | ||
r: (8 «+<« (1,2,3)).say | 17:06 | ||
p6eval | rakudo 0e36b2: OUTPUT«16 32 64» | ||
TimToady | or that | ||
skids | Does the rakudo slowdown on source file encoding kick in with « or only chars with higher codepoints? | 17:07 | |
(Because I really really do like « a lot :-) | 17:08 | ||
17:09
aloha left
|
|||
TimToady would ignore any such slowdowns until rakudo makes it not slow down :) | 17:11 | ||
but I think the Latin-1 range is okay | |||
it's the set operators that give it hissyfits, unless they've fixes that recently | |||
*xed | |||
17:12
aloha joined
|
|||
[Coke] | I thought that was fixed. hurmmm. | 17:14 | |
TimToady | r: say set(1,2,3) ∪ set(3,4,5) | 17:16 | |
p6eval | rakudo 0e36b2: OUTPUT«===SORRY!===Confusedat /tmp/Re268nOlwq:1» | ||
TimToady | not fixed enough to put the setops back into the setting, it would seem | ||
n: say set(1,2,3) ∪ set(3,4,5) | |||
[Coke] | bet it fails pretty quick, though! ;) | ||
p6eval | niecza v21-4-g3a9759e: OUTPUT«set(1, 2, 3, 4, 5)» | ||
jnthn | pmichaud looked into that during the hackathon but we didn't get to having a fix committed | 17:17 | |
17:17
Chillance joined
17:19
thou left
|
|||
TimToady | ooh, the "not grep {not prime $^n}, @x;" runs 50 seconds faster (7ish minutes) than the 'and' form (in rakudo) | 17:20 | |
doesn't make difference to niecza, which runs both forms in about 3.5 seconds | |||
17:22
kaare__ joined
17:24
patspam joined
|
|||
sirrobert | back | 17:26 | |
17:28
M_o_C joined
|
|||
mhasch | Has Perl 6 now a prime operator? | 17:30 | |
17:31
M_o_C left
|
|||
jnthn | TimToady: Is it expected that ltp would take massively longer than rtp? | 17:31 | |
Because in the profile I have here, 99% of the time is in ltp, and 1% is in rtp. Commenting out the ltp call, it does indeed to rtp in some seconds. | 17:32 | ||
TimToady | yes | 17:35 | |
the problem is that with ltp, you are going against the grain, and can't short-circuit the outer loops | 17:36 | ||
I tried that, but then it doesn't find the maximum | 17:37 | ||
(it finds the number with the largest righthand prime instead, which doesn't help) | |||
GlitchMr | I've tired using ":q" in Perl 6 REPL | 17:39 | |
TimToady | mhasch: no, but see rosettacode.org/wiki/Primality_by_t...ion#Perl_6 | ||
GlitchMr | tried* | ||
(not that I propose to add :q as alias for exit, this would be silly) | |||
[Coke] wonders why "github.com/perl6/specs/commit/d46a...b36144ab1" is "the most useful thing". | 17:41 | ||
GlitchMr | [Coke]: What else you would do? | 17:45 | |
Also, this is something I wanted to do in Ruby once | |||
[Coke] | if I have an installed perl6, works fine. cd to a rakudo build dir, it fails complaining about something in nqp | ||
guessing it's seeing a path in curdir and following that. | |||
GlitchMr: return nothing? I don't see the point in saying "it's the most useful" without actually explaining why. | 17:46 | ||
GlitchMr | require "MyAwesomeProgram::Plugins::$plugin" | 17:47 | |
TimToady | the fixed the prime generator in rosettacode.org/wiki/Truncatable_primes#Perl_6, which wasn't calling 2 a prime (though the calling code never asks whether 2 is prime) | 17:49 | |
flussence | r: use MONKEY_TYPING; augment class Pair { method gist { exit 0 if self.key eq 'q'; callsame } }; say :q | 17:50 | |
p6eval | rakudo 0e36b2: OUTPUT«» | ||
sorear | good * #perl6 | ||
FROGGS | hi sorear | ||
sorear | [Coke]: there's an example in there of how it's useful, also a link to the irc log where it came up | 17:52 | |
I'm trying to take the forgiveness > permission thing more to heart | |||
[Coke] | TimToady: woudl it be faster if you collapsed the junctional return of primes? | 17:53 | |
17:54
mucker left
|
|||
jnthn | TimToady: Initial investigation suggests infix:<X> is to blame somehow. | 17:54 | |
18:00
raiph joined
|
|||
TimToady | [Coke]: only in the case of composites that haven't already been tested for, which might or might not be significant | 18:02 | |
[Coke] | I didn't see a significant difference prepending the sub body with a 'so' on rtp | 18:04 | |
TimToady | and someday someone will write an optimizer that will make junctions smarter about short circuiting | ||
18:06
fgomez joined,
benabik_ joined
|
|||
mhasch | the prime code is impressively short. Will sqrt be evaluated only once per prime() call? | 18:07 | |
18:08
benabik__ joined,
benabik_ left,
benabik left,
benabik__ is now known as benabik,
Chillance left
18:09
Chillance joined
18:12
sivoais left,
sivoais joined
18:16
stopbit_ joined,
stopbit left,
stopbit_ is now known as stopbit
18:19
stopbit left,
stopbit joined
|
|||
TimToady | mhasch: good question. it's in a closure due the *, but I don't think that helps | 18:20 | |
FROGGS | jnthn's debugger might help | 18:21 | |
mhasch | What would be a good idiom for "all odd numbers from 3 to floor sqrt $i then? | 18:22 | |
TimToady | I can write it as { $_ > (state $ = floor sqrt $i) } but the difference seems to be in the noise level | ||
18:23
pyrimidine joined
18:24
zby_home joined
|
|||
TimToady | { $_ > (START floor sqrt $i) } ought to work too, but it seems that START forgets its value | 18:25 | |
at least in niecza; testing rakudo | 18:26 | ||
which will take a while | |||
18:26
colomon joined
|
|||
TimToady | jnthn: maybe I should try nested for loops and see what diff it makes | 18:27 | |
dalek | kudo/nom: a19ce8b | jnthn++ | src/core/LoL.pm: Make infix:<X> a bit cheaper. This doesn't really deal with what seems to be an algorithmic problem, but it is an easy and noticable win. |
18:28 | |
jnthn | TimToady: Would be interesting, yeah. | ||
jnthn -> shop | |||
bbiab | |||
mhasch | for simplicity, I would just go with: $i > 1 and $i %% none 2, 3 .. floor sqrt $i | 18:29 | |
this wastes cucles for odd numbers but not for repeated sqrt. The second solution iterating just over primes is still there. | 18:30 | ||
cycles | |||
TimToady | that will test the evens too | ||
18:31
zby_home left
|
|||
mhasch | Yes, they said even numbers may be eliminated, but it was not a requirement. :-) | 18:32 | |
GlitchMr | Just wondering, how can I implement operator precedence in Perl 6 grammars? | 18:33 | |
geekosaur | is {looser|tighter}(op), IIRC | 18:34 | |
probably need quoting on the op | |||
timotimo | is that the same in grammars? | ||
tadzik | good evening | ||
sorear | o/ | 18:35 | |
geekosaur | oh, misunderstood | ||
hm. I am not sure, it would make sense to me to allow that on tokens but I don't know that is allowed | 18:36 | ||
sorear | GlitchMr: use EXPR or use recursive descent | ||
geekosaur | (or if that's even been given thought...) | ||
TimToady | rakudo handles { $_ > (START floor sqrt $i) }, and it cut down the run time by 5 seconds, which might be an issue if the rest of the program ran in 3 seconds :) | ||
18:37
zby_home joined
|
|||
GlitchMr | sorear: What is EXPR? | 18:37 | |
TimToady | nr: say 2.sqrt.floor.WHAT | 18:38 | |
p6eval | rakudo 0e36b2, niecza v21-4-g3a9759e: OUTPUT«Int()» | ||
18:38
cognominal joined
|
|||
TimToady | 'course that 5 seconds could also just be noise, when something is running 7 minutes | 18:39 | |
sorear | GlitchMr: EXPR is one of two related methods which handles operator precedence in perl 6 | 18:40 | |
18:43
cognominal left
18:44
daxim left
|
|||
GlitchMr | PHP is popular... I guess that PHP features, such as left-associative ?: should be added to Perl 6 | 18:45 | |
jnthn | TimToady: I'd expect the commit I did a moment ago to shave off a bit of that. :) | ||
18:46
wk_ joined
|
|||
tadzik | GlitchMr: ...you're trolling, right? :P | 18:46 | |
jnthn | TimToady: Will see if I can work out the deeper issue, but it's one of those areas where Pm may grok what's happening an order of magnitude faster than I do. | ||
tadzik | or just kiddin g:) | ||
GlitchMr | Hmmm... I actually wonder how easy it would be to change associativity of ?? !! with mutable grammars | 18:47 | |
jnthn | If I don't figger it I'll file a ticket with what I managed to work out, anyways... | ||
tadzik | FROGGS: the link is dead, did you merge the branch? | ||
moritz | hey, let's use \ as a namespace separator | ||
GlitchMr | Also, in PHP !$variable = 42 works. | 18:48 | |
jnthn | moritz: That's a pretty cool idea. As a Windows user, I like how it'll remind me of file paths. | ||
;) | |||
tadzik | ha, that's the solution! | ||
Now we don't need to distinguish between require "name" and require "path" :P | |||
GlitchMr | (actually, I have feeling that !$variable = 42 working in PHP is yet another PHP <del>bug</del> feature) | ||
18:49
rurban joined
|
|||
rurban | I just read blogs.perl.org/users/perl_6_reports...02.html#26 about LLVM | 18:49 | |
To clarify: LLVM itself is not the right tool for a good dynamic language VM. But there is vmkit on top of LLVM which is the right tool. | 18:50 | ||
vmkit was the basis for a jvm rewrite (j3) and a .CLR rewrite (c3) on top of LLVM and mmtk (for gc) | |||
bot j3 and c3 have decent performance, j3 same speed to 2x slower than jvm and c3 at about the same speed as .net/mono | 18:51 | ||
moritz | github.com/adambard/functools-for-matlab#readme # why didn't that exist a year ago? :-) | ||
benabik | rurban: It's designed around stack based machines? | 18:52 | |
rurban | Which would lead to a nqp performance of about 10x faster, my,guess. | ||
llvm is stack and register based. | |||
You can use both. | |||
benabik | Right. But is vmkit? | ||
rurban | vmkit is stack based which translates to registers | 18:53 | |
moritz | afaict most modern VMs do that | 18:54 | |
rurban | When I'm finished with the basic parrot fixes I'll start a little implementation just to test performance of some simple ops. calling a function and do some arith | ||
benabik wonders how it does with continuations. | 18:55 | ||
rurban | I don't like the lorito approach which looks like a full LLVM rewrite. Why rewriting it when you can just use it? | ||
No continuations at all. | |||
I do'nt think nqp needs needs continuations. Normal exceptions | |||
GlitchMr | raiph: feather.perl6.nl/~glitchmr/rakudo-bin.html | 18:56 | |
I've made quick Perl 5 script which makes it easier to use my already compiled Rakudo Star | |||
I probably could compile more Rakudo Star releases, but that probably wouldn't be too friendly for disk space. It's limited. | 18:57 | ||
benabik | rurban: Pity. Continuations are wonderful for supporting many control flow styles... | 18:58 | |
rurban | If you can make fast continuations work in vmkit, fine :) | 18:59 | |
benabik | Although as a PhD student, I probably shouldn't say "pity" to open problems. | ||
rurban | Most scheme's have fast and slim continuations, so it should be possible | ||
GlitchMr | Every Rakudo Star needs different NQP. But perhaps using this same Parrot version for every compilation would work. | ||
sorear | rurban: rakudo doesn't need full continuations, but coroutines are mostly indespensible | 19:00 | |
GlitchMr | But I don't know how to make configuration where Parrot is somewhere and NQP is compiled for Perl 6 | ||
TimToady | I know, let's port nqp to run on Scheme... :D | ||
rurban | coro's should be possible. | ||
TimToady | now I have an unbound number of problems.. | 19:01 | |
rurban | Most scheme's are not good enough to handle nqp. Maybe gambit | ||
TimToady was kidding, mostly | |||
GlitchMr | ... when I try using --gen-nqp, NQP is pushed to Parrot directory. Because of that I cannot use this same Parrot installation for older Rakudo Star releases. | ||
TimToady | Perl 6 is not designed to require continuations, in any case | 19:02 | |
19:02
eternaleye joined
|
|||
rurban | But I need a month or two. I also need to keep the p5p folks busy. They just started half-ass signatures | 19:02 | |
tadzik | (: | 19:03 | |
TimToady | .oO(P6 is not a menu of features for P5) |
||
tadzik | you mean p5-mop started, and p5p will stop going "naay" in 4 years or so? ;) | ||
[Coke] | if you want to use the same parrot or same nqp, you probably want to build your own dist, not use star. | 19:04 | |
no? | |||
doy | started laying the groundwork for signatures, you mean | ||
d: | |||
and as far as i can tell, p5p is generally positive about p5-mop | |||
rurban | perl5.git.perl.org/perl.git/shortlo...signatures | 19:05 | |
tadzik | oooo | ||
that's some good news | |||
TimToady | well, sigs are one of those things that won't work terribly well without a good type system | 19:06 | |
*cough* smartmatching *cough* | |||
19:06
xinming_ joined
|
|||
rurban | And since doy refused to parse types nor allow type traits we are lost | 19:06 | |
doy | seriously, i'm not refusing anything | ||
and "we are lost" overstates the situation pretty significantly | 19:07 | ||
rurban | And can throw my type system approach away because it will not work in functions. | ||
tadzik | honestly, I'd be fine with Just Not Having To Type 'use Fun' everywhere :) | ||
rurban | doy: you have no idea. that's the problem. | ||
doy | tadzik: yes, that is the starting point | ||
atrodo | use Fun; | ||
doy | rurban: things would go a lot easier if you would stop assuming that | ||
rurban | then why do you leave it out. parsing sigs is almost the same as parsing MYTERM. my (@args) = @_; | 19:08 | |
jnthn | This belongs on #p5p, not here. | ||
rurban | Sorry, yes. | ||
doy | we've already had this discussion on #p5p | 19:09 | |
TimToady | hugme: hug rurban and doy | ||
hugme hugs rurban and doy | |||
19:09
Util_ is now known as Util
|
|||
tadzik | you can try #p6p now :P | 19:09 | |
doy | (: | ||
19:09
nohack joined,
xinming left
|
|||
rurban | maybe perl6 can teach the p5p folks something, on #p6p5 | 19:09 | |
TimToady | well, not insulting people is part of it | 19:10 | |
19:11
ChanServ sets mode: +o jnthn,
jnthn sets mode: -b *!*@*.tele.dk,
jnthn sets mode: -o jnthn
|
|||
tadzik exhales | 19:11 | ||
jnthn | (removing the over-general ban from yesterday) | ||
TimToady | whew! | ||
jnthn | huh? :) | 19:12 | |
oh...no, I wasn't gonna kick anyone :P | |||
Just remembered I'd said I'd remove the ban :) | |||
Hopefully we don't get any more compliments on shopping around for the best prices. :P | 19:13 | ||
TimToady: I think X is managing to (expensively) evaluate the various sublists again and again. | |||
Or something like that. | |||
TimToady | your fix took about a minute off | ||
lemme try it with nested fors | 19:14 | ||
jnthn | Well, it wasn't a fix for the Real Problem. | ||
Yes, if nested fors are a bunch faster it'll probably confirm my guess at what's going on. | |||
TimToady | indeed, reduced it from 6m20 to 0m19 | 19:16 | |
[Coke] | O_o | 19:17 | |
tadzik | :) | 19:18 | |
jnthn | yeah, that's the kinda difference I was looking for :) | ||
TimToady | so now is only about 5 times slower than niecza, a great improvement over 150 | ||
updating RC | 19:19 | ||
jnthn | Right. And it matches my tracking down of the issue to infix:<X> | ||
I guess one would need to be really careful in fixing this so as not to break the laziness. | 19:20 | ||
Think I'll delegate it, either to Pm or to a cleverer future me :) | 19:22 | ||
dinner, then will write what I figured out into an RT & | |||
TimToady | revised ltp for rosettacode.org/wiki/Truncatable_primes#Perl_6 | 19:23 | |
19:31
the joined
19:32
the is now known as Guest97872
19:35
Guest9049 left
19:37
am0c left
19:43
fgomez left,
thou joined
19:45
rhr joined
|
|||
TimToady | npr: say START { 42 } for 1..5; | 19:45 | |
p6eval | niecza v21-4-g3a9759e: OUTPUT«42NilNilNilNil» | ||
..pugs: OUTPUT«4242424242» | |||
..rakudo a19ce8: OUTPUT«Mu()Mu()Mu()Mu()Mu()» | |||
[Coke] | ISTR pugs is cheating. | 19:46 | |
TimToady | npr: say BEGIN { 42 } for 1..5; | ||
p6eval | rakudo a19ce8, niecza v21-4-g3a9759e, pugs: OUTPUT«4242424242» | ||
TimToady | it should work like that | ||
npr: say INIT { 42 } for 1..5; | |||
p6eval | pugs: OUTPUT«4242424242» | ||
..rakudo a19ce8, niecza v21-4-g3a9759e: OUTPUT«NilNilNilNilNil» | |||
TimToady | that one too | ||
moritz | nr: say INIT 42 | 19:47 | |
p6eval | rakudo a19ce8, niecza v21-4-g3a9759e: OUTPUT«Nil» | ||
moritz | nr: say START 42 | ||
p6eval | rakudo a19ce8, niecza v21-4-g3a9759e: OUTPUT«42» | ||
moritz | nr: for 1 { say START 42 } | ||
p6eval | rakudo a19ce8, niecza v21-4-g3a9759e: OUTPUT«42» | ||
moritz | nr: for 1..3 { say START 42 } | ||
p6eval | rakudo a19ce8: OUTPUT«424242» | ||
..niecza v21-4-g3a9759e: OUTPUT«42NilNil» | |||
TimToady | bugses | ||
19:48
fgomez joined
|
|||
moritz | it seems rakudo has problems with START in statement-modifying loops | 19:48 | |
TimToady | nr: for 1..3 { say INIT 42 } | ||
p6eval | rakudo a19ce8, niecza v21-4-g3a9759e: OUTPUT«NilNilNil» | 19:49 | |
sorear | phasers in niecza need to remember more values, yeah | ||
moritz submits rakudobugs | |||
sorear | r: for 1..2 { say START 42 for 1..2 } | ||
p6eval | rakudo a19ce8: OUTPUT«42 4242 42» | ||
sorear | r: for 1..2 { say (START 42) for 1..2 } | ||
p6eval | rakudo a19ce8: OUTPUT«Mu()Mu()Mu()Mu()» | ||
TimToady | which maybe points to some recloning differences | 19:50 | |
moritz | r: say START 42 for 1 | ||
p6eval | rakudo a19ce8: OUTPUT«42» | ||
moritz | r: say START 42 for 1, 2 | ||
p6eval | rakudo a19ce8: OUTPUT«42 42» | ||
TimToady | the loop is in the START | ||
moritz | r: say START { 42 } for 1, 2 | ||
TimToady | I think... | ||
p6eval | rakudo a19ce8: OUTPUT«Mu()Mu()» | ||
[Coke] | r: die Rat | 19:51 | |
p6eval | rakudo a19ce8: OUTPUT«No such method 'VAR' for invocant of type 'Rat' in method Str at src/gen/CORE.setting:736 in method message at src/gen/CORE.setting:8866 in block at /tmp/Qze2qvSsN_:1» | ||
[Coke] | pn: die Rat | ||
npr: die Rat | |||
p6eval | pugs: OUTPUT«*** Died at /tmp/lDbpwqSABF line 1, column 1 - line 2, column 1» | ||
..niecza v21-4-g3a9759e: OUTPUT«Unhandled exception: Rat() at /home/p6eval/niecza/lib/CORE.setting line 1435 (die @ 5)  at /tmp/PVNnpEKTEK line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4138 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4139 (module… | |||
..rakudo a19ce8: OUTPUT«No such method 'VAR' for invocant of type 'Rat' in method Str at src/gen/CORE.setting:736 in method message at src/gen/CORE.setting:8866 in block at /tmp/eebqU_qFVL:1» | |||
moritz | r: for 1, 2 { say START 42 } | 19:52 | |
p6eval | rakudo a19ce8: OUTPUT«4242» | ||
sorear | npr: der Rat # surely? | ||
p6eval | pugs: OUTPUT«*** No such subroutine: "&der" at /tmp/bJNM2gqaGu line 1, column 1 - line 2, column 1» | ||
..niecza v21-4-g3a9759e: OUTPUT«===SORRY!===Undeclared routine: 'der' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1435 (die @ 5)  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37)  at /home/… | |||
..rakudo a19ce8: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&der' called (line 1)» | |||
TimToady | anyhoo, the prime test oughta just be able to put: @primes ...^ * > START $i.sqrt.floor | 19:53 | |
moritz | sorear: or die Ratte :-) | ||
FROGGS | right | ||
FROGGS always wanted to have a german perl | 19:54 | ||
TimToady | the a workshop about those | ||
*there's | |||
FROGGS | 'was a joke | 19:55 | |
a friend of mine used to use german varnames in his delphi code | |||
its horrible to read | |||
moritz | FROGGS: $work code is all German. Well, mostly. I hate it. | 19:56 | |
FROGGS | yay, like SAP does ;o) | ||
moritz | FROGGS: writing non-English commit messages simply doesn't work for me | ||
well, we're not quite as big as SAP :-) | |||
tadzik | I once read a code in Hungarian | ||
I promised myself never to do that to any living being | |||
sorear | calling all undead programmers | 19:57 | |
FROGGS | moritz: I mean the fieldnames in SAP are german, like PERNR for Personalnummer (employeenumber) | ||
our american colleges just dont know what it means | 19:58 | ||
but you have to work with it | |||
moritz | FROGGS: :( | ||
sorear | that's... not even that hard | ||
FROGGS | and when you want to switch to another module (transaction), these abbreviations are german too | 19:59 | |
sorear | "I guess it's a personnel number of some kind" | ||
and if you abbreviate stuff enough it becomes unscrutable even in the same language | |||
FROGGS | sorear: what is ANREX? | ||
sorear | FROGGS: I'd guess it's an oil exploration company | ||
FROGGS | it is the titel, like Mr. or Mrs. | ||
moritz | 'anrede' | 20:00 | |
but I wouldn't have guessed that from ANREX eitehr | 20:01 | ||
sorear | what, they don't want you to enter it as (forgot the list of common Germanic prenominals. Herr?) | ||
FROGGS | moritz: Anredetext | 20:02 | |
sorear: ya, its Herr and Frau | |||
I actually dont know if you can use Mr. there | |||
moritz | FROGGS: do you work a lot with SAP? | 20:03 | |
FROGGS | btw, SAP R/3, the standard installation, has more than 100 thousand tables | ||
the docs for these tables are on 1900 pages (ebook) | |||
sorear | 50 tables per page? | 20:04 | |
FROGGS | moritz: I usually have to provide interfaces to SAP, I'm not doing the SAP part, but the other side | ||
moritz | so | ||
sorear recalls once having SAP and S&P confused | |||
(Standard & Poor is a financial institution in the US best known for maintaining the "S&P 500", a stock market index) | 20:05 | ||
moritz | FROGGS: I'm working on a homegrown program that fills the same "all business-related functions" corner | 20:06 | |
and the original author was often trying to be smart | |||
20:06
bluescreen10 left
|
|||
moritz | there are things like flags stored as characters, and their codepoint is used as a foreign key in another table | 20:07 | |
FROGGS | hehe, nice | ||
20:07
bluescreen10 joined
|
|||
moritz | if it's 'a' in this table, it's 97 in another table | 20:07 | |
sorear | moritz: abusing VARCHAR() as a set type? | ||
FROGGS | so you have strings which contain several foreign keys to other tables? | 20:08 | |
moritz | sorear: I don't think so, since there's only ever one of such characters. It's a complete mystery to me why it was done that way | ||
jnthn back | 20:09 | ||
moritz | and we have a column called 'bla', because the original author didn't bother to give it a proper name | ||
FROGGS | what the | ||
moritz | and now several applications share the same DB, and renames are non-trivial | ||
('name' would have been an appropriate name of that column. It wasn't something hard to find a name for) | 20:10 | ||
FROGGS | but you killed him with fire, right? | ||
moritz | no, he's in the board of directors | 20:11 | |
FROGGS | -.- | ||
sorear | .oO( it's not too late ) |
||
moritz | oh, and there's a custom error handling system (like Try::Tiny but in crazy) | 20:12 | |
and lots of other fun | |||
FROGGS | and thats at your new $work? | 20:13 | |
moritz | but it's "only" about 50k lines of perl code | ||
FROGGS: yes | |||
[Coke] | moritz: If it weren't for updating legacy systems, I'd have a much worse paying job. But I do like it when I can do something new from the ground up instead. | ||
FROGGS | 50k for Try::Tiny::Crazy? | ||
no way | |||
moritz | FROGGS: no, for the entire application | ||
including all the craziness | 20:14 | ||
FROGGS | all right | ||
[Coke] is in the middle of cleaning up 3 kilolines of coldfusion, if that makes you feel better, moritz. :) | |||
moritz | [Coke]: I've been patching Net::Whois::RIPE, which was a very welcome distraction | ||
20:15
inokenty joined
|
|||
moritz | a small, isolated(-ish) module that still does something useful, not too much legacy :-) | 20:15 | |
[Coke]: actually I don't feel very bad. I like to complain a bit, but all in all it's still a nice job | |||
[Coke] | moritz: sounds about right. :) | 20:16 | |
[Coke] chuckles at "who is ripe" | |||
moritz | not all parts are crazy, and we have some nice tools too (push to quality assurance and built of debian packages in a single command) | ||
SQL diffs for schema changes | 20:17 | ||
and there's also a heavily patched OTRS installation to maintain when I'm tired of our CRM system :-) | 20:18 | ||
FROGGS | but it is always good to have something to complain about ;o) | 20:21 | |
moritz | aye | 20:22 | |
and now for something completely different | 20:23 | ||
sleep | |||
good night :-) | |||
sorear | good night moritz | ||
FROGGS | gnight | ||
20:30
fgomez left
20:32
mdupont_ left
|
|||
jnthn | eval print 'a]' =~ /a]/ | 20:34 | |
buubot_backup | jnthn: 11 | ||
20:37
GlitchMr left
20:38
fgomez joined
20:41
erkan joined,
bluescreen10 left
|
|||
skids | r: my @b = (1,2,3); @b[* <<-<< (1,2)].say; @b[* X- (1,2)].say; | 20:45 | |
p6eval | rakudo a19ce8: OUTPUT«3 2Cannot call 'Numeric'; none of these signatures match::(Mu:U \v: Mu *%_) in method Numeric at src/gen/CORE.setting:716 in sub infix:<-> at src/gen/CORE.setting:2526 in block at src/gen/CORE.setting:11934 in sub coro at src/gen/CORE.setting:5346 in … | ||
jnthn | skids: Expecting that to whatever-curry? | 20:47 | |
skids | Wondering what the X- does to the whatever that the hyperop doesn't. | 20:49 | |
jnthn | oh, the first one *did* surry | ||
*curry | |||
skids | I suppose the hyperop knows it has an item on the lhs, while the X- not necessarily. | 20:52 | |
20:56
kaare__ left
|
|||
skids decommute | 20:58 | ||
21:00
leont joined
21:01
crab2313 joined
21:03
skids left
21:07
Targen joined
21:15
benabik left
21:22
MayDaniel left
|
|||
masak | ahoj, #perl6 | 21:25 | |
tadzik | o, hej masaku | 21:26 | |
21:26
pyrimidine left
|
|||
sorear | jo, masak | 21:26 | |
jnthn | dobry vecer, masak | 21:27 | |
21:27
benabik joined
|
|||
dalek | p: c810874 | jnthn++ | src/QRegex/P5Regex/Grammar.nqp: Toss P6Regex leftover. |
21:28 | |
p: 37cb811 | jnthn++ | src/QRegex/P5Regex/Grammar.nqp: Parse non-alphanumerics without a meaning as literal characters to match. |
|||
p: f1027a4 | jnthn++ | t/p5regex/rx_charclass: Test for /a]/. |
|||
21:30
zby_home left
21:36
Targen left
21:39
leont left
21:40
huf_ joined
|
|||
dalek | p: 1a194af | jnthn++ | / (2 files): Fix \B, plus a test. |
21:40 | |
kudo/nom: ba04210 | jnthn++ | tools/build/NQP_REVISION: Get latest NQP for P5Regex improvements. |
21:48 | ||
kudo/nom: d624613 | jnthn++ | t/spectest.data: Run S05-modifier/perl5_1.t. |
|||
ast: fe3a0da | jnthn++ | S05-modifier/perl5_1.t: Rakudo unfudges. |
|||
tadzik | hmm. I saw plenty of those in Oslo. Do you know the name of an input device wich is like a touchpad, but physically moves under your finger? | 22:05 | |
jnthn | trackball? | 22:07 | |
tadzik | no, not a ball. It was a shape of a touchpad | ||
FROGGS | and you move it like a mouse? | ||
tadzik | no, the device itself isn't moving | 22:08 | |
hmm | |||
imagine a touchpad, where the layer you touch is movable | |||
...but the touchpad itself stays in place | |||
sorear | how big is the moving piece? | ||
FROGGS | so you move that surface like a joystick | ||
sorear | 10 mm^2? | 22:09 | |
tadzik | sorear: like a regular laptop touchpad | ||
22:09
Guest97872 left
|
|||
jnthn | hmm, dunno then. | 22:09 | |
sorear | does it rotate? | ||
tadzik | internally, I believe so | ||
from the users' point of view, it just moves under your finger | |||
masak | I think I know what you mean. I don't know the name of those, though. | 22:11 | |
FROGGS | can't find it using google, so it doesn't exist | 22:12 | |
22:13
am0c joined
|
|||
masak | 'night, #perl6 | 22:13 | |
FROGGS | gnight masak | ||
22:13
supernovus joined
|
|||
FROGGS | something like a "contour shuttleexpress" | 22:14 | |
? | |||
this retail.contourdesign.com/?/products/22 | 22:15 | ||
tadzik | nah | 22:16 | |
let me draw this | |||
supernovus | Hmm, going through the logs, tadzik mention HTTP::Easy was broken. In testing now, it seems to bind only to localhost. Attempts to connect from an external address do not work. I am assuming something has changed in Rakudo's IO::Socket::INET library? | ||
tadzik | supernovus: the thing I noticed broken is something related to header parsing | ||
i.imgur.com/CzJwW.jpg | 22:19 | ||
this thing is rubber and striped | |||
supernovus | Ah. This library has not received much love. It was written to be a drop in replacement for HTTP::Server::Simple when that library was not compiling against Rakudo nom. Most of my web app testing, I use the SCGI protocol for the apps instead of HTTP. I'm still planning on writing a FastCGI library for those who prefer FastCGI to SCGI. In the meantime, if you can file a bug against HTTP::Easy, | 22:20 | |
I'll see what I can do about fixing its header parsing issues. | |||
tadzik | 'tis some Buf/Str confusion I think | ||
FROGGS | tadzik: maybe a suberpuck? | 22:21 | |
your drawing is, well, how should I say, "not that helpful" | |||
22:21
cognominal joined
|
|||
tadzik | :) | 22:21 | |
hey, I tried :P | 22:22 | ||
supernovus | tadzik: Oh, that makes sense now. Both HTTP::Easy and HTTP::Client need to be rewritten to work with Buf. When they were last worked on, there was no Buf implementation available (in Rakudo at least, I need to test all of my libraries against Niecza yet.) | ||
tadzik | I see | ||
supernovus: HTTP::Easy works fine | |||
at least Bailador works fine, and it uses HE under the hood | |||
22:26
benabik left
22:29
crab2313 left
|
|||
supernovus | That's good to hear. | 22:30 | |
jnthn | rest... & | 22:33 | |
22:33
crab2313 joined
22:39
stopbit left
22:43
skids joined
22:45
cognominal left
22:46
cognominal joined
22:47
crab2313 left
|
|||
sorear tries and fails to find a reference to tadzik's device | 22:48 | ||
tadzik: do you know any of mthe people who had them? | |||
we could ask | |||
oslo.pm mailing, maybe | |||
22:54
cognominal left
22:56
spider-mario left
|
|||
dalek | rl6-roast-data: dad623b | coke++ | doit: Clarify that these commits are not attended. |
22:59 | |
rl6-roast-data: 746f725 | coke++ | p (2 files): today (automated commit) |
|||
rl6-roast-data: 7a116b3 | coke++ | p (2 files): today (automated commit) |
|||
rl6-roast-data: 1f77bf9 | coke++ | / (4 files): today (automated commit) |
|||
rl6-roast-data: 7c8ddc7 | coke++ | / (4 files): today (automated commit) |
|||
23:10
supernovus left
23:18
Targen joined
23:25
wamba left
23:29
dayangkun joined
23:32
benabik joined
|
|||
dalek | ast: 5c64ac0 | coke++ | S06- (2 files): niecza fudge |
23:41 | |
osystem: e62cc8b | (Tobias Leich)++ | META.list: added File::Spec |
23:53 | ||
FROGGS | \o/ | ||
Unix code is done | |||
gnight | 23:55 |