»ö« 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! | tinyurl.com/p6contest Set by moritz_ on 28 December 2010. |
|||
00:24
[Coke] left
00:29
masonkramer left,
masonkramer_ joined
00:30
dukeleto left,
dukeleto joined
00:33
lukas___ left
|
|||
sorear | niecza: class Foo { has $.x; sub bar { :$.x } }; my $y = Foo.new; $y.x = 5; say $y.bar.dump | 00:43 | |
p6eval | niecza v1-35-gc9d17a7: OUTPUT«===SORRY!===Not an ARRAY reference at /home/p6eval/niecza/src/Niecza/Actions.pm line 1548.Check failed» | ||
00:46
rgrau left
00:48
[Coke] joined
01:07
[Coke] left
01:13
MayDaniel left
01:24
[Coke] joined
01:30
yarp left
01:33
yarrack_logging joined
01:34
[Coke] left
|
|||
dalek | ecza: e147750 | sorear++ | v6n/RxOp.pm6: [v6] Translate RxOp |
01:46 | |
01:47
icwiener left
02:24
am0c left
02:45
takadonet left
02:48
florz left
02:49
roen_ joined
02:50
bacek joined
02:57
shi left
02:59
florz joined
03:08
mtve joined,
bacek_ joined
03:11
bacek left
03:13
alester joined
03:17
gbacon left,
yarp joined
03:33
starcoder joined
03:38
_twitch joined
|
|||
sorear | STD's requirement to predeclare classes is getting very irritating | 03:40 | |
esp. since the declarations have to be in the same file... | 03:41 | ||
jasonmay | can you dynamically predeclare a class? | 03:47 | |
like if you have $class | |||
sorear | if you have $class you can just use it | 03:51 | |
I can't see how to use Foo::Bar without there being a predeclaration already | 03:52 | ||
$Foo::Bar can be postdeclared, but Foo::Bar can't ...? | 03:53 | ||
until TimToady comes back with a better idea, I'll be using our $Foo = class Foo { ... } | |||
then I can access it as $GLOBAL::Foo anywhere | |||
(yes, I know I could say eval("Foo::Bar") | 03:54 | ||
) | |||
also ::("Foo::Bar") | |||
oh hmm, ::Foo::Bar works. | 03:55 | ||
03:56
starcoder left
03:59
starcoder joined
|
|||
shortcircuit | If I understand the premise behind Rakudo's architecture, as little as possible is written in PIR, then as little as possible is written in NQP, and the rest is written in Perl 6. | 04:04 | |
I'll admit I've been pondering dastardly things like seeing how difficult it would be to write the parts written in PIR in C++ and in JavaScript. | 04:05 | ||
04:06
kanishka joined
|
|||
sorear | shortcircuit: join my evil :> | 04:14 | |
04:48
roen joined
04:51
roen_ left
04:56
roen_ joined
04:59
roen left
05:00
skangas left
05:01
yarp left
05:15
bacek__ joined
05:18
bacek_ left
05:21
yarrack_logging left
05:25
alester left
05:33
yarp joined
05:37
bacek_ joined
05:41
bacek__ left
05:49
yarrack_logging joined,
bacek__ joined
05:53
bacek_ left
05:55
am0c joined
06:01
roen_ is now known as roen,
bacek__ left
|
|||
dalek | ecza: 8004fc4 | sorear++ | lib/CLRBackend.cs: Fix require |
06:07 | |
ecza: 37ba8bc | sorear++ | v6/STD.pm6: [v6] New heredoc model for immutable-cursor compatibility |
|||
ecza: e571278 | sorear++ | / (3 files): [v6] Misc fixes to get STD building again |
|||
06:12
am0c_ joined
06:13
cognominal left
06:16
am0c left
06:17
am0c_ is now known as am0c
|
|||
dalek | ecza: dc7e939 | sorear++ | v6n/Op.pm6: [v6] First 1/3 of Op translated |
06:25 | |
06:27
kaare joined
06:28
kaare is now known as Guest6982,
lukas_ joined
06:29
Guest6982 is now known as kaare_
06:40
yarp left
06:41
am0c left,
cognominal joined
06:43
am0c joined
06:54
zby_home_ joined
07:01
risou joined
07:02
risou left,
wtw joined,
bacek joined
07:03
risou joined
07:09
am0c left
|
|||
moritz_ | niecza: say 1..3 | 07:17 | |
p6eval | niecza v1-35-gc9d17a7: OUTPUT«Unhandled Exception: System.Exception: Unable to find lexical &infix:<..> in mainline at Niecza.CLRBackend.NamProcessor.ResolveLex (System.String name, System.Int32& uplevel, Boolean core) [0x00000] in <filename unknown>:0  at | ||
..Niecza.CLRBackend.NamProcessor.RawAccessLex (Syste… | |||
dalek | ecza: 9dc85db | sorear++ | v6 (25 files): [v6] Merge v6 and v6n |
07:20 | |
ecza: 3b08fb0 | sorear++ | v6/ (2 files): [v6] Second 1/3 of Op translated |
|||
07:20
Gahrian joined
|
|||
moritz_ | fwiw, niecza passes man-or-boy test | 07:22 | |
niecza: sub f(&x) { &x() }; f -> { say 3 } | 07:24 | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«3» | ||
moritz_ | niecza: sub f(&x) { g(&x) }; sub g(&x) { x() }; f -> { say 3 } | 07:25 | |
p6eval | niecza v1-35-gc9d17a7: OUTPUT«3» | ||
moritz_ | the man-or-boy.t warns about &x1..&x3 not being used, although it is in fact being used (passed on to other subs) | 07:27 | |
sorear | yes | ||
i noticed that earlier with STD's &termstate and &infixstate | 07:28 | ||
I think it's a STD bug but haven't gotten to investigate | |||
I wonder how much stuff will break if I have a class with a method named "list" that isn't related to Any.list | 07:35 | ||
several classes from niecza have such methods | |||
07:38
Tene is now known as TeneIsTi`ocpi
07:39
TeneIsTi`ocpi is now known as Tene
|
|||
dalek | ecza: 4e74fd6 | sorear++ | v6/Op.pm6: [v6] More Op translation |
07:41 | |
07:41
yarrack_logging left
07:43
yves_ joined
|
|||
diakopter dares to wonder how fast niecza does man-or-boy up to the 25th iteration | 07:49 | ||
well, at least how it compares to rakudo/parrot | |||
tadzik | is niecza becoming self-hosting? | 07:50 | |
diakopter also curious how fast nqp-clr does it | |||
tadzik: seems it groweth towards that | 07:52 | ||
07:53
jhuni joined
07:54
jhuni left
07:59
lukas_ left
|
|||
tadzik | that's super-awesome | 08:04 | |
TimToady | diakopter: I would not use a sub declaration to declare a type | 08:07 | |
phenny | TimToady: 02 Jan 21:55Z <diakopter> ask TimToady in the following primitive-typed edition of man-or-boy perl6.pastebin.com/raw.php?i=AXhUA23d I postulated a shorthand to write type annotations for "generic" Callables (that are strongly-typed)... could you please [in-]validate that such a construct could work? | ||
TimToady: 02 Jan 21:57Z <diakopter> ask TimToady but ignore the '&' "sigil" before 'B' - I'm removing that curiosity from this perlesque dialect | |||
TimToady | std: &:(Int $foo --> Str) | ||
p6eval | std 625303c: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at /tmp/kcw6W79HTX line 1:------> <BOL>⏏&:(Int $foo --> Str)Preceding context expects a term, but found infix & instead at /tmp/kcw6W79HTX line 1:------> <BOL>⏏&:(Int | ||
..$foo … | |||
08:08
molaf joined
|
|||
TimToady | std: sub foo ( &:(Int $foo --> Str) ) {} | 08:08 | |
p6eval | std 625303c: OUTPUT«ok 00:01 120m» | ||
TimToady | there's a generic & type with a sig | ||
std: subset MyRout of &:(Int $foo --> Str); | 08:09 | ||
p6eval | std 625303c: OUTPUT«===SORRY!===Confused at /tmp/0rXm9EeTqI line 1:------> subset MyRout of ⏏&:(Int $foo --> Str); expecting typenameParse failedFAILED 00:01 119m» | ||
TimToady | hmm | ||
diakopter | I just would really like *some* shorthand way of aliasing long type signatures | 08:10 | |
TimToady | well, inside-out sub declarations is the way of C, and hence evil | ||
diakopter | what's an inside-out sub declaration | ||
TimToady | subset MyRout of Callable[:sig(:(Int $foo --> Str))]; | 08:11 | |
std: subset MyRout of Callable[:sig(:(Int $foo --> Str))]; | |||
p6eval | std 625303c: OUTPUT«ok 00:01 121m» | ||
diakopter | std: subset MyRout of Callable[:sig(:(Int --> Str))]; | 08:12 | |
p6eval | std 625303c: OUTPUT«ok 00:01 121m» | ||
diakopter | ok. last I knew, the :sig() wasn't necessary (I hadn't heard of needing that at all) | ||
TimToady | an inside-out declaration is where you put the name of the thing you're declaring in place of the name that would ordinarily be used as an rvalue | ||
diakopter | I mean, the portion inside the :sig() was necessary | ||
TimToady | well, if the sig is the first argument and is positional, then you can pass it positionally | 08:13 | |
diakopter confused | 08:14 | ||
I don't need to pass around sigs | |||
I need a decent way to alias them for compile time | |||
TimToady | Callable[:(Int $foo -> Str)] is okay if $sig is the first arg to Callable | ||
subset is compile time | |||
diakopter | I don't know how a sig could be an arg to a Callable | 08:15 | |
TimToady | constant MyRout = &:(...); would probably also work | ||
diakopter | std: constant RoutMe = &:(-->int) | 08:16 | |
p6eval | std 625303c: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at /tmp/3ewtYDvYAl line 1:------> constant RoutMe = ⏏&:(-->int)Bogus term at /tmp/3ewtYDvYAl line 1:------> constant RoutMe = &⏏:(-->int) expecting any of: | ||
..infix n… | |||
08:16
bacek_ joined
|
|||
TimToady | or could be made to work, I mean... | 08:17 | |
diakopter | do the primitive types have type objects? | 08:18 | |
TimToady | or we could maybe use &[...], @[...], %[...] as shorthand for the roles in question | ||
08:18
pmurias joined
|
|||
TimToady | std: @[...] | 08:18 | |
p6eval | std 625303c: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at /tmp/jJffuREZdP line 1:------> <BOL>⏏@[...]Bogus statement at /tmp/jJffuREZdP line 1:------> @⏏[...] expecting twigilParse failedFAILED 00:01 120m» | ||
TimToady | especially since it's currently illegal | ||
diakopter | hee | 08:19 | |
08:20
bacek left
|
|||
diakopter | "liberalizing the Perl 6 grammar for deca.." | 08:20 | |
..des [to come] | |||
TimToady | std: :::(Int @) | 08:21 | |
p6eval | std 625303c: OUTPUT«ok 00:01 122m» | ||
TimToady | or there's that | ||
diakopter | everyone wants the triple colon | ||
niecza: say :::(Int @) | 08:22 | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«===SORRY!===Attribute (name) does not pass the type constraint because: Validation failed for 'Str' with value undef at /home/p6eval/niecza/src/Niecza/Actions.pm line 1607 Niecza::Actions::term__S_name('Niecza::Actions', | ||
..'Niecza::Grammar::P6=HASH(0x69466e0)') ca… | |||
diakopter | niecza: say :::(Int) | ||
08:22
Demonen left
|
|||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«===SORRY!===Attribute (name) does not pass the type constraint because: Validation failed for 'Str' with value undef at /home/p6eval/niecza/src/Niecza/Actions.pm line 1607 Niecza::Actions::term__S_name('Niecza::Actions', | 08:22 | |
..'Niecza::Grammar::P6=HASH(0x65b9608)') ca… | |||
TimToady | :: is anonymous | 08:23 | |
niecza: say ::.WHAT | |||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«===SORRY!===Attribute (name) does not pass the type constraint because: Validation failed for 'Str' with value undef at /home/p6eval/niecza/src/Niecza/Actions.pm line 1607 Niecza::Actions::term__S_name('Niecza::Actions', | ||
..'Niecza::Grammar::P6=HASH(0x7548170)') ca… | |||
TimToady | perl6: say :: | 08:24 | |
p6eval | rakudo fc2db1: OUTPUT«===SORRY!===ResizablePMCArray: Can't pop from an empty array!» | ||
..pugs: OUTPUT«***  Unexpected end of input expecting "(", twigil or word character at /tmp/G8sEaSFRzY line 1, column 7» | |||
..niecza v1-35-gc9d17a7: OUTPUT«===SORRY!===Attribute (name) does not pass the type constraint because: Validation failed for 'Str' with value undef at /home/p6eval/niecza/src/Niecza/Actions.pm line 1607 Niecza::Actions::term__S_name('Niecza::Actions', | |||
..'Niecza::Grammar::P6=HASH(0x58b9980)') ca… | |||
diakopter | eek | ||
TimToady | massive damage :) | ||
std: say :: | 08:25 | ||
p6eval | std 625303c: OUTPUT«ok 00:01 118m» | ||
diakopter hits a stick against the empty array, and pop flows forth | |||
TimToady | you were supposed to say to it | 08:26 | |
diakopter | yeah | ||
like yoda hitting r2d2 with a stick instead of speaking to him | 08:27 | ||
oh, I guess he did speak to him first. | |||
rakudo: say ::rock | 08:28 | ||
p6eval | rakudo fc2db1: ( no output ) | ||
TimToady | rakudo: say ::rock.WHAT | ||
diakopter | rakudo: say ::rock ~ "\n" | ||
p6eval | rakudo fc2db1: OUTPUT«Failure()» | ||
rakudo fc2db1: OUTPUT«Can not find sub ::rock in 'infix:<~>' at line 1 in main program body at line 22:/tmp/MJ64TnCvXc» | |||
TimToady | rakudo: say ::rock.WHAT; class rock { } | 08:29 | |
p6eval | rakudo fc2db1: OUTPUT«rock()» | ||
08:30
bacek_ left
|
|||
pmurias | sorear: what stops the output from the aot phase from getting to the screen? | 08:31 | |
diakopter | TimToady: I hit the empty array because 40 years earlier, hitting worked. | ||
pmurias | sorear: ah i noticed it's stopped before it gets there | ||
08:36
cjk101010 joined
08:44
justatheory left
08:47
felipe joined
|
|||
diakopter | TimToady: which syntax should be co-opted, then? | 08:52 | |
TimToady | well, Callable should work today | 08:55 | |
so &[] is the most like that | |||
but &:() is going to be shorter if you always have to write &[:()] | 08:56 | ||
08:58
stepnem joined
|
|||
TimToady | I can argue it both ways, which probably means there's something we're not seeing yet | 08:58 | |
or it could just be that it's 1am | |||
so I'd just go with Callable[:()] for now | 09:01 | ||
zzz & | 09:02 | ||
diakopter | but, that doesn't help me shorten/alias anything | 09:05 | |
iiuc what you're saying | |||
09:07
HarryS is now known as K-Lined
09:08
K-Lined is now known as HarryS,
redicaps joined
09:18
yarp joined
09:19
sukria left
09:30
roen left
09:42
mberends left
09:52
noganex_ is now known as noganex
10:06
snearch joined
10:07
bacek joined
10:21
kanishka left
10:23
bacek_ joined
10:27
bacek left
10:30
satyavvd joined
10:41
masak joined
|
|||
masak | oh hai from a train! \o/ | 10:42 | |
phenny | masak: 02 Jan 19:03Z <sorear> tell masak What do you mean that substr cannot use non-p6 primitives? How else is it supposed to inspect an opaque Str? | ||
masak | sorear: I'm saying it's obviously thorny/problematic, and that S32 doesn't begin to acknowledge that. | 10:43 | |
10:49
gbacon joined
|
|||
pmurias | masak: why is implementing substr using p6 primitives a problem? | 10:49 | |
moritz_ | pmurias: which primitive would you use to access characters of a string? | 10:50 | |
besides substr, that is | |||
masak | pmurias: maybe it isn't. maybe it's just a question of making a Proxy object with a nice STORE method. | 10:51 | |
pmurias: I'm saying it's way underspecified. | |||
10:51
kanishka joined
|
|||
pmurias | masak: are string mutable? | 10:51 | |
masak | first approximation: no. | ||
moritz_ | Perl 6 level strings are immutable | 10:52 | |
pmurias | so .substr can't return an lvalue | ||
substr() can | |||
s/can/could | |||
moritz_ doesn't see the distinction | |||
I guess a method can get a reference to the container of the invocant with the same signature tweaks as a sub | 10:53 | ||
masak neither | |||
pmurias | moritz_: a sub can take a container | 10:54 | |
moritz_ | pmurias: I know. Do you say a method can't? | ||
pmurias | it seems wrong for methods to take the container | ||
moritz_ doesn't see the wrongness | 10:55 | ||
10:56
cjk101010 left
|
|||
pmurias | the method is called on the object, but it then discovers how the call was done and does something to the container | 10:57 | |
it feels wrong like in "$foo.bar.baz" the baz method accesing $foo | 10:58 | ||
moritz_ | well, it doesn't | ||
unless .bar returns the invocant container | 10:59 | ||
which usually isn't the case | |||
just like in foo(bar($baz)), &foo could get a handle to the $baz container, but usually doesn't | |||
pmurias | re method getting the container i doesn't seem right that a method called on the same object using different containers should do something different | 11:00 | |
moritz_ | in both cases the dispatcher determines which routine to call, and then activates the binder | 11:01 | |
11:01
daxim joined
|
|||
moritz_ | pmurias: and is that different for subs? | 11:01 | |
pmurias | the sub would take the container with a string as the argument | 11:02 | |
a method on a string taking a container with a string seems wrong | |||
s/taking/taking as the invocant/ | |||
moritz_ | ah, I'm starting to see your point | ||
you could argue that the backslash in method substr(\$self:, ...) { } really places the method into Container[Str] or so | 11:04 | ||
masak | I'd really like user-definable FETCH and STORE methods. it would open up a lot of possibilities. | 11:07 | |
pmurias | masak: what do you mean by user-definable FETCH and STORE? | 11:08 | |
masak: you have Proxy | 11:09 | ||
masak: or do you want to have that implemented in rakudo? | 11:11 | ||
moritz_ | assuming I want to have a variable that behaves just as a normal scalar, but that says LOL whenever I assign a new value - how would that look like? | 11:12 | |
I'd hope it's something like class MyScalar is Scalar { method STORE($what) { say "LOL"; nextsame } }; my $x is MyScalar; $x = 3 | 11:13 | ||
pmurias | moritz_: that seems sensible | 11:14 | |
my $x := Myscalar.new() should work too | 11:15 | ||
11:15
tzhs joined
|
|||
masak | pmurias: I want to have that implemented in Rakudo. or Niecza :) | 11:15 | |
moritz_ | or both! | 11:16 | |
11:16
bacek_ left
|
|||
masak | moritz_: S06/Lvalue subroutines has an example with actual syntax. | 11:17 | |
pmurias | masak,mortiz_: it's avalible in Perl 5 (tie) | 11:18 | |
masak | sure, sure. | ||
moritz_ | pmurias: tie is cheating. tie()ing doesn't survive returning through subroutines, for example | ||
ie you can't write a function that returns a tied variable | 11:19 | ||
pmurias | are you sure | ||
? | |||
moritz_ | at least I couldn't find a way | ||
subs always return lists | |||
pmurias | you tried sub foo : lvalue {} | 11:20 | |
moritz_ | nope | ||
pmurias | i implemented Proxy in p5 once | ||
moritz_ | ah, I remember why I didn't | 11:21 | |
I wanted to return an array | |||
and lvalue subs are always in scalar context | |||
11:23
kraai_ left
|
|||
pmurias | moritz_: tie'd variable survive being returned from an : lvalue sub | 11:24 | |
moritz_ | pmurias: interesting | 11:25 | |
I think it was really the attempt to pass around tied array containers that didn't work | 11:26 | ||
11:26
kraai_ joined
11:28
risou left
|
|||
pmurias | moritz_: did you pass an reference to tied arrays? | 11:29 | |
return @foo gets @foo flattened | |||
11:42
cjk101010 joined
11:54
satyavvd left
11:55
barney joined
12:10
barney left
12:19
noganex_ joined
12:23
noganex left,
bluescreen joined,
bluescreen is now known as Guest57809
12:25
Chillance left
|
|||
masak | what is a Proxy object, really? feels like an object pretending to be a container. | 12:27 | |
12:28
risou joined
|
|||
arnsholt | axisofeval.blogspot.com/2011/01/why...ll-is.html <- Anyone read this yet? | 12:29 | |
Especially the "adjustably-safe" part sounded kinda familiar | |||
12:29
masonkramer_ left,
masonkramer joined
|
|||
masak | /win 3 | 12:31 | |
hmm. | 12:32 | ||
moritz_ | arnsholt: that's what we call "gradual typing" | 12:34 | |
12:34
mj41_ joined
|
|||
arnsholt | moritz_: Exactly! =) | 12:34 | |
12:37
Guest57809 left,
cjk101010 left,
shachaf left,
c1sung left,
fhelmberger left,
lamstyle left,
shortcircuit left,
pmichaud left,
zb left,
sECuRE left,
cotto_work left,
Bucciarati left,
mj41_ is now known as mj41
|
|||
masak | seems he's talking about more than just gradual typing, though -- he mentions 'invariants', which makes me think of some kind of non-type annotations. | 12:38 | |
then again, maybe not. | 12:41 | ||
12:41
cogno joined
|
|||
masak | lopnor++ # blog software | 12:41 | |
moritz_ | masak: our subset types are turing complete | ||
lopnor | masak: thank you! | 12:42 | |
12:45
Bucciarati joined
|
|||
masak | moritz_: right, but when I think of "invariants", I think about properties on blocks, not variables. | 12:47 | |
moritz_ | I'm sure you can find some clever way to map the two, if you're a twisted FP programmer :-) | 12:51 | |
12:53
Guest57809 joined,
cjk101010 joined,
shachaf joined,
c1sung joined,
fhelmberger joined,
lamstyle joined,
shortcircuit joined,
pmichaud joined,
hatseflats joined,
arnsholt joined,
zb joined,
sECuRE joined,
cotto_work joined
12:54
mtk joined
|
|||
arnsholt | masak: The C backend idea from the Yapsi vision statement sounds interesting, BTW | 12:57 | |
12:57
muixirt joined
12:59
noganex_ is now known as noganex
|
|||
pmurias | ashleydev: where is the Yapsi vision statement? | 13:02 | |
masak | arnsholt: yes, I think so. could bring a bit of speed into the picture. the big disadvantage as I see it is that it'll be more to maintain and keep in sync. | 13:03 | |
dalek | ecza: 124d795 | pmurias++ | / (8 files): refactored niecza passes test.pl |
||
arnsholt | pmurias: github.com/masak/yapsi/blob/master/doc/ROADMAP | ||
Yeah, the parallel thing is potentially an issue | 13:04 | ||
moritz_ | that's the problem with all multiple backends in a compilers | ||
and the reason why currently no compiler except lorito has more than one non-bitrotten backend | 13:05 | ||
and lorito only manages it by pretty much freezing the feature set | |||
pmurias | where does lorito live? | ||
moritz_ | s/lorito/perlito/ | 13:06 | |
sorry, too much #parrot | |||
masak | moritz_: I'd still expect the C runtime to use the SIC backend, though. | ||
13:08
gbacon left
|
|||
arnsholt | Yeah. The C backend would essentially use a binary packed SIC | 13:08 | |
So with a bit of luck it should be possible to generate a fair chunk of C headers | 13:09 | ||
muixirt | moritz_: (from #parrot) but even version 2010.10 something like 'perl6 build/rakudo/t/spec/S03-sequence/basic.t' spits out: Could not find sub &done | 13:14 | |
moritz_ | muixirt: that's because done_testing was renamed to done | 13:16 | |
muixirt: but I suspect that the problem with 'main' is a parrot (or nqp-rx) level problem | 13:17 | ||
muixirt | rakudo: eval((1 ... 5).perl).join(",") | 13:18 | |
p6eval | rakudo fc2db1: ( no output ) | ||
moritz_ | rakudo: say eval((1 ... 5).perl).join(",") | ||
p6eval | rakudo fc2db1: OUTPUT«1,2,3,4,5» | ||
muixirt | moritz_: a test that fails currently | 13:19 | |
(from a test) | |||
13:19
cogno left
|
|||
muixirt | ===SORRY!=== | 13:20 | |
Unable to open filehandle from path 'eval((1 ... 5).perl).join(",")' | |||
moritz_ | wtf? | ||
which test is that from? | |||
perl6 '...' without -e ? | |||
muixirt | build/rakudo/t/spec/S03-sequence/basic.t | 13:21 | |
I'm a idiot | |||
of course moritz_ is right | 13:22 | ||
masak | arnsholt: I've read about some ways to make instruction fetching fast, and I'd like to try them out. | ||
moritz_ | ok 88 - Can take .perl of sequence | ||
No main sub found in 'Any::join' at line 1 in 'Any::join' at line 1462:CORE.setting in main program body at line 151:t/spec/S03-sequence/basic.t | |||
muixirt | it produces the 'No main sub found' error msg | ||
arnsholt | masak: Cool | 13:23 | |
Anyways, I need to read up a bit on SIC first, I think | |||
moritz_ | it seems that parrot had a serious API change or break | ||
ah, DEPRECATED.pod talks about this | 13:24 | ||
masak | arnsholt: right now with SIC, the source code is the specification. | 13:29 | |
13:32
cogno joined,
pmurias left
|
|||
arnsholt | masak: Yeah, I noticed. Which is partly why I haven't grokked much of it yet =) | 13:35 | |
masak | :) | ||
let me know if I can help. | |||
some people have been expressing surprise by the use of the syntax 'reg[$n]' (no sigil) | 13:36 | ||
arnsholt | I'll keep that in mind | ||
masak | it's a call to ®, but maybe folks are used to having it be 'reg()[$n]' | 13:37 | |
13:38
nightwatcher joined,
risou left
13:47
sol1tude joined
|
|||
masak | sol1tude: hi! I read today that you're the number one habit of creative people. :) | 13:48 | |
sol1tude | hello masak :) | 13:49 | |
13:51
cogno left
14:05
am0c joined
14:10
felliott left
14:11
tzhs left
14:12
molaf left
14:13
kjeldahl left
14:15
wamba joined
|
|||
moritz_ | journal.stuffwithstuff.com/2010/12/...operators/ | 14:16 | |
nightwatcher | hello, can regexes that work under perl5.8.8 work under perl6 since perl6 provides a superset of Perl 5 features with respect to regexes (As I was told..) | 14:17 | |
14:17
cogno joined
|
|||
moritz_ | nightwatcher: mostly, yes | 14:17 | |
nightwatcher | mostly? | ||
moritz_ | mostly | 14:18 | |
I don't think it'll be bug-for-bug compatible wrt embedded closures | |||
14:19
risou joined
|
|||
moritz_ | also perl 5 uses some weird heuristics to distinguish array subscripts and char classes | 14:19 | |
rakudo had the rx:P5 modifier implemented at some point, but regressed on it while switching to another grammar engine | 14:20 | ||
masak | nightwatcher: also, we're not talking a syntactic superset here... | 14:21 | |
moritz_ | unless you say { use v5; # perl 5 code here } | ||
but I think that's going to be kinda hard to implement | |||
and only of limited usefulness | 14:22 | ||
nightwatcher | mortiz_: regarding grammer.. one more question, what exactly can I do with perl6 rules? can I redefine how a regex is parsed? I am kinda new to v6.. | ||
moritz_ | nightwatcher: first of all you can give regexes names, group them in classes/grammar, and properly reuse them | 14:23 | |
then you can use them parse almost anything. Like a programming language | |||
masak | moritz_: nice article. parts of it are similar to Perl 6. I think the choice of identifiers in Perl 6 is a long-term big win, though. | ||
moritz_ | masak: I think the existence of proper precedence levels is also a big win :-) | 14:24 | |
14:25
sftp left
|
|||
nightwatcher | mortiz_: will we have varialbe length lookbehind in production ready v6? | 14:25 | |
masak | moritz_: oh, definitely. | 14:26 | |
moritz_ | nightwatcher: yes | ||
masak | afk & | ||
14:26
masak left,
wagnerf joined
|
|||
nightwatcher | mortiz_: is it available now? can I test it here? | 14:27 | |
moritz_ | nightwatcher: I don't know | ||
14:27
kraai_ left
|
|||
moritz_ | I know that rakudo and nqp-rx don't implement it | 14:27 | |
maybe the old rakudo, and maybe niecza | |||
niecza: say 'abc' ~~ /<?before a .*> c/ | 14:28 | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«» | ||
moritz_ | niecza: say 'abc' ~~ /c/ | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«» | ||
moritz_ | hm :( | ||
nightwatcher | :S | 14:29 | |
moritz_ | alpha: say 'abc' ~~ /<?before a .*> c/ | ||
p6eval | alpha : OUTPUT«» | ||
moritz_ | alpha: say 'abc' ~~ / c/ | ||
p6eval | alpha : OUTPUT«c» | ||
moritz_ | alpha: say 'abc' ~~ /<?before b> c/ | ||
p6eval | alpha : OUTPUT«» | ||
moritz_ stupid | |||
alpha: say 'abc' ~~ /<?after b> c/ | |||
14:29
yarp left
|
|||
p6eval | alpha : OUTPUT«c» | 14:29 | |
moritz_ | alpha: say 'abc' ~~ /<?after a.* > c/ | ||
p6eval | alpha : OUTPUT«c» | ||
nightwatcher | :D | ||
moritz_ | alpha: say 'Abc' ~~ /<?after a.* > c/ | ||
p6eval | alpha : OUTPUT«» | 14:30 | |
moritz_ | nightwatcher: you see, worked in an old version of rakudo | ||
nightwatcher | mmm.. will it be added in coming rakudo new versions? | 14:31 | |
moritz_ | niecza: say ('abc' ~~ /c/).WHAT | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«» | ||
moritz_ | niecza: say ('abc' ~~ /c/).typename | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«Match» | ||
moritz_ | niecza: say ('abc' ~~ /c/).Bool | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«Bool::True» | 14:32 | |
14:32
MayDaniel_ joined
|
|||
moritz_ | niecza: say ('abc' ~~ /<?after a.*> c/).Bool | 14:32 | |
colomon | moritz_: fascinating how that blogger goes through contortions to end up with something less powerful than Perl 6. :) | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«===SORRY!===Can't locate object method "tocclist" via package "RxOp::Quantifier" at /home/p6eval/niecza/src/RxOp.pm line 301.Can't call method "isa" on an undefined value at /home/p6eval/niecza/src/Niecza/Actions.pm line 786.Can't call method | ||
.."oplift" on an und… | |||
moritz_ submits two niecza bugs | |||
nightwatcher | mortiz_: this feature will save me a lot of coding (so I can watch more TV! B-)) | 14:33 | |
moritz_ | nightwatcher: that's great. BTW if you press the tab key after typing the first three characters of my nick, your chances of misspelling it are lower :-) | ||
nightwatcher | moritz_: hihihi... oh sorry.. nothing personal! :) | 14:35 | |
moritz_ | :-) no offense taken | ||
I just see that many people don't know about nick tab completion, and often I find out by them misspelling nicks often :-) | |||
dalek | odel: b40fd73 | jonathan++ | common/NQP/NQPSetting.pm: [common] Setting should be in UTF8, not latin-1. |
14:36 | |
odel: 3cdb62c | jonathan++ | dotnet/compiler/compile.pir: [dotnet] Be explicit about reading in UTF-8. |
|||
odel: aa353ae | jonathan++ | dotnet/runtime/ (2 files): [dotnet] Add some very basic method cache support to the runtime; a slot for it in the s-table and an op to install it. |
|||
odel: 51b9891 | jonathan++ | common/NQP/NQPSetting.pm: [common] Get NQPClassHOW to publish a method cache. Also fix a thinko - should build caches last, after attribute composition. |
|||
nightwatcher | moritz_: on perl5.8.8 my perl report generator takes 3.5 seconds.. I will run it on perl6 tonight and see the difference.. | 14:37 | |
tadzik | :) | ||
Trust me, you will be suprised | |||
nightwatcher | tadzik: much faster? ;) | ||
moritz_ | probably takes 5min or so, +- a factor of 10 | ||
tadzik | oh, I have no heart to tell you the truth :) | ||
nightwatcher | moritz_: oh god that might hang my production servers :D | 14:38 | |
moritz_: will be much fun! | |||
tadzik | but well, on niecza maybe | ||
14:38
MayDaniel_ left
|
|||
tadzik | if it turnes out to be underperformant for your needs, try it on niecza | 14:38 | |
nightwatcher | I will remove the rakudo packages I guess.. I will install niecza instead.. I thought rakudo is the most ready for production realease... | 14:39 | |
moritz_ | rakudo is the most feature complete | ||
14:39
kaare_ left
|
|||
moritz_ | but not the fastest | 14:39 | |
niecza: say ('abc' ~~ /c/).Str | 14:40 | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«c» | ||
moritz_ | niecza: say ('abc' ~~ /c/).from | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«2» | ||
moritz_ | niecza: say ('abc' ~~ /c/) | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«» | ||
nightwatcher | mmm.. (time to make a choice.. speed or features...) speed! :D | ||
14:41
Tedd1 joined
|
|||
tadzik | maybe you don't need the speed, and maybe you don't need the features | 14:41 | |
nightwatcher | tadzik: and maybe I need both? | 14:42 | |
14:42
am0c left
|
|||
nightwatcher | too bad niecza is not prepackaged for fedora.. I enjoyed yum! | 14:44 | |
moritz_ | was it... yummy? | 14:45 | |
nightwatcher | moritz_: very yummy!!! | ||
14:45
kanishka left
14:47
cogno left,
roen joined
14:49
redicaps left
14:53
nightwatcher left
14:56
molaf joined
15:02
hcchien left
|
|||
sorear | good * #perl6 | 15:14 | |
15:15
alester joined
|
|||
moritz_ | good morning sorear | 15:16 | |
15:16
araujo left
|
|||
sorear | TimToady: What does bare :: mean as a term? | 15:16 | |
15:17
jaldhar left,
araujo joined
|
|||
moritz_ | std: :: * :: | 15:17 | |
p6eval | std 625303c: OUTPUT«ok 00:01 120m» | ||
moritz_ | std: $ | 15:18 | |
p6eval | std 625303c: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at /tmp/wCjQTX5PZO line 1:------> <BOL>⏏$Bogus statement at /tmp/wCjQTX5PZO line 1:------> $⏏<EOL> expecting twigilParse failedFAILED 00:01 120m» | ||
15:21
hcchien joined
15:28
muixirt left
15:29
hcchien left
15:30
plobsing left
15:32
snearch left
15:34
Guest57809 left
15:35
wtw left
15:37
risou left
|
|||
sorear | moritz_: does $.foo imply item context? | 15:40 | |
moritz_ | sorear: yes | 15:42 | |
(though rakudo doesn't implement that part) | |||
15:43
cogno joined
15:45
sol1tude left
|
|||
sorear | moritz_: what about $.method(1,2,3) ? | 15:45 | |
moritz_ | same | 15:49 | |
if you don't want to extort context, use self.method(1, 2, 3) | |||
sorear | I see | 15:53 | |
Given has @.foo; is self.foo equivalent to @.foo ? | |||
15:54
envi left
|
|||
moritz_ | I think so | 15:54 | |
jnthn | Only if .list is identify on the thing in there. | 15:56 | |
sorear | JNTHN IS BACK! | ||
jnthn | Which it usually is for Positional things. | ||
o/ sorear :) | |||
sorear: Only sort of back this week. Really really back next week. | 15:57 | ||
16:01
hcchien joined
16:05
Patterner left
16:06
cogno left,
amkrankruleuen joined
16:07
Psyche^ joined,
Psyche^ is now known as Patterner
16:08
ROlds left
16:09
doddo joined
16:10
cogno joined
16:11
cogno left,
cogno joined
16:13
felliott joined
16:16
cjk101010 left
16:19
wamba left
16:22
gbacon joined
|
|||
colomon | rakudo: sub f(Int $a) { $a * $a }; say &f.signature.params.constraints.perl | 16:23 | |
p6eval | rakudo fc2db1: OUTPUT«Method 'constraints' not found for invocant of class 'Parcel' in main program body at line 22:/tmp/qs0Oc1C600» | ||
16:23
kaare_ joined
|
|||
colomon | rakudo: sub f(Int $a) { $a * $a }; say &f.signature.params[0].constraints.perl | 16:23 | |
p6eval | rakudo fc2db1: OUTPUT«Bool::True» | 16:24 | |
colomon | ? | ||
moritz_ | there is no constraint | ||
so rakudo stores True | |||
colomon | Int doesn't count? | ||
moritz_ | so that $anything ~~ $constraint returns True | ||
that's the type | |||
not the constraint | |||
rakudo: sub f(Int $a) { $a * $a }; say &f.signature.params[0].type.perl | 16:25 | ||
p6eval | rakudo fc2db1: OUTPUT«Int» | ||
colomon | rakudo: subset Positive of Int where * > 0; sub f(Positive $a) { $a * $a }; say &f.signature.params[0].constraints.perl | ||
p6eval | rakudo fc2db1: OUTPUT«(Int)» | ||
colomon | rakudo: sub f(Int $a where * > 0) { $a * $a }; say &f.signature.params[0].constraints.perl | ||
p6eval | rakudo fc2db1: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 22» | ||
jnthn | fwiw, what moritz_++ said is consistent with how I understand it/implemented it too :) | ||
colomon | rakudo: sub f(Int $a where { $a > 0 }) { $a * $a }; say &f.signature.params[0].constraints.perl | 16:26 | |
p6eval | rakudo fc2db1: OUTPUT«({ ... })» | ||
16:26
cogno left
|
|||
moritz_ | rakudo doesn't .perlify closures very well :/ | 16:26 | |
colomon | jnthn: you expect me to listen to you just because you implemented it? ;) | ||
jnthn | :P | ||
colomon | btw, I'm doing this looking at one of the IO::Prompter examples. It's crazy stuff. And it also slightly doesn't work. | 16:27 | |
jnthn | It turns out that in a program that just makes calls to single-dispatch subs that do pretty much nothing, we spend almost half of the runtime doing the type checks. | ||
colomon | prompt -> Num $amount, Coefficient $rate, Int $term, Str $desc where /\S/ { | ||
16:27
molaf left
|
|||
jnthn | Good job that's getting a bunch cheaper in 6model... :) | 16:27 | |
colomon | \o/ | ||
jnthn | Though tempting to try a hack now... :) | 16:28 | |
moritz_ | jnthn: if it does mostly nothing in the subs, no wonder it spends much time in the sub overhead | ||
colomon | go jnthn++ go! | ||
jnthn | moritz_: Yeah, but the overhead is...crazy. | ||
moritz_: It means type checks hugely dominate signature binding runtime. | |||
jnthn has been poking around a bit. :) | 16:29 | ||
16:29
rhebus joined
|
|||
colomon | rakudo: my $a = (Num); say $a.WHAT; | 16:45 | |
p6eval | rakudo fc2db1: OUTPUT«Num()» | ||
colomon | rakudo: my $a = (Num).list; say $a.WHAT; | ||
p6eval | rakudo fc2db1: OUTPUT«List()» | ||
colomon | rakudo: my $a = (Num).list; say $a.perl | 16:46 | |
p6eval | rakudo fc2db1: OUTPUT«(Num)» | ||
colomon | rakudo: my $a = (Num).list; say $a.perl; say 5.Num ~~ $a; | ||
p6eval | rakudo fc2db1: OUTPUT«(Num)Bool::False» | ||
colomon | rakudo: my $a = (Num).list; say $a.perl; say 5.Num ~~ all $a; | ||
p6eval | rakudo fc2db1: OUTPUT«(Num)Bool::False» | ||
colomon | and that's why Damian's code isn't working. | 16:47 | |
hmmm. | |||
need to start with a good test, I think. :) | |||
jnthn | Whee. A simple cache makes a fairly notable difference to my benchmark. | 16:50 | |
tadzik | nice :) | 16:56 | |
16:56
cibs joined,
cibs__ joined,
cibs left,
cibs__ left
16:57
Maksim2011 joined,
cibs joined
17:00
muixirt joined
|
|||
jnthn does a before and after spectest run to make sure he hasn't busted anything :) | 17:01 | ||
muixirt | jnthn: 2 spectest runs, now that's an incentive to make rakudo faster ;-) | 17:03 | |
17:03
Maksim2011 left
17:04
Maksim2011 joined
|
|||
jnthn | I'm curious if the second one (with the patch) will be faster... :P | 17:05 | |
Hmm...I get a bunch of "Missing test file: " warnings at the start of the spectests. | |||
17:05
roen left
17:06
Maksim2011 left
17:07
masak joined
|
|||
masak | \o/ | 17:07 | |
jnthn | o/ masak | ||
masak | I'm now officially a Southerner. | ||
tadzik | happy masak makes people happy :) | ||
jnthn hands masak a trithong | 17:08 | ||
masak | iouuuu | ||
jnthn | :D | ||
A southerner with internets too :) | |||
masak | jnthn: that why your nick is all consonants, because you hand away your vowels in triplets? :P | ||
jnthn | noaa | 17:09 | |
masak | yes, Windows 7 and I made a temporary truce to get the tubes flowing. | ||
now we're back to mutual respectful distaste. | |||
jnthn | :) | 17:10 | |
It's better than Vista. :) | |||
17:10
Maksim2011 joined
|
|||
masak | from what I hear, that's not saying much.. | 17:11 | |
jnthn | :P | ||
moritz_ | colomon: you'll need s/Num/Real/ | 17:12 | |
colomon: 5 hasn't be a Num for ages | |||
muixirt | masak: so you're in charge of making those rakudo* msi binaries?! | ||
17:12
Maksim joined
|
|||
masak weeps | 17:12 | ||
jnthn | lol | ||
wtf, I'm getting a very noisy test run even with a fresh checkout. | 17:13 | ||
Trashlord | weep weeep | ||
masak | I'm a bit emotional today, it seems. this morning I bid farewell to the Mac of $work.prev -- a long and sincere friendship. | 17:15 | |
moritz_ | jnthn: parrot master has changed to only run :main subs, not the first sub in a file | ||
which breaks rakudo quite severely | |||
jnthn | Typical. | 17:16 | |
muixirt | moritz_: but that's not hard to fix, is it? | ||
masak | so why did we bump PARROT_VERSION? | ||
moritz_ | we didn't | ||
jnthn | masak: I have locally got master built, not the suggested PARROT_REVISION. | ||
moritz_ | muixirt: if you think so, go right ahead :-) | ||
tadzik | oh btw, I fixed RT #80982 loally | ||
jnthn | As it fixes a Win32 build issue... | ||
tadzik | * locally | ||
jnthn | *sigh* | 17:17 | |
17:17
Maksim2011_ joined
17:19
Maksim2011 left,
Maksim left,
Maksim2011_ left,
noganex left
|
|||
muixirt | moritz_: It's only adding ':main' to the 1st sub if no other sub is main, or is there more to it? | 17:20 | |
moritz_ | muixirt: that might work | ||
muixirt: but I don't even know which compilation stage needs fixing | 17:21 | ||
muixirt | might? | ||
jnthn | Actions maybe. | ||
moritz_ | maybe POST -> PIR | ||
17:21
Maksim joined
|
|||
jnthn | There's already a .pirflags thingy | 17:21 | |
.pirflags(':main') set on the appropriate PAST::Block would do it. If you can work out what the appropriate block is. and if this doesn't have other side-effects. | 17:22 | ||
muixirt | only 77 files to look at :-) | ||
plus those generated | 17:23 | ||
moritz_ | well, I don't quite understand rakudo's startup | ||
which doesn't make things easier | |||
and I do suspect that some of the fixes need to go to nqp-rx | |||
jnthn | That may be the case. | ||
Hm | |||
17:23
justatheory joined
|
|||
jnthn wonders why that got changed. | 17:24 | ||
dukeleto | jnthn: welcome back | ||
jnthn | dukeleto: o/ | ||
17:24
kanishka joined
|
|||
dukeleto | if y'all need help with getting rakudo to work after the encapsulate-main merge, let me know | 17:25 | |
jnthn | It'd help if Parrot did stuff that helped HLL devs rather than made them chase after endless changes with little benefit. :| | 17:26 | |
17:27
noganex joined
|
|||
dukeleto | jnthn: i feel your pain, but this branch is necessary to fix our packfiles | 17:27 | |
jnthn: it was bad design and being fixed, which means changing some stuff. But certain algorithms in packfiles will become O(1) instead of O(N) and I think that will make Rakudo people happy | 17:28 | ||
jnthn | That'll be preferable. :) | ||
dukeleto | jnthn: i think there is a branch or patch to nqp-rx somewhere that makes it grok stuff after the encapsulate-main merge | 17:29 | |
jnthn: or at least 80% of the time. I heard about it, but didn't see the bits. | |||
jnthn: we should have a wiki deprecation page for the encapsulate-main merge, and if we don't, someone is in trouble | |||
masak | dukeleto: I'll magnanimously pretend the Parrot people didn't steal that idea from SIC. :P | 17:31 | |
dukeleto | masak: EDIDNTPARSE | 17:32 | |
moritz_ | dukeleto: no branch in the repo itself | ||
masak | dukeleto: probably just as well... :) | ||
17:32
Miguelanxo joined
|
|||
Miguelanxo | Hi there! | 17:32 | |
masak | Miguelanxo: hi! | ||
moritz_ | dukeleto: and the "Network" view on github doesn'T show one either | ||
Miguelanxo | is there some common reason to be banned on #perl? | ||
masak | Miguelanxo: many. | ||
moritz_ | Miguelanxo: usually spamming or trolling | 17:33 | |
Miguelanxo | xBF? | ||
well, figure me stunned | |||
17:33
MayDaniel_ joined
|
|||
moritz_ | or something having the bad luck of living in the same subnet as spammer | 17:33 | |
17:33
Maksim left
|
|||
Miguelanxo | who is cannel ops on perl? | 17:33 | |
moritz_ | many | ||
is there a concrete case you want to talk about? | 17:34 | ||
dukeleto | moritz_: plobsing is the person to ask about encapsulate-main, it was mostly his baby | ||
Miguelanxo | well, I for sure want to be unbanned | ||
moritz_ | Miguelanxo: you're in the channel, how can you be banned? | ||
Miguelanxo | noo | ||
I'm on perl6 | |||
not on perl | |||
moritz_ | sorry | ||
I parsed that wrongly | |||
The main reason for banning is, iirc, using it as a help channel wehn it's not intended to be one | 17:35 | ||
17:35
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
Miguelanxo | wel,, that makes a lot more sense | 17:36 | |
17:37
rhebus left
|
|||
Miguelanxo | "Freenode #Perl is Freenode's primary Perl help channel" | 17:38 | |
now I don't understand a bit | |||
moritz_ | what did the topic of the channel say? | 17:40 | |
17:41
fhelmberger_ joined
17:42
MayDaniel_ left
17:44
fhelmberger left
|
|||
colomon | moritz_: err, obviously 5 isn't a Num, which is why I was saying 5.Num. Damian's code may be slightly broken on this front, I'm not sure... | 17:45 | |
moritz_ | probably just outdated | ||
colomon | hmmm, though my test is parsing "10", "20.2", and "40e20" all as Nums. | 17:46 | |
moritz_ | probaly prefix:<+> errornously returning Nums | ||
17:48
Maksim joined
|
|||
moritz_ | fun fact: simple nqp-rx programs run without error; declaring a class is enough to trigger the error. | 17:48 | |
tadzik | wklej.org/id/449504/ | ||
17:48
Maksim left
|
|||
colomon | rakudo: sub f(Str $i where where /\D/) { say $i }; say f("ten"); | 17:49 | |
p6eval | rakudo fc2db1: OUTPUT«Could not find sub &where in <anon> at line 22:/tmp/6FuZV_dsFI in 'Block::ACCEPTS' at line 6067:CORE.setting in 'f' at line 1:/tmp/6FuZV_dsFI in 'f' at line 1:/tmp/6FuZV_dsFI in main program body at line 22:/tmp/6FuZV_dsFI» | ||
17:49
takadonet joined
|
|||
takadonet | yo yo | 17:49 | |
moritz_ | double where | ||
tadzik | o/ | ||
colomon | moritz_: yes, trying to figure out why double where made it through my test without a syntax error. | ||
constraints on types are not making it through the block version of prompt correctly. | 17:50 | ||
17:51
rgrau joined
|
|||
masak | takadonet: \o | 17:52 | |
jnthn | Pushed the cache thing. I *think* it's OK. Revert it if not and I'm not about to discuss. Here's benchmark.pl before and after - not very scientific but... nopaste.snit.ch/27543 | ||
moritz_ | looks great :-) | 17:53 | |
colomon | rakudo: sub f(Str $i where /\D/) { say $i }; say &f.signature.params[0].constraints.perl | ||
p6eval | rakudo fc2db1: OUTPUT«({ ... })» | ||
colomon | jnthn++ | ||
rakudo: sub f(Str $i where /\D/) { say $i }; say &f.signature.params[0].constraints.WHAT | 17:54 | ||
p6eval | rakudo fc2db1: OUTPUT«List()» | ||
takadonet | wow | ||
colomon | jnthn: is constraints supposed to be a list of constraints? | ||
jnthn | colomon: erm. :) | ||
jnthn checks quickly | |||
moritz_ | or a junction? | ||
tadzik | jnthn: rakudo or nqprx? | 17:55 | |
jnthn | colomon: bind.h has an array ther | ||
*there | |||
Not a junction. | |||
17:55
Maksim joined
|
|||
jnthn | colomon: And yes, it returns that in the introspection too. | 17:56 | |
So, list. | |||
colomon | Damian is testing it like $retval !~~ $constraints | ||
jnthn | tadzik: Those numbers were from Rakudo. | ||
colomon | and it's not working. | ||
jnthn | colomon: oh. | ||
tadzik | jnthn: wow | ||
colomon | I don't think List has the right semantics to do that, does it? | ||
moritz_ | should be ~~ all @($constraints) or so | ||
jnthn | colomon: No | ||
What moritz_++ said. | |||
I think in an older version of the spec it woulda worked. | 17:57 | ||
Though much older, iirc. | |||
colomon | Ah, I tried !~~ all $constraints but it didn't work. | ||
moritz_ | a *very* old version | ||
tadzik | jnthn: mind showing the patch? | ||
jnthn | tadzik: It's pushed - see github. | ||
colomon | It's worth noting that he didn't have a test for this case in his current stuff. :) | ||
jnthn | colomon: :) | ||
Wow, I got first Rakudo patch of 2011. | 17:58 | ||
takadonet | !!!!! | ||
colomon | is "all @(Mu)" sane? | ||
takadonet | i love subset! | ||
moritz_ | colomon: yes | ||
jnthn | colomon: Ah, yeah...you could try $constraints.all | ||
moritz_ | or you could also provide True | ||
jnthn | OK, I gotta leave for the day. Got guest to entertain this evening. :) | ||
o/ | 17:59 | ||
colomon | jnthn++ | ||
\o/ | |||
this works: $retval !~~ all @(%build_opt<constraints>//Mu) | |||
or at least, it passes my tests. | 18:00 | ||
dalek | kudo: fc3035a | jnthn++ | unknown: This implements a very simple saturating cache for nominal types of parameters. Halved the runtime of a simple benchmark that focused on sub calls with typed parameters. |
||
takadonet | hmm | 18:03 | |
18:05
Maksim is now known as blaboara
|
|||
TimToady | why not use .all there? | 18:05 | |
then you probably don't need the @() | 18:06 | ||
well, the @ anyway, might still need () | |||
colomon | (%build_opt<constraints>//Mu).all ? | ||
colomon is still somewhat junctophobic | |||
TimToady | rakudo: say ().all | 18:07 | |
p6eval | rakudo fc2db1: OUTPUT«all()» | ||
colomon | hmmm, my fix there broke all my other test files. | 18:08 | |
18:08
shi joined
|
|||
TimToady | ().all should be true too, so you might find a way to ditch the Mu test | 18:08 | |
colomon | and that line is the culprit | ||
18:08
blaboara is now known as maksim
18:09
maksim is now known as release,
release is now known as maksim
|
|||
TimToady | is constraints not always there? seems like it should be, but be an empty list if there are no constraints | 18:09 | |
rakudo: say "true" if ().all | 18:10 | ||
p6eval | rakudo fc2db1: OUTPUT«true» | ||
TimToady | so you shouldn't really need the Mu test | ||
18:10
impious joined,
hercynium joined
|
|||
colomon | trying %build_opt<constraints>.all now | 18:10 | |
18:10
maksim left
|
|||
TimToady | if constaints isn't always there, then you'd at least need //() | 18:11 | |
colomon | and it passes both the tricky test file and one of the basic ones now. | ||
18:11
WonTu joined,
WonTu left
|
|||
TimToady | but I'd argue constraints should always be there, just empty sometimes | 18:11 | |
18:11
maksim joined
|
|||
colomon | all tests pass now. | 18:12 | |
TimToady | \o/ | ||
probably faster this way too, without extra flattening | |||
hercynium | flattening is fattening | 18:13 | |
colomon | TimToady: Do you remember the prompt -> Num $amount, Coefficient $rate, Int $term, Str $desc where /\S/ { blah } demo? It's working again now in current Rakudo. :) | ||
18:13
maksim is now known as maksim_
|
|||
TimToady | hmm | 18:14 | |
18:16
maksim_ left
|
|||
colomon | gist.github.com/763743 | 18:17 | |
The genius is all Damian's, but I fixed a couple of minor issues that were stopping it from working with current Rakudo. :) | |||
18:18
maksim_ joined
|
|||
colomon | though I'm having trouble pushing my latest to github for some reason. :\ | 18:19 | |
18:19
maksim_ left
|
|||
colomon | ah, there it goes. | 18:19 | |
18:20
maksim_ joined
18:21
mtk left
|
|||
muixirt | t/spec/S14-roles/parameter-subtyping.rakudo seems to hang, any commants? | 18:22 | |
18:22
maksim_ left
|
|||
TimToady | I was getting some hangs in spectest the other day, so it might not be related to jnthn++'s cache fix | 18:23 | |
but the title is suspicious | |||
18:23
mtk joined
|
|||
muixirt | the revision just before jnthn cache thingy | 18:26 | |
takadonet | maybe I will wait on git pull and make... | 18:28 | |
18:30
wamba joined
|
|||
colomon | huh, still having github issues. | 18:30 | |
18:34
wamba left,
wamba joined
|
|||
dukeleto | colomon: me too | 18:36 | |
colomon: still intermittent issues pulling and pushing | 18:37 | ||
TimToady | colomon: my problem with Damian's approach is that introspection has become a design smell to me | 18:39 | |
colomon | TimToady: I might well be convinced of that in time too. But if nothing else, this example is a very neat demo for the moment. :) | 18:40 | |
afk # nap | 18:41 | ||
18:42
masak left
18:49
dsp_ left
18:55
colbseton joined
19:03
Patterner left
19:04
colbseton left,
takadonet left,
colbseton joined
19:05
Psyche^ joined,
Psyche^ is now known as Patterner
19:09
Miguelanxo_ joined
19:12
dsp_ joined,
Miguelanxo__ joined
19:13
Miguelanxo left
19:15
Miguelanxo joined
19:16
Miguelanxo_ left,
Miguelanxo_ joined
19:17
Miguelanxo__ left
19:18
Miguelanxo__ joined
19:19
Miguelanxo left
19:21
Miguelanxo joined,
kanishka left,
colbseton left,
Miguelanxo_ left,
shi left
|
|||
moritz_ | www.perlmonks.org/?node_id=880228 with a golfed Perl 6 FP solution | 19:22 | |
19:23
Miguelanxo_ joined,
Miguelanxo__ left,
kjeldahl joined
19:25
MayDaniel joined
19:26
Miguelanxo__ joined
19:27
Miguelanxo left
19:28
Miguelanxo joined
19:29
Miguelanxo_ left
19:30
Miguelanxo_ joined
19:32
Miguelanxo__ left
19:33
Miguelanxo__ joined,
Miguelanxo left,
fhelmberger_ left
19:34
daxim left
19:35
Miguelanxo joined,
Miguelanxo_ left
19:36
Miguelanxo_ joined
19:37
masak joined,
Miguelanxo__ left
19:38
Miguelanxo__ joined
|
|||
colomon | back | 19:38 | |
19:39
Miguelanxo left
|
|||
masak | hm, introspection a design smell. I instinctively agreed, but then I got to thinking why I agree. why is it that introspection *is* a design smell, really? | 19:40 | |
colomon | rakudo: sub compress(*@a) { flat @a Zxx 1, (@a Zne @a[1..*-1]) }; say compress(<a a a a b c c a a d e e e e>).perl; | ||
p6eval | rakudo fc2db1: OUTPUT«("a", "b", "c", "a", "d", "e")» | ||
colomon | moritz_++ | ||
tadzik | colomon is masak! | ||
masak | I wouldn't be surprised if a proper answer showed that some introspection is harmless. | ||
19:40
Su-Shee joined
|
|||
Su-Shee | good evening. | 19:41 | |
masak | Su-Shee! \o/ | ||
tadzik | colomon goes nap, masak leaves irc. colomon gets back, masak starts posting | ||
colomon is not masak. | |||
tadzik | hi Su-Shee | ||
masak is not colomon | |||
colomon | Su-Shee! | ||
Su-Shee | apples are not pears? | ||
masak | bits are not qubits. | ||
19:41
Miguelanxo_ left
|
|||
colomon | He's red. I'm blue. | 19:41 | |
Su-Shee | I'm not your father. | ||
masak | I'm not a potato. | 19:42 | |
Su-Shee | and yet tomatoes are fruit. | ||
masak | I once heard a mother in the grocery store correcting her daughter who had picked out tomatoes "instead" of fruit. | 19:43 | |
19:43
Miguelanxo__ left
|
|||
masak | had I been Sheldon Cooper, I would have intervened and corrected the mother. | 19:43 | |
but I'm not Sheldon Cooper. | |||
Eevee | there's surely a lesson here about duck typing | ||
colomon | masak: I think I can kind of feel where the design smell idea comes from. Elegant code shouldn't depend on that sort of thing. | ||
masak | Eevee: or subtypes. | ||
moritz_ | in German, the definition of "fruit" is usually used in the context of how stuff is used, not in a strict biological sense | 19:44 | |
Su-Shee | masak: your operator precedence question.. I thought that much about it that I realized that I had _never_ once have to look it up and rarely make a mistake with them. does it mean they're simple or does it mean they follow some logic intuitively done right? | ||
Eevee | I fear tomato is involved in some hairy diamond inheritance | ||
masak | colomon: that's just restating the prejudice. | ||
tadzik | moritz_: that's wise | ||
masak | colomon: *why*? | ||
tadzik | knowlegde is knowing that tomato is a fruit. Wisdom is not putting the tomato in a fruit salad | ||
masak | Su-Shee: yes, I think so. | ||
Su-Shee: Java has one decidedly wrong: instanceof | 19:45 | ||
Su-Shee: I never bothered to find out where it should be, though. that might be fun. | |||
moritz_ | masak: re introspection, the common line of reasoning is "it's better to have code work universally instead of context dependent. Introspection is context dependent, hence inferior" | 19:46 | |
Su-Shee | masak: I somehow just accepted in blind faith the rule "when in doubt, () like in math" and never thought about it. ;) | ||
masak | Eevee: nature does not believe in the simple category model one gets from class inheritance :) | ||
Su-Shee | tadzik: genius is making a sweetened jam/marmelade out of tomatoes or put carrots in cake. ;) | ||
masak | moritz_: hm. my guess until now was "we got a nice built-in type system, dispatch logic and all. don't reinvent it." do you find that reason similar to yours? | 19:47 | |
tadzik | :) | ||
moritz_ | masak: I don't see how yours goes against introspection | ||
masak | Su-Shee: I don't like unnecessary parentheses obviously put there due to such doubt. I find them as annoying as over-obvious comments about the workings of a program. | 19:48 | |
# increase $i by one | |||
Su-Shee | masak: I rarely need them, but that was about the only rule I've consciously read and had in mind about operators. somehow, a list which _exists_ was always good enough. | 19:49 | |
19:49
Trashlord left
|
|||
masak | moritz_: ok, new attempt at grokking your reason. is it related to the thing with the Durations, where some math ops were randomly outlawed? | 19:50 | |
moritz_ | masak: no | ||
let me find a discussion... | |||
masak | Su-Shee: there seems to be a loose consensus heuristic of "parenthesize most combinations of ops except those from basic algebra" among programmers | 19:51 | |
at least among those who gave it any thought. | |||
there is the usual question looming, how much to program for the less-than-100%-informed reader. | 19:52 | ||
19:52
Trashlord joined
|
|||
Su-Shee | masak: somehow, they must have done it well because it was no problem at all for people like me (who stopped caring about math and logic and the like in 3rd grade ;) | 19:52 | |
masak | Su-Shee: when you see $a + $b * $c, how do you group it? | 19:53 | |
moritz_ | masak: www.perlmonks.org/?node_id=695773 | ||
Su-Shee | masak: by children's math rule in german which translates to "point before stroke" aka * before + so I multiply and then add. | 19:54 | |
masak | Su-Shee: then you care enough :) | 19:55 | |
when you learn Smalltalk, you have to unlearn that part. | 19:56 | ||
Su-Shee | I was just going to mention that... | ||
(I've recently started Smalltalk..) | |||
19:59
plobsing joined,
meraxes joined
|
|||
masak | moritz_: interesting discussion. | 20:01 | |
20:01
mtk left
|
|||
masak | I come away from it more confused than I entered it, though :) | 20:01 | |
I see introspection as a feature usually reserved for the language internals, but graciously provided to the programmer. | 20:02 | ||
moritz_ | masak: remeber the "log all method calls on $obj that come from $Role" example in DBI? | 20:03 | |
20:03
muixirt left
|
|||
moritz_ | DBDI, in fact | 20:03 | |
masak | yes. | ||
moritz_ | IMHO that's a very good application of "user" level introspection | ||
masak | also, jnthn++'s mocking module. | ||
moritz_ | it's debugging, but still... | 20:04 | |
TimToady | introspection is another last-resort escape hatch | ||
masak | yes, but why? | ||
why isn't it just another feature, like iteration? | |||
tadzik | twitter.com/xquery/statuses/21283518768218112 | ||
all the cpan packages? | |||
TimToady | because one is tempted continually to write less generic code than desirable | 20:05 | |
moritz_ | tadzik: I don't think so | ||
masak | tadzik: I saw that one too. he seems very happy about something that isn't there yet. | ||
TimToady | a small example is $x.WHAT eq 'Int()' | ||
masak | ewww! | ||
TimToady | but that shows the problem, because .WHAT is introspection | ||
tadzik | masak: exactly | 20:06 | |
moritz_ | so pharsed differently, there's nothing wrong with not-restricting, properly used introspection? | ||
masak | tadzik: nevertheless, I replied to him and asked him to contact #perl6 if he had any questions. | ||
TimToady | you can say the same about BEGIN and eval | ||
colomon | masak: I admit I'm not coming up with good reasons why something like the "special" version prompt shouldn't introspect. | ||
masak | BEGIN may be a last resort, but it evaluates as early as possible. :P | 20:07 | |
masak hones is really bad puns | |||
TimToady | because it's a single point solution, when a general solution will cover MAIN and <1 2.3 4+2i> | ||
and maybe prompt | |||
masak | TimToady: but you could say that about a lot of cool things. "it's not general enough, we should do this thing once and for all..." | 20:08 | |
20:08
MayDaniel left
|
|||
moritz_ | or generally turning strings into the literals they represent | 20:08 | |
TimToady | yes, we need some kind of "untext" primitive that is useful all over | ||
masak | moritz_: a bit like a JSON parser without the injection attacks :) | ||
TimToady | I've been scratching my head all morning for a good name for it, so I can spec the other things in terms of it | 20:09 | |
masak | &pure-eval | ||
20:09
mtk joined
|
|||
sorear | hello masak | 20:09 | |
moritz_ | literal | ||
TimToady | it can be viewed as a form of eval, yes | ||
masak | sorear! \o/ | ||
TimToady | one thing about taking the evalish view is that it tends to make you want to translate enums as well | 20:11 | |
moritz_ | you mean "True" -> True ? | ||
TimToady | that's an example, yes | ||
20:12
PerlJam joined
|
|||
sorear | parse | 20:12 | |
TimToady | too generic | ||
likewise lex | |||
PerlJam | happy new year every one! | ||
20:12
orafu left
|
|||
TimToady | lex with a default lexer could be a way to look at it though | 20:12 | |
20:12
orafu joined
|
|||
TimToady | on the other hand "numify" is too specific | 20:13 | |
dwim is too general | |||
guess is too general | |||
tadzik | hello PerlJam, same to you :) | ||
TimToady | another problem you run into is words that are too overloaded already, like "id" | ||
or "type" | |||
20:13
lilly_90 joined
|
|||
TimToady | "typify" is kinda long | 20:14 | |
lex is probably the closest miss, so far | |||
diakopter | pharsed indeed | ||
TimToady | weighed and found wanting | 20:15 | |
PerlJam | what are we talking about exactly? What needs a (new?) name? | ||
TimToady | I love making jokes that only diakopter will get :) | ||
perljam: a generalizition of what <1 2.3 4i> is already specced to so | 20:16 | ||
dalek | rixel: 869cd2b | diakopter++ | / (16 files): classes, slightly-wrong syntax attributes, methods, recursive & |
||
TimToady | *to do | ||
moritz_ | PerlJam: a function that turns a string into the literal it reprsents | ||
TimToady | or a list of strings | ||
PerlJam | hmm | ||
20:16
Psyche^ joined
|
|||
lilly_90 | helo, I downloaded the "using perl" pdf and faced a problem executing first program on my fedora14.. can someone help please? | 20:16 | |
alester | Which "using perl" pdf is this? | 20:17 | |
diakopter won't dare to step a toe into any kind of [re-]naming, since apparently I'm bad at it. | |||
moritz_ | lilly_90: if you tell us what the prlbem is, yes | ||
lilly_90 | when I execute tennis.pl I get this: Method 'split' not found for invocant of class '' | ||
PerlJam | TimToady: I take it "ident" is just as bad as "id"? | ||
masak | I'd like to propose that this &lex thing be able to parse things under different slangs, perhaps defaulting to the current one. | 20:18 | |
lilly_90 | moritz_: I think I saw your name on authors.. | ||
alester | lilly_90: This channel is for Perl 6, but I think you're looking for help on Perl 5. If so, then take a look at #perl-help. | ||
20:18
Patterner left,
Psyche^ is now known as Patterner
|
|||
sorear | alester: that's a rakudo error | 20:18 | |
20:18
bacek_ joined
|
|||
moritz_ | alester: no no, lilly_90 means "Using Perl 6" | 20:18 | |
diakopter | lilly_90: you're in the right place :) | ||
alester | look at that. Huh. | ||
moritz_ | lilly_90: what data file did you provide? did you make sure to have no leading whitespace in it? | ||
alester | lilly_90: Ignore me. :-) | 20:19 | |
TimToady | masak: so what you're saying really is that the current slang needs a way of isolating the pure bits; we started down that road once before with <number>... | ||
lilly_90 | moritz_: I used file named scores like the example in book exactly.. | ||
diakopter | on another note, it seems google hasn't indexed *the text in* that PDF; it might be nice if it had | ||
moritz_ | lilly_90: are there trailing or leading spaces in the data file? | 20:20 | |
alester | lilly_90:Can you show us the source code, please? Go to pastebin.com/ and paste the code into that box, and click Submit. Then give us the URL that it gives you. | ||
that way we can see your source code. | |||
moritz_ | lilly_90: copying from PDf and then pasting to a text file is known to be fragile | ||
20:20
zby_home_ left
|
|||
lilly_90 | I did not copy and paste.. I written it manually.. | 20:21 | |
masak | TimToady: haven't thought of it like that... yes, maybe. | ||
PerlJam | alester: Don't be so helpful after telling someone to ignore you ;) | ||
alester | :-P | ||
lilly_90 | I just re-ran it.. got these three messages: | 20:22 | |
diakopter | lilly_90: even a line break after the last line might cause the error | ||
20:22
zby_home_ joined
|
|||
lilly_90 | Method 'split' not found for invocant of class '' | 20:22 | |
in <anon> at line 13:tennis2.pl | |||
in main program body at line 1 | |||
the datafile has no leading or trailing white spaces.. | 20:23 | ||
alester | lilly_90: Please do the pastebin.com thing that I said above. | ||
20:23
wamba left
|
|||
TimToady | please show us your copy of tennis2.pl as alester++ suggested | 20:23 | |
moritz_ | lilly_90: then please show your code. The latest example has only a blank line on line 13 | ||
alester | (If you dont' have me on ignore. :-)) | ||
moritz_ | s/example/pdf/ | ||
20:23
impious left
|
|||
moritz_ should upload a new .pdf | 20:24 | ||
lilly_90 | alester: Just a moment | 20:25 | |
sorear | when I was trying to estimate "how much will self-hosting slow down Niecza builds" earlier, there was one factor I was not counting on | ||
1285 3876 32913 src/Op.pm | |||
774 2731 22495 v6/Op.pm6 | |||
lilly_90 | alester: here you go: pastebin.com/jWe35jYY | 20:26 | |
PerlJam | lilly_90: can you paste you data file too? | ||
lilly_90 | PerlJam: sure.. moment | ||
20:27
shi joined,
Patterner left
20:29
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
PerlJam | lilly_90: while I'm waiting I would guess that you have a blank line in your data file somewhere. | 20:30 | |
lilly_90 | PerlJam: here you go: pastebin.com/2yfhBcuu | ||
PerlJam: where? | |||
PerlJam | dunno. I was guessing. :) | 20:31 | |
TimToady | there seems to be a missing } | ||
on the for loop at line 10 | |||
diakopter | no.. | ||
PerlJam | just crazy indentation | 20:32 | |
diakopter | just funy indenting | ||
TimToady | okay, I see it | ||
diakopter | lilly_90: what kind(s) of line endings does the datafile have? \r\n ? \n ? \r ? \f ?? | 20:33 | |
PerlJam | lilly_90: what version of rakudo are you using? | ||
moritz_ | lilly_90: when I run your code with your data, I get a quite different output | ||
lilly_90 | moritz_: by the way now I get this : pastebin.com/y0iEjjvd | ||
PerlJam | Hmm. | ||
moritz_ | lilly_90: that's what I get too | ||
lilly_90: and that is explained by typos in your data file | 20:34 | ||
Dava vs. Dave | |||
diakopter | oh, yeah | ||
moritz_ | and Charlie vs. Charli | ||
lilly_90 | moritz_: ohhh!!! | ||
moritz_: :D | |||
PerlJam | lilly_90: so what changed between the time you had the errors and when it worked? | 20:35 | |
lilly_90 | PerlJam: I rewritten it again.. I guess you mean there was a hidden space somewhere? ;) | 20:36 | |
Thanks to all! you are great! :) bye! ^_^ | 20:37 | ||
PerlJam | Though this error is LTA: Method 'split' not found for invocant of class '' | 20:38 | |
I wonder if the name of the var is available at that point to give a better error? | |||
(I would assume so, but I dunno for sure) | 20:39 | ||
masak | PerlJam: that usually happens when .WHAT is called on a type object. | 20:40 | |
rakudo: say Str.WHAT.perl | 20:41 | ||
p6eval | rakudo fc3035: OUTPUT«Str» | ||
masak | hm. | ||
rakudo: say Str.WHAT | |||
p6eval | rakudo fc3035: OUTPUT«Str()» | ||
masak | apparently that's not how the bug is triggered... :) | ||
PerlJam | rakudo: my $not-str; $not-str.split(' '); | ||
p6eval | rakudo fc3035: OUTPUT«Method 'split' not found for invocant of class '' in main program body at line 22:/tmp/lhz4p5x1yI» | ||
TimToady | rakudo: say $*IN.get.split(' ') | ||
p6eval | rakudo fc3035: OUTPUT«LandderBerge,LandamStrome,» | 20:42 | |
TimToady | though split(' ') is probably not doing what a P5 programmer would expect | ||
20:42
lilly_90 left
|
|||
PerlJam | TimToady: maybe depends on how long they've been a perl 5 programmer :) | 20:42 | |
TimToady | you can't trick me, I already hedged it with "probably" :P | 20:43 | |
PerlJam | I forgot you can see around corners. | ||
TimToady | yeah, well, the big problem is still what I know that ain't so | 20:44 | |
PerlJam | That would be a hard one to warn against though. Would you have: use warnings 'Perl5'; or something? Because a Perl 6 programmer would expect $string.split(' ') to do what it actually does. | 20:49 | |
TimToady | we could force them to disambiguate that one to .split(/' '/) | 20:51 | |
it's not like the situation where you really want to split on space comes up all that much, so I wouldn't consider it an arduous workaround to suppress the warning | 20:52 | ||
especially if the warning says as much | 20:53 | ||
...please use .comb or .split(/' '/) instead | |||
er, .words rather | 20:54 | ||
PerlJam | right now I think I'd find that annoying. But then again ... I can't think of when I've actually wanted to split on just a single space either. | 20:55 | |
(in any language) | |||
masak | space-separated record? | 20:57 | |
21:00
Util left
|
|||
PerlJam | usually that comes across as "spaces-separated" or "arbitrary whitespace separated" | 21:00 | |
21:00
pmichaud left
|
|||
flussence | you're underestimating the evilness of people who generate "CSV" :) | 21:01 | |
masak | I agree it's probably not very common at all. | 21:02 | |
21:02
tadzik left
|
|||
diakopter | feather away | 21:03 | |
Su-Shee | flussence: you wouldn't really apply split in that case but use either a module or in perl6's case probably the superfancy CSV grammar.. :) | ||
21:06
zby_home_ left
|
|||
dalek | ecza: 437db86 | sorear++ | v6/ (2 files): [v6] Finish translation of Op |
21:06 | |
21:08
bacek__ joined
|
|||
flussence | sorear: wow. I see what you mean with the wc stats, that's a lot of boilerplate | 21:09 | |
21:12
bacek_ left
21:15
pmurias joined
|
|||
masak | TimToady: a possible problem with having a pure subset of every slang is that it might be too much to ask of someone extending Perl 6 to specify such a pure subset. | 21:17 | |
21:17
Psyche^ joined
|
|||
pmurias | sorear: hi | 21:17 | |
sorear: what's your estimation of the slowdown? | |||
21:18
Patterner left,
Psyche^ is now known as Patterner
21:21
bacek_ joined
|
|||
moritz_ | fwiw I uploaded new snapshots of the book | 21:21 | |
PerlJam | moritz++ | ||
sorear | pmurias: insufficient data | 21:23 | |
21:24
bacek__ left
|
|||
pmurias | so what's left for the bootstrap? the grammar and the actions? | 21:25 | |
sorear | no, the grammar was first. | ||
21:26
MayDaniel joined,
rindolf joined
|
|||
rindolf | Hi all. | 21:26 | |
sorear | actions, NAMBackend, driver, optimization passes, begin | ||
hello rindolf | |||
rindolf | sorear: what's up? | 21:27 | |
sorear | niecza: my $match = "foo" ~~ /^./; say ~$match | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«f» | ||
sorear | # moritz_ | ||
moritz_ | niecza: my $match = "foo" ~~ /^./; say $match | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«f» | ||
moritz_ | niecza: say "foo" ~~ /^./ | 21:28 | |
p6eval | niecza v1-35-gc9d17a7: OUTPUT«» | ||
sorear | moritz_: say has a slurpy argument | ||
21:28
Patterner left
|
|||
diakopter | sigh. enabling perlesque not to require predeclaration of classes & method signatures (by prepending another pass) is requiring some non-trivial refactors. | 21:29 | |
oh well. it'll be worth it in the end. | |||
(enables recursive & cross-referring methods and cross-referring classes, all resolved at compile-time) | 21:30 | ||
moritz_ | sorear: I consider $/ a scalar | ||
so just like say [1, 2, 3] doesn't flatten the scalar [...], I don't think say() should flatten $/ | |||
pmurias | sorear: it doesn't make much sense to refactor stuff before migrating everything to Perl 6? | ||
21:31
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
moritz_ | niecza: say 'foo' ~~ /(.).(.)/ | 21:31 | |
p6eval | niecza v1-35-gc9d17a7: OUTPUT«fo» | ||
moritz_ | niecza: say 'abc' ~~ /(.).(.)/ | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«ac» | ||
diakopter | niecza: say 'abc' ~~ /(.).($)/ | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«b» | ||
moritz_ | niecza: 'abc' ~~ /(.).(.)/; say $/ | 21:32 | |
p6eval | niecza v1-35-gc9d17a7: OUTPUT«abc» | ||
diakopter | rakudo: say 'abc' ~~ /(.).($|.).?/ | 21:33 | |
p6eval | rakudo fc3035: OUTPUT«abc» | ||
diakopter | niecza: say 'abc' ~~ /(.).($|.).?/ | ||
p6eval | niecza v1-35-gc9d17a7: OUTPUT«ac» | ||
masak | sorear: so, how's the translation work going? | 21:34 | |
21:34
Trashlord left
21:36
Patterner left
|
|||
sorear | niecza: "foo" ~~ /^./; say $/ | 21:36 | |
p6eval | niecza v1-35-gc9d17a7: OUTPUT«f» | ||
sorear | moritz_: $/ is a scalar | ||
moritz_ | and a match doesn't return $/ ? | 21:37 | |
sorear points at STD.pm6 line 5791 | 21:38 | ||
21:38
simon__ joined,
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
sorear | if the match returned $/, then $/ would be assigned to $sigil and $twigil and $first would get undef | 21:39 | |
so instead niecza returns a value which acts like $/ in item context and @() in list context | 21:40 | ||
moritz_ is not entirely convinced | |||
STD also used @a[-1] until I changed it *-1 | 21:41 | ||
Tene | perlcabal.org/syn/ is down? | ||
dalek | ecza: 10dda8e | pmurias++ | / (3 files): added the clisp backend |
21:42 | |
colomon | \o/ | ||
sorear | pmurias: I plan to migrate the driver after you finish refactoring | 21:43 | |
masak: unexpectedly well. | 21:44 | ||
BinGOs | Tene: www.downornot.com/perlcabal.org | ||
masak | sorear: glad to hear it. | ||
std: my @seasons[4:map(*%4)]; say @seasons[-1] | |||
p6eval | std 625303c: OUTPUT«===SORRY!===Unsupported use of [-1] subscript to access from end of array; in Perl 6 please use [*-1] at /tmp/3OdGXgTJ4E line 1:------> y @seasons[4:map(*%4)]; say @seasons[-1]⏏<EOL>Parse failedFAILED 00:01 122m» | ||
masak | TimToady: ^^ | ||
TimToady | diakopter: two-pass parsing will never be in Perl 6 | ||
21:49
Psyche^ joined,
masak left
21:50
Patterner left,
Psyche^ is now known as Patterner
|
|||
dalek | ecza: af8c692 | pmurias++ | niecza: -B is the default |
21:50 | |
ecza: 08bc46f | pmurias++ | niecza: fix argument handling |
|||
diakopter | diakopter: right, but this is on the backend | 21:52 | |
erm | |||
TimToady: right, but this is on the backend | |||
assuming "perlesque" will be the language to which sprixel "desugars" (used very generally) Perl 6 | |||
dalek | ecza: ecab5bd | pmurias++ | niecza: fix hashbang line in niecza |
21:53 | |
21:53
hugme joined,
ChanServ sets mode: +v hugme
|
|||
diakopter | TimToady: I keep having to remind lots of people that perlesque is never intended to be a Perl 6 implementation; it's just an intermediate language in the sprixel implementation | 21:54 | |
TimToady | I don't think emitters should necessarily be that lazy, and two-pass parsing is fragile and inextensible | ||
21:54
Juerd joined
|
|||
TimToady | I think it's asking for trouble down the line | 21:54 | |
diakopter | it's fine for this tiny/extremely-restricted subset. it's not two-pass parsing anyway; it's two-pass tree traversing | 21:55 | |
pmurias | diakopter: perlesque looks like a language | ||
diakopter | pmurias: it's a language | ||
pmurias | diakopter: so it's natural people don't treat it like an intermediate thing | ||
TimToady | well, multiple tree traversals is less evil, but I'm assuming you're not using "is it a class" to parse differently like Perl 6 is | 21:56 | |
21:56
tadzik joined
|
|||
TimToady | if classiness doesn't change your grammar, then I'll shut up | 21:57 | |
it's retroactive grammar changes that are evil | |||
diakopter | well, after biobreak cogitation, I realized it doesn't require *any* refactors :) Advice appreciated; no, the grammar is unambiguous | 21:58 | |
pmurias: the same argument could be made for NQP | |||
TimToady | one can, of course, get into similar troubles with multi-pass trees where the types don't track the semantic changes | 21:59 | |
pmurias | i thought rakudo was compiling directly to PAST? | ||
sorear: prove -e './niecza' test.pl passes | |||
diakopter | in perlesque symbols never change type except covariantly and back | 22:00 | |
(same as CLR) | |||
TimToady | I mean if you do a tree transform and represent it with the same type, it can get into similar cyclic problems | 22:01 | |
22:01
bacek_ left
|
|||
TimToady | you can view tree transformations from either an FP view or an imperative view, in other words | 22:02 | |
diakopter | nothing transforms trees yet; it just traverses them. | ||
TimToady | sounds imperative :) | ||
diakopter | here are some details: | 22:03 | |
one way to build classes on the CLR is to use the built-in System.Reflection.Emit class, which uses TypeBuilder objects to represent in-progress-types. | 22:04 | ||
the runsharp library (which I brazenly imported into perlesque/sprixel) wraps SRE with TypeGen objects that abstract the TypeBuilder objects even further | |||
22:05
shi left
|
|||
diakopter | er, System.Reflection.Emit namespace | 22:05 | |
anyway, one pass through the tree can create all the TypeGens and FrameGens (another abstraction perlesque adds to TypeGens, to represent not-yet-ready-to-compile-to-CIL subroutine instances (continuations)) | 22:07 | ||
22:07
_twitch left,
simon__ left
|
|||
diakopter | they leave in droves (bacek_, slavik1, shi, _twitch, simon__ :( | 22:07 | |
then the next pass can fill in the CodeGens (another class in runsharp that represents the bodies of CLR methods before they are emitted to CIL) with the appropriate code. | 22:09 | ||
any optimization passes would occur in the second pass, recursively (with depth limits) if necessary, but that type/method-signature building pass wouldn't need changed for those. | 22:12 | ||
22:12
aindilis joined
|
|||
diakopter goes back to it | 22:12 | ||
22:14
bacek_ joined
|
|||
diakopter | pmurias: I see your point about compiling directly to PAST. | 22:14 | |
sprixel's strategy will be (interrupted by finishing nqpclr's regex port from pmichaud's nqp-rx): | |||
22:15
Juerd left,
shi joined
22:17
tadzik left
|
|||
diakopter | 1. use a particular viv emitter (or niecza emitter if it's caught up to viv by then) to emit a strongly/primitive-typed (as much as possible) perlesque edition of STD/Cursor. 2. write an emitter for that CLR STD/Cursor that desugars Perl 6 to perlesque, optimizing for primitive types (non-annotated scalars are Any/Cool/etc or whatever). 3. run that perlesque | 22:18 | |
22:18
hugme left
|
|||
diakopter | feather seems flaky today | 22:18 | |
22:19
dju_ joined,
Kovensky joined
22:20
cxreg joined,
bacek_ left
|
|||
diakopter | I suppose step 1 subsumes step 2 if it's niecza. wow, /me shuts up now | 22:20 | |
22:21
rbuels joined
|
|||
Tene | argh, I just spent like 20 minutes working on a reddit comment that should have been like 2 minutes. >< | 22:23 | |
22:23
dju left,
Helios joined
|
|||
diakopter | oh, and, the emitted perlesque would appear very "interpreter"-like | 22:24 | |
sorear | pmurias: cool | 22:29 | |
TimToady | pardon me if I appear distracted; still recovering from the disk crash; am at the "cpanm Moose" stage... | ||
sorear | pmurias: how long until it can build the setting? | 22:30 | |
22:30
tadzik joined
22:31
Juerd joined
22:34
jjore_ joined
|
|||
ggoebel | good to see jonathan++ back at 6model | 22:35 | |
22:35
rjbs- joined,
pumphaus1 joined
|
|||
diakopter | TimToady: disk crash was catastrophic? | 22:35 | |
like, lack of backup and such? | |||
pmurias | sorear: dunno a few small fixes propably | ||
22:35
kst`` joined
22:36
c9s_ joined,
rjbs- left,
rjbs- joined,
Helios left,
stepnem left,
jmmills left,
c9s left,
estrabd left,
kst` left,
shabble left
22:37
rjbs- is now known as rjbs,
hercynium left
22:38
sol1tude joined,
[particle] joined
|
|||
pmurias | sorear: the common lisp backend will take a lot longer to build the setting | 22:40 | |
sorear | naturally | ||
there's quite a lot of logic in the C# parts :/ | |||
pmurias | not sure if it's worth to spend time on that right now | 22:41 | |
22:41
stepnem joined,
takesako joined
22:42
Helios joined,
jmmills joined,
estrabd joined,
shabble joined,
ruoso joined,
patch joined
|
|||
colomon | Hmmm, I definitely get new failures in S14-roles/parameterized-type.t using the latest Rakudo. Will try to roll back jnthn++'s patch now. | 22:42 | |
22:43
moritz_ joined
|
|||
pmurias | sorear: where should i put the stuff to create a Niecza::Compiler for a given backend/options? | 22:45 | |
sorear | pmurias: should I plan to start v6/niecza with the old driver or the new one? | ||
pmurias: Niecza::Compiler should have a new_simple method that handles the finer points of setup | 22:46 | ||
then that can be used in the niecza script and in Niecza.proj | |||
22:47
bacek joined
|
|||
pmurias | i would rather have that seperate from Niecza::Compiler | 22:47 | |
sorear | Niecza::Simple then maybe | 22:48 | |
colomon | yeah, jnthn's patch is definitely what is breaking S14-roles/parameterized-type.t. | 22:49 | |
pmurias | sorear: i think it would be better to port over the new driver | ||
as that avoids changing it later and it's split into smaller pieces | 22:50 | ||
sorear | ok. | 22:53 | |
22:57
bacek_ joined,
kst`` is now known as kst
23:00
bacek left
|
|||
pmurias | sorear: how can i compile the new niecza? | 23:01 | |
23:01
Fuad joined
|
|||
Fuad | hi | 23:03 | |
sorear | pmurias: it's missing several components, so it can't be compiled as a whole | ||
pmurias: if you just want to compile one module, it's cd v6; ../niecza_eval -c Op | |||
23:03
bacek_ left
|
|||
sorear | (I like -v too but it's not needed) | 23:03 | |
dalek | kudo: de98d15 | colomon++ | src/binder/bind. (2 files): Revert "This implements a very simple saturating cache for nominal types of parameters. Halved the runtime of a simple benchmark that focused on sub calls with typed parameters." Keen patch, but introduced bugs I don't know how to fix. See S14-roles/parameterized-type.t for example. This reverts commit fc3035abb487aa86e35f01632e7ddcfe5ceb38f5. |
||
sorear | Fuad: hi! | 23:04 | |
Fuad | How are you, sorear ? | ||
dalek | ecza: cc6cc43 | pmurias++ | / (2 files): separate compiler creation into Niecza::Simple |
23:05 | |
sorear | Fuad: I never know how to answer that | 23:06 | |
23:06
kaare_ left
|
|||
sorear | pmurias: to compile the setting manually with the old driver, I use ./niecza_eval -v -L NULL -c --setting SAFE | 23:06 | |
23:14
Fuad left,
MayDaniel left
|
|||
pmurias | it should be a matter of adding the options to niecza (i'll do that after tommorow) | 23:14 | |
g'night | 23:15 | ||
sorear | sleep well | ||
pmurias | thanks | ||
23:15
pmurias left
23:23
simon__ joined,
simon__ left
23:32
ruoso left
23:33
rindolf left
|
|||
sorear | niecza: "foo"\ .say | 23:35 | |
p6eval | niecza v1-35-gc9d17a7: OUTPUT«foo» | ||
23:35
ruoso joined
23:36
frooh joined
23:41
MayDaniel joined,
alester left
23:42
cdarroch left
23:48
MayDaniel left
23:52
bacek joined
|