»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by moritz on 25 December 2014. |
|||
skids | Damn I missed that whole fun role discussion. | 00:01 | |
vendethiel | is claim speeced? | 00:02 | |
vendethiel would like to read up the exact semantics :) | |||
masak | not spec'd yet. | ||
I think the best two sources right now are Ovid's perl6/specs issue, and the recent backlog. | 00:03 | ||
TimToady | such as "you didn't hear it from me" | ||
skids | class A does B[1] does B[2] { method meth_in_both_Bs { ...how do we say we want to use B[1]'s meth_in_both_Bs... } # this needs syntax | 00:05 | |
maybe something like "class C does B[1] as FOO does B[2] as BAR { method x () { BAR::x() } } | 00:06 | ||
00:07
tgt left
|
|||
TimToady | std: role B[$x] { ... }; class Foo does B[1] does B[2] { method foo { self.B[1]::foo() } } | 00:07 | |
camelia | std f9b7f55: OUTPUT«===SORRY!===Confused at /tmp/J4OfS_nRYe line 1:------> B[1] does B[2] { method foo { self.B[1]:⏏:foo() } } expecting any of: coloncircumfix signatureParse failedFAILED 00:01 142m» | ||
TimToady | hmm | ||
well, one could alias to simple names first | |||
skids | ^^ | ||
jnthn | hah | 00:08 | |
TimToady would rather use existing alias stuff | |||
jnthn | Stage parse : Method 'log' must be resolved by class Int because it exists in multiple roles (Numeric, Real) | ||
TimToady snerks | 00:09 | ||
Name it and claim it! | |||
masak | oh noes, what have we created | ||
TimToady | so clarity! | ||
such rigorous! | 00:10 | ||
masak | much disambig | ||
jnthn | We'll see how many I end up with :) | 00:11 | |
TimToady | as long as you always end up with :) you'll do fine | ||
masak | you're getting them one at a time? have fun. :P | ||
jnthn | I'm really not expecting all that many :P | 00:12 | |
TimToady | sorry to worry you about the panic | ||
hope it didn't throw you... | |||
masak | puns to die for | 00:13 | |
TimToady | jnthn will remain composed | ||
masak .oO( nobody excepts the punnish inquisition! ) | |||
TimToady | who asked? | 00:14 | |
masak | the Punns. | ||
TimToady | you're not supposed to answer a rhetorical puns | ||
*pun | 00:15 | ||
skids | punnish inquision is insquisitionately punnful | ||
TimToady | except pun it's not | 00:17 | |
vendethiel | TimToady: won't work (aliasing) | ||
TimToady | std: role B[$x] { method foo {} }; constant B1 = B[1]; constant B2 = B[2]; class Foo does B1 does B2 { method foo { self.B1::foo() } } | 00:18 | |
camelia | std f9b7f55: OUTPUT«ok 00:01 142m» | ||
TimToady | if not, it would be fore semantic reasons, not syntactic | 00:19 | |
*for | |||
skids | My only problem with that is yoru role parameters can be large, so it's a DRY violation. | ||
vendethiel | well, it won't work because NYI | 00:20 | |
TimToady | m: role B[$x] { method foo { say $x } }; constant B1 = B[1]; constant B2 = B[2]; class Foo does B1 does B2 { method foo { self.B1::foo() } } | 00:21 | |
camelia | ( no output ) | ||
TimToady | m: role B[$x] { method foo { say $x } }; constant B1 = B[1]; constant B2 = B[2]; class Foo does B1 does B2 { method foo { self.B1::foo() } }; Foo.new | ||
camelia | ( no output ) | ||
TimToady | m: role B[$x] { method foo { say $x } }; constant B1 = B[1]; constant B2 = B[2]; class Foo does B1 does B2 { method foo { self.B1::foo() } }; Foo.new.foo | ||
camelia | rakudo-moar f9cb17: OUTPUT«1» | ||
TimToady | there you go, implemented just fine | ||
skids | That works. | ||
00:22
gfldex left
|
|||
skids | OK, so we do have syntax for that. | 00:22 | |
TimToady | maybe an 'is cached' on the role would help B[1] to work as reference to existing instantiation | 00:23 | |
or is that the mixin cache jnthn++ was already talking about? | 00:24 | ||
jnthn | That's very much related to the stuff I'm doing, yes | 00:25 | |
skids | m: class A { }; A.HOW.WHAT.say; role B { }; B.HOW.WHAT.say; constant C = B; C.HOW.WHAT.say # \o/ and it wasn't punning behind our backs. | 00:27 | |
camelia | rakudo-moar f9cb17: OUTPUT«(Perl6::Metamodel::ClassHOW)(Perl6::Metamodel::ParametricRoleGroupHOW)(Perl6::Metamodel::ParametricRoleGroupHOW)» | ||
skids | Though I guess it would have blown up if it was punning because does vs is. | 00:32 | |
TimToady | m: class A {}; class B does A {} # just checking | 00:33 | |
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!=== Error while compiling /tmp/fuANEJ1007A is not composable, so B cannot compose itat /tmp/fuANEJ1007:1------> » | ||
TimToady | tra la la BOOM dee ay! | 00:34 | |
00:37
Timbus left
|
|||
dalek | kudo/claim-prototype: 2f91a50 | jnthn++ | src/Perl6/Actions.nqp: Claiming a proto is OK. |
00:37 | |
kudo/claim-prototype: c326906 | jnthn++ | src/core/ (4 files): Add claim as needed in some CORE.setting roles. |
|||
kudo/claim-prototype: 3946ec8 | jnthn++ | src/Perl6/Metamodel/ (4 files): Make claim inside of a role work. This doesn't make it work yet inside of a class, and private methods will need a look (some factoring out needed, no doubt). But it should let us explore the idea some more. |
|||
jnthn | > role A { method m() { } }; role B does A { method m() { } }; class C does B { } | 00:38 | |
Method 'm' must be resolved by class C because it exists in multiple roles (A, B) | |||
> role A { method m() { } }; role B does A { claim method m() { } }; class C does B { } | |||
(no complaints) | |||
TimToady | \o/ | ||
skids | So... how does all the above apply to attributes... | ||
jnthn++ | 00:39 | ||
TimToady | if C also does A does it blow up again | ||
jnthn | TimToady: Not yet, because I didn't implement the bits needed for "claim" inside of class to work. | ||
TimToady | role A { method m() { } }; role B does A { claim method m() { } }; class C does B does A { } # should blow up anyway | 00:40 | |
jnthn | skids: No changes there. | ||
TimToady | there's no claim inside of class, so not sure what you mean | ||
jnthn | > role A { method m() { } }; role B does A { claim method m() { } }; class C does B does A { } | ||
Method 'm' must be resolved by class C because it exists in multiple roles (A, B) | |||
TimToady | okay, good | 00:41 | |
jnthn | TimToady: Yer right, I misread :) | ||
TimToady | that was my "you didn't hear it from me" policy | ||
jnthn | I still have some beer left so I guess I can look at patching things so claim works inside of class also | 00:42 | |
TimToady | but aren't they always claimed? | ||
wrt roles? | |||
or are you thinking wrt ancestral classes? | 00:43 | ||
jnthn | Oh, hmm | ||
Well, it depends what we want | |||
00:43
treehug88 left
|
|||
jnthn | role A { method m() { } }; class C does A { method m() { } } | 00:43 | |
Does that method decl need "claim"? | |||
TimToady | not currently | ||
jnthn | I know that! Nothing needed it a few minutes ago :P | ||
TimToady | we assume claim semantics for classes vs roles already | ||
jnthn | OK, if we'll not make that need claim then my work here is done... :) | 00:44 | |
TimToady | but someone could 'use claim-jumping;' or so and require claim on overrides of ancestral methods | ||
skids | mixins? | ||
TimToady | mixins are just run-time composition | 00:45 | |
jnthn | skids: Mixins use the normal role composition code. | ||
skids | so do they have to claim to override a class method? | 00:46 | |
jnthn | No | ||
skids | And if they do claim, that's fine too? | ||
jnthn | Mixin = create an anonymous subclass that composes the role(s) being mixed in, and switch the type of the object being mixed into to it. | ||
TimToady | claim only relates to the ancestors of the role | 00:47 | |
the new anonymous class behaves as a class, not a role | |||
so doesn't need any claim tostake its claim | |||
class warfare, and all that | |||
.oO("Tut, tut. Nobody goes there anymore, it's too crowded.") |
00:48 | ||
jnthn | TimToady: Other questions to ponder: should an unrequired "claim" be a warning/error, and should I make claim not usable in classes by default (that is, you have to do a MOP-extending module for it to work)? | ||
At the moment it lets you write class C { claim method m() { } } even though it means nothing...which is probably not so great. :) | 00:49 | ||
TimToady | a warning seems reasonable, and claim is currently role specific | ||
jnthn | OK | ||
dalek | kudo/claim-prototype: c08695c | jnthn++ | src/Perl6/Metamodel/ClassHOW.nqp: claim is currently only for roles. At least, in the default MOP. |
00:50 | |
jnthn | Hm, maybe I should write the MOP module to make it meaningful in classes as part of my FOSDEM talk on twiddling knobs... :) | 00:51 | |
It's about 2am so the warning can wait. :) And I'll leave the branch for interested folks to evaluate. | |||
masak | jnthn++ | 00:52 | |
skids | o/ | ||
TimToady is late for his nap too... | |||
jnthn | We shouldn't land it until after the Thursday release. | ||
TimToady | Bam! says Chef Jnthn. | ||
jnthn | 'cus it'll probably have some ecosystem fallout - or at least, we don't have time to evaluate that. | ||
00:56
silug joined,
risou_awy joined,
risou_awy is now known as risou
|
|||
skids | m: role A [ $x ] is cached { } | 00:57 | |
masak | oh, it will. | ||
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!=== Error while compiling /tmp/uUlJ5ZWG6t'A' cannot inherit from 'cached' because it is unknown.at /tmp/uUlJ5ZWG6t:1------> » | ||
masak | I'm currently working on code it will affect. | ||
jnthn | That's what you claim! | 00:58 | |
masak | :P | 00:59 | |
'night, #perl6 | |||
skids | o/ | ||
jnthn | I should prolly rest also | 01:00 | |
'night o/ | |||
01:08
Timbus joined
01:14
yeahnoob joined
01:19
Alina-malina left
01:20
Alina-malina joined
|
|||
vendethiel | too much backlog, can somebody sum up what claim does? | 01:24 | |
say "the one I got from a role doesn't matter?" | |||
01:39
dayangkun joined
|
|||
vendethiel | think I got it from the commit -- it's the role's role (ha) to mark a method as "taking precedence over others imported from other roles" | 01:40 | |
TimToady | momentarily give me the override authority of a class here, but then I'm just a role again | 01:41 | |
dalek | c: 08b6365 | skids++ | lib/Language/traps.pod: Add simple trap example for Captures |
||
vendethiel | m: role A { method x { 1 } }; role B { claim method x { 2 } }; class C does A does B { }; say C.new.x | 01:42 | |
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!===None of the parametric role variants for 'B' matched the arguments supplied.Cannot invoke null object» | ||
vendethiel | ^ TimToady? | ||
TimToady | NYI except in a branch | ||
vendethiel | yeah I know, I mean -- is the 2 supposed to pop up? | 01:43 | |
TimToady | no, that's still ambiguous | ||
vendethiel | ha | ||
TimToady | leave out the 'does A' on teh class | ||
then it should work | |||
jnthn showed it working like that above | |||
vendethiel | and B should do A? | ||
TimToady | right | ||
yeah | |||
you can't claim from cousins, only from direct role ancestors | 01:44 | ||
vendethiel | alright, I see. as "role inheritance" is implemented as "copy-pasting", you need a way to say "hey I don't care about my precedessors" | ||
s/ced/dec/ | |||
TimToady | basically you only do this to make a role that encompasses and compensates for other badly designed roles | 01:45 | |
01:45
dayangkun left
|
|||
TimToady | "pretend those roles did this" | 01:46 | |
02:23
chenryn joined
02:41
chenryn left
02:42
chenryn joined
02:55
chenryn left
02:58
chenryn joined
03:18
Psyche^ joined
03:22
Patterner left
03:29
dj_goku left
03:30
ggherdov left
03:31
chenryn left
03:36
chenryn joined
03:40
d^_^b joined,
dj_goku joined
03:42
pnu left
03:47
ggherdov joined
03:52
Alina-malina left
03:53
Alina-malina joined
03:55
noganex joined
03:58
ggherdov left,
noganex_ left,
fhelmberger joined
04:02
fhelmberger left
04:07
leont left
04:11
chenryn left
04:13
anaeem1_ joined
04:16
chenryn joined
04:23
adu joined,
pnu joined
04:25
anaeem1_ left
04:26
anaeem1_ joined
04:27
ggherdov joined
04:48
chenryn left
04:51
chenryn joined
05:13
chenryn_ joined
05:15
chenryn left
05:37
chenryn_ left,
chenryn_ joined
05:42
chenryn_ left
06:01
chenryn_ joined
06:12
BenGoldberg left
06:18
yeahnoob left
06:23
adu left
06:31
yeahnoob joined
06:32
yeahnoob left,
yeahnoob joined,
yeahnoob left
06:33
yeahnoob joined,
yeahnoob left,
yeahnoob joined
06:40
bjz joined
06:42
Rounin joined
06:50
xinming_ is now known as xinming
07:06
FROGGS_ left,
bjz left
07:07
mr-foobar left
07:11
chenryn_ left
07:13
yeahnoob left
07:14
chenryn_ joined
07:26
jluis joined
07:28
bjz joined
|
|||
dalek | ast: 8c62c13 | TimToady++ | S02-types/pair.t: colon invocant test no longer needs to be skipped |
07:28 | |
07:28
kaleem joined
07:31
yeahnoob joined
07:34
gfldex joined
07:36
yeahnoob left
07:37
bjz left
07:38
bjz joined
07:39
bjz left
07:41
FROGGS joined
|
|||
FROGGS believes that our signatures, gradual types, and even things that ought to be too simple to be very useful (enums), are all most awesome... | 07:55 | ||
method c14n(Bool :$comments = False, Str :$xpath, xmlC14NMode :$exclusive = XML_C14N_1_1, :@inc-prefixes) { | |||
[...] | |||
my $bytes = xmlC14NDocDumpMemory(self.doc, $nodes, +$exclusive, $prefixes, +$comments, $result); | |||
(xmlC14NMode is an enum) | 07:56 | ||
07:56
gfldex left
07:57
dayangkun joined
|
|||
moritz | "surprisingly awesome" | 07:57 | |
07:57
bjz joined,
dayangkun left,
rindolf joined
|
|||
FROGGS | moritz: yes, when I do real life coding (rather then working on the compiler), I am often astonished how convenient Perl 6 is | 07:59 | |
08:05
xprime joined,
prime left
08:09
rindolf left
08:13
chenryn_ left
08:27
darutoko joined
|
|||
sergot | morning o/ | 08:32 | |
FROGGS | TimToady: S02:3720 needs to be revised for object hash constructors, right? | 08:33 | |
synopsebot | Link: perlcabal.org/syn/S02.html#line_3720 | ||
FROGGS | though my browser shows that thewrong anchor | ||
TimToady: the line I am talking about is: " '' => { .say } :{ .say } adverbial block (not allowed on names)" | |||
08:34
Kristien joined
08:35
zakharyas joined
|
|||
arnsholt | FROGGS++ # LibXML! | 08:35 | |
FROGGS | arnsholt: is is fun, really :o) | 08:37 | |
(especially because it works well) | |||
08:38
xinming_ joined
|
|||
arnsholt | Even better! | 08:40 | |
08:41
xinming left
08:49
virtualsue joined
08:51
abraxxa joined
08:54
virtualsue_ joined
08:55
zakharyas left,
virtualsue left,
virtualsue_ is now known as virtualsue
|
|||
Kristien | Why is it that I get an infinite list when I pass the output of Z to map, but not if I don't? | 09:20 | |
gist.github.com/rightfold/17f8814b9d77edadd987 | |||
I expected it to print (Pair) just four times | |||
09:21
telex left
09:22
telex joined
|
|||
masak | good antenoon, #perl6 | 09:23 | |
Kristien: me too. | 09:24 | ||
looks like a bug. | |||
Kristien | It also happens when I don't use ==> | 09:25 | |
09:27
kjs_ joined
09:28
molaf__ joined
09:31
molaf_ left,
Hor|zon_ joined
09:33
dakkar joined
09:34
Hor|zon left
09:38
rurban joined
|
|||
jnthn | morning, #perl6 | 09:39 | |
09:39
mvuets joined
|
|||
nwc10 | good UGT, jnthn | 09:40 | |
how are your coffee supplies? | |||
sjn | Universal Greeting Time <3 | 09:41 | |
jnthn | Coffee supplies are very low, but enough for the bootstrap cup :) | 09:42 | |
And I need to go shopping for lunch anyways. :) | |||
09:50
kjs_ left
|
|||
Rounin | That was a good idea | 09:55 | |
We could try to invent some location-independent names for IRC usage, though... Like, "good boring" | 09:57 | ||
moritz | Rounin: not necessary. It's *always* morning in UGT | ||
Rounin | moritz: Amazing! | ||
I believe thou art a sage. | |||
moritz | ... except when you go to sleep, then it's always evening/night | ||
Rounin | I should tell this to my boss | 09:58 | |
No more coming in at reasonable hours | |||
moritz | create your own time zone, in which all hours are reasonable | ||
Rounin | That would be nice... With enough night owls, we could even offer 24/7 customer support | 09:59 | |
... At least, a certain amount of the time, assuming someone came in at each hour | |||
moritz | geographically diverse companies make use of time zones so that many ops teams don't have to do night shifts | 10:00 | |
Rounin | Yes... Unfortunately, we're a Swedish company, and I'm in Norway, which is in the same time zone | 10:02 | |
I'm pretty sure I could walk to Sweden without stopping to sleep, even... Though it's a stretch | 10:03 | ||
moritz | start an office in Hong Kong and one in the US, and you're good :-) | ||
(easier said than done, I know) | |||
Rounin | We're probably working on it, hehe... Today, Norway, tomorrow, the world | 10:04 | |
ab5tract | Kristien: it isn't clear to me what's going on there | ||
i haven't dug into the Whatever wizardry much yet | |||
ah, masak++ already mentioned that it's probably a bug | 10:05 | ||
10:10
fhelmberger joined
10:13
kjs_ joined
|
|||
El_Che | jnthn: I will make your fosdem talk +5m longer for estethic reasons (so it shows 10.30-19 in the schedule overview) | 10:17 | |
jnthn: but you are not getting it :) | |||
jnthn | I'm talking for 8.5 hours?! | ||
btyler | bring some water | ||
and maybe a phonebook to read | 10:18 | ||
El_Che | mm, system doesn't allow it | ||
jnthn: whatever time you need man :) | 10:19 | ||
ab5tract | has anyone ever recited entire Apocalypses in public? :) | ||
El_Che | filibustering the devroom? don't put idea's in this guys' minds :) | ||
jnthn | :D | ||
El_Che | I was looking at the schedule and we have a 10:30-18:55 program (until 19:00 allowed) | 10:20 | |
jnthn | But that's surely a marketing opportunity? "Attend our track's final talk, and you've a 5 minute advantage on getting to the pub!" | 10:21 | |
El_Che | autch. The ruby devroom only has talkes between 11:10-16:30 | ||
java has a two day full program. Those guys are verbose :) | 10:23 | ||
jnthn: so it's up to you to keep people enthused about perl6 until TimToady's talk sunday :) | 10:26 | ||
jnthn | Takes a while to configure the PresenterObserver, which obvious is done by a PresenterObserverBuilder obtained from a PresenterObserverBuilderFactory... | ||
Kristien | jnthn: docs.spring.io/spring-framework/doc...yBean.html | 10:27 | |
El_Che | The PresenterObserverBuilderFactory has its issues in openjdk so we ending using the oracle jvm after signing a NDA document and sacrificing all our goats in front of their lawyers | ||
jnthn | Kristien: Didn't do Spring, but have worked with enough large Java codebases to know I wasn't even exagerating. :) | 10:28 | |
El_Che | where do you put Spring in your cv? Java-expert or XML-expert? :) | 10:29 | |
10:31
xinming_ is now known as xinming
|
|||
arnsholt | El_Che: Masochist =p | 10:32 | |
jnthn | So, same section as "Perl 6 compiler implementor"? :) | 10:33 | |
10:34
rindolf joined
|
|||
Kristien | El_Che: under "Favourite Season" | 10:34 | |
moritz | as "last name" for me :-) | 10:36 | |
Kristien | I'd love to have Perl on the JVM, though. | 10:37 | |
moritz | (my family name, "Lenz", is an old-ish German word for spring) | ||
El_Che | moritz: so you will port spring to p6? :) | 10:38 | |
moritz | El_Che: not likely :-) | 10:39 | |
El_Che | (nowadays it required less xml as it used to do thx to annotations) | ||
(the modern dutch word for Spring is "Lente") | 10:40 | ||
Kristien | As a Dutch person I can confirm that. | 10:41 | |
jnthn | Kristien: I guess you already know that the Rakudo Perl 6 compiler can run on/produce code for the JVM? :) | ||
Kristien | Yeah, but I don't know more about it than that, e.g. w.r.t. Java interop. | ||
jnthn | psch++ here has been doing a lot of work on that lately | 10:42 | |
github.com/peschwa/eigmip6/blob/ma...e-in-c.pl6 was an example recently posted here | 10:44 | ||
Kristien | shiny | 10:46 | |
"# boilerplate starts here" | |||
nwc10 | I like jnthn's plan for what to do with the 5 minutes | 10:49 | |
FROGGS | "El_Che: java has a two day full program. Those guys are verbose :)" -- That was also my thought :D | 10:54 | |
Kristien | ab5tract: here is a more clear example: | 10:55 | |
gist.github.com/rightfold/c6073a4af093edac2f35 | |||
El_Che | FROGGS: well, once the VM is started, they are pretty fast :) | ||
11:01
denis_boyun_ joined
|
|||
vendethiel | Kristien: oh, you're rightfold? long time no see | 11:04 | |
Kristien | yeah, who are you? :P | ||
vendethiel | Kristien: 'think I was vendethiel as well on stackoverflow's c++ chat thingie | 11:05 | |
well, "c++", that's to redefine | 11:06 | ||
Kristien | oh Lounge<C++>? | ||
vendethiel | yeah | ||
(livescript guy) | |||
Kristien | ooooh nice | ||
your name was just "ven" | 11:07 | ||
vendethiel | oh, sorry | ||
masak | Kristien: vendethiel++ has many nicks. even we are confused ;) | 11:11 | |
vendethiel remembers introducing himself to lizmat as "nami-doc", which made her very confused... Whoooops | |||
Kristien | vendethiel: I am incidentally working on a JS alternative of which the acronym is also "LS" :( | 11:13 | |
I just noticed right now. :( | |||
vendethiel | well, it's not like "livescript" was a "new name" anyways | ||
ab5tract | "< Kristien> I'd love to have Perl on the JVM, though." <---- you do know that this is up and working, right? | ||
vendethiel | but yeah, I remember you working on lasagna already | 11:14 | |
Kristien | ab5tract, yeah but Rakudo isn't production-ready yet AFAIK | ||
vendethiel | got pretty far, eh? | ||
Kristien | compiler can compiler various things now | 11:15 | |
vendethiel | clojure-style lambdas, racket-style contracts, protocols (from elixir? not sure who created that) | ||
Kristien | Clojure and Elixir | ||
nothing type-related has been implemented yet and I'm still not fully statisfied with my ideas | 11:17 | ||
11:22
xfix joined
11:38
Kristien left
|
|||
ab5tract | is this fairly normal for a Java import? "use com::jsyn::instruments::JSynInstrumentLibrary:from<Java>:jar<jsyn-20150105.jar>;" .. note i'm not talking about a jvm import in rakudo, but an import within java itself | 11:41 | |
11:58
H2O1 joined
12:02
H2O1 left
|
|||
arnsholt | ab5tract: If you're thinking about the number of elements in the "path", it's a reasonably short one for Java =) | 12:09 | |
12:14
Kristien joined
12:25
booly-yam-6137 joined
12:30
kaare_ left
12:32
Kristien left
|
|||
psch | hi #perl6 \o | 12:38 | |
we probably also need something equivalent to javas «import namespace.*;» | 12:39 | ||
although afaik that's more or less deprecated in java already, so maybe we don't | 12:41 | ||
12:42
skids left
|
|||
psch | eh, discouraged, not deprecated | 12:42 | |
12:48
|Tux| left
12:49
rindolf left
12:53
leont joined
12:57
anaeem1_ left,
TuxCM joined
13:15
Kristien joined
|
|||
FROGGS | psch: look at S11, there already is something or it might fit in the picture | 13:15 | |
13:16
H2O1 joined
13:17
H2O1 left
13:20
booly-yam-6137 left
13:22
kaleem left,
booly-yam-6137 joined,
kaleem joined
|
|||
psch | FROGGS: i'm not seeing it. my thought also was rather narrowly scoped onto jvm-interop, fwiw | 13:23 | |
FROGGS: the fitting thing i see is "export propagates upwards" | 13:27 | ||
and we could assume every java package is export and thus import everything down-package | 13:28 | ||
FROGGS | ahh, I guess I had a thinko here | 13:29 | |
psch | but that feel slightly horrid and likely breaks on very high packages, e.g. «use java:from<Java>» most definitely clobbers all over the name space, as there's at least two List classes in there | ||
FROGGS | «import namespace.*;» would import everything in that namespace? | 13:30 | |
psch | yes, but not below | ||
FROGGS | that does not feel very perlish | ||
psch | note there's strong opinions against on-demand-importation in java, and no real advantages to it: javadude.com/articles/importondemandisevil.html | ||
right, i'm actually perfectly fine with not emulating on-demand-importation of java classes for our interop | 13:34 | ||
i mean, java folks say "don't do that", so there's no real point. also the java notion of "package" doesn't fit with ours anyway | |||
13:42
spider-mario joined
13:43
rindolf joined
13:47
btyler left
13:49
booly-yam-6137 left
13:50
btyler joined
13:52
booly-yam-6137 joined
|
|||
Kristien | I never use that feature in any language. | 13:59 | |
Not because it can break in the future, but because it gets incredibly difficult to figure out where names come from if you have multiple such imports. | 14:00 | ||
14:01
rurban left
|
|||
vendethiel loves qualified imports | 14:08 | ||
14:08
booly-yam-6137 left
|
|||
vendethiel | I prefer to spell out everything I want to import... (or have them qualified) | 14:08 | |
scala takes a different route than java's, though, with its import objects | |||
14:10
rurban joined
14:11
booly-yam-6137 joined
|
|||
Kristien | yeah scala imports are funny | 14:11 | |
import foo.bar.{Baz, Qux} is good | 14:12 | ||
FROGGS | what does that do? | 14:13 | |
Kristien | same as import foo.bar.Baz; import foo.bar.Qux | 14:14 | |
FROGGS | ahh | ||
vendethiel | + package objects | ||
Kristien | in Scala you can do stuff like val foo = new Foo; import foo.someMethodOnFoo; someMethodOnFoo() | ||
but that's rarely useful; overkill feature IYAM | 14:15 | ||
vendethiel | "overkill feature" is a nice way to define scala | ||
Kristien | well, it's consistent | 14:19 | |
you can replace packages by objects or variables and the imports will still work | |||
vendethiel | eh, sometimes, scala's import is c++'s using (like the case Kristien described above) | 14:21 | |
ab5tract | careful there.. scala may be the closest thing to perl 6 that's currently in production :) | 14:22 | |
vendethiel | C++, scala, perl6, they all have that little "bloat" :P | 14:24 | |
Kristien | vendethiel: more like D's alias | 14:27 | |
C++' using works only on types | 14:28 | ||
vendethiel | no, it doesn't -- you can import methods, for example, a parent class's constructor | ||
struct A { A(int); }; struct B : A { using A::A; } | 14:29 | ||
Kristien | oh right | ||
duh :P | |||
I was thinking about using Foo = Bar; | 14:30 | ||
vendethiel | right (more useful with templates, though) + c++ has using namespaces (which is arguable like import x.*; and a misfeature for many) | 14:31 | |
14:33
skids joined
14:37
adu joined,
Rounin left
14:40
booly-yam-6137 left
|
|||
moritz | you can use namespaces like that, but you don't have | 14:42 | |
you can say std::cout everywhere if you want | |||
vendethiel | that's usually what people do, yes :) | ||
good ide will offer you to use namespace (and unuse them) | |||
IDEs*, even | |||
14:47
dwarring left
14:48
adu left
|
|||
daxim | p6: class Foo { has @bars; has $quux; for @bars -> $bar { if $bar.name === $quux { } } } | 14:50 | |
camelia | rakudo-moar f9cb17: OUTPUT«(signal SEGV)» | ||
..rakudo-parrot f9cb17: OUTPUT«Can only use repr_get_attr_obj on a SixModelObject in block <unit> at /tmp/tmpfile:1» | |||
daxim | my confidence in using rakudo for a new project is 0 | ||
gtodd | ab5tract: I think scala calls itself perl8 .... www.perl8.org ... :-) | 14:51 | |
jnthn | daxim: Then don't. | 14:52 | |
PerlJam | Perl is "dead" but everybody still wants to be like Perl. | ||
tadzik | hah | 14:53 | |
PerlJam | daxim: why 0 exactly? because of that one segfault? | ||
vendethiel | some compile-time stuff is still fragile :) | ||
daxim | because of persistent problems. every time I use it or attempt to package it, I quickly run into baffling showstopper problems | 14:54 | |
skids | I suppose that matters if you are into writing self-writing code. :-/ | ||
daxim | sometimes I file issues, sometimes I don't. that's because the turnaround on github is on the order of weeks and months | 14:55 | |
14:55
mvuets left
|
|||
skids | What's baffling about the above? You defined attributes and then tried to use them without instantiating an object to hold them? | 14:55 | |
daxim | dude, it crashes. | ||
prio 5 bug | |||
psch | m: class Foo { has @bar; for @bar { } } # golfed | 14:56 | |
camelia | rakudo-moar f9cb17: OUTPUT«(signal SEGV)» | ||
14:56
booly-yam-6137 joined
|
|||
moritz | skids: it should produce a proper error message | 14:56 | |
jnthn | Correct. Also note: | ||
tadzik | (I am to blame for years-long turnover for packaging problems) | ||
skids | Yeah, and that should probably be fixed, but it didn't crash on code anyone would actually want to run. | ||
jnthn | m: class Foo { has @!bar; for @!bar { } } | ||
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!=== Error while compiling /tmp/yDlnkLVAU_Variable @!bar used where no 'self' is availableat /tmp/yDlnkLVAU_:1------> class Foo { has @!bar; for @!bar⏏ { } }» | ||
gtodd | didn't it give an error meessage ? | ||
oh wait | |||
jnthn | Just about everybody declares their attributes like that. | ||
arnsholt | Is there a semantic difference between has $foo and has $!foo? | 14:57 | |
psch | is has without twigil actually legal? | ||
jnthn | So yes, it wants fixing. No, I'm not surprised - given most code I've seen - nobody found it sooner. | ||
psch | std: class Foo { has $x } | ||
camelia | std f9b7f55: OUTPUT«ok 00:00 137m» | ||
vendethiel | jnthn: I think that's in the line of the constant-level bugs I've found previously | ||
moritz | psch: it is, but it's seldomly used | ||
psch | apparently so | ||
vendethiel | m: class A { has $b; }; A.new.b.push(3); A.new.b.push(5); say A.new.b.perl | ||
camelia | rakudo-moar f9cb17: OUTPUT«No such method 'b' for invocant of type 'A' in block <unit> at /tmp/ofsZKxFrT3:1» | ||
jnthn | psch: Yeah, it installs a compile-time lexical alias that is mapped to an attribute lookup if we ever see it. It's a sop to folks who don't like twigils. | ||
gtodd | tadzik: panda++ :-) | 14:58 | |
vendethiel | m: class A { has $b; method x { $!b } }; A.new.x.push(3); A.new.x.push(5); say A.new.x.perl | ||
camelia | rakudo-moar f9cb17: OUTPUT«Cannot modify an immutable Any in method push at src/gen/m-CORE.setting:1772 in block <unit> at /tmp/B2JJ3c5SHk:1» | ||
skids | m: class A { has $b is rw; method x { $!b } }; A.new.x.push(3); A.new.x.push(5); say A.new.x.perl | 14:59 | |
camelia | rakudo-moar f9cb17: OUTPUT«useless use of 'is rw' on $!b in any at src/Perl6/World.nqp:1846Cannot modify an immutable Any in method push at src/gen/m-CORE.setting:1772 in block <unit> at /tmp/__eYV36urN:1» | ||
vendethiel | m: class A { has $b; method x is rw { $!b } }; A.new.x.push(3); A.new.x.push(5); say A.new.x.perl | ||
camelia | rakudo-moar f9cb17: OUTPUT«Any» | ||
vendethiel | skids: the rw needs to be on the method :) | ||
skids | Oops, right | ||
m: class A { has $b; method x is rw { $!b } }; A.new.x.push(3); A.new.x.push(5); say A.new.x.perl | 15:00 | ||
camelia | rakudo-moar f9cb17: OUTPUT«Any» | ||
psch | m: class A { has $b; method x is rw { $!b //= [] } }; A.new.x.push(3); A.new.x.push(5); say A.new.x.perl | ||
camelia | rakudo-moar f9cb17: OUTPUT«[]» | ||
skids | I got it. | 15:01 | |
m: class A { has $b; method x is rw { $!b //= [] } }; $a = A.new; $a.x.push(3); $a.x.push(5); say $a.x.perl | |||
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!=== Error while compiling /tmp/bem4uL6RgFVariable '$a' is not declaredat /tmp/bem4uL6RgF:1------> $b; method x is rw { $!b //= [] } }; $a⏏ = A.new; $a.x.push(3); $a.x.push(5); sa expecting any…» | ||
jnthn | Any reason not to write has @!b (or has @b, if you must...) | 15:02 | |
skids | m: class A { has $b; method x is rw { $!b //= [] } }; my $a = A.new; $a.x.push(3); $a.x.push(5); say $a.x.perl | ||
camelia | rakudo-moar f9cb17: OUTPUT«[3, 5]» | ||
vendethiel | jnthn: because $ is easier to type and has .push anyways :P | ||
skids | class A { has $b; method x is rw { $!b } }; $a = A.new; $a.x.push(3); $a.x.push(5); say | ||
gargh. ENOCAFFEINE | 15:03 | ||
m: class A { has $b; method x is rw { $!b } }; $a = A.new; $a.x.push(3); $a.x.push(5); say | |||
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!=== Error while compiling /tmp/aJSwBmtW6nVariable '$a' is not declaredat /tmp/aJSwBmtW6n:1------> A { has $b; method x is rw { $!b } }; $a⏏ = A.new; $a.x.push(3); $a.x.push(5); sa expecting any…» | ||
psch | oh right, of course it's always Any (or []) if the new A isn't stored anywhere... | ||
skids | dammit I give up. | ||
vendethiel | skids: warning: say; without arguments won't work :p | ||
psch: yeah | |||
skids | I can't cut and paste worth crap this morning apparently. | ||
Sounds like a good time to go play with something mission critical. | 15:04 | ||
PerlJam reads backlog on claim | 15:07 | ||
15:14
kurahaupo left
|
|||
gtodd | mission critical is not part of my world ... but I have observed that confidence in many areas of human endeavor is sort of binary: it fluctuates from 0 to 1 and back again :-) | 15:29 | |
15:32
kaleem left
15:33
rindolf left
15:34
kaleem joined
15:37
abraxxa left
15:38
abraxxa joined
15:41
Kristien left
15:44
pmurias joined
|
|||
dalek | p-js: d37cae8 | (Pawel Murias)++ | src/vm/js/ (4 files): Pass test 75. Implement nqp::curcode, nqp::getcodeobj, nqp::setcodeobj. |
15:45 | |
15:45
tully-the-geek joined
15:47
FROGGS left
15:48
kaleem left,
Kristien joined
|
|||
pmurias | psch: re explicit import lists isn't a big argument for always using them in java land that the IDE autocompletion inserts them? | 15:50 | |
Kristien | On a scale from grep to OpenSSL, how buggy is Rakudo at the moment? | ||
psch | pmurias: that's definitely a big part of the argument, yes | ||
pmurias: but even without that i don't think we should have «use org.whatevs.*:from<Java>», because of the different semantics behind "package" and how we handle exportation in general | 15:51 | ||
pmurias: module Foo { module Bar is export { module Baz is export { } } }; import Foo; # imports Bar and Baz (and their exports), as far as i understand S11 | 15:53 | ||
and doing that with java interop is begging to have things break | |||
jnthn | Kristien: Depends what you're doing. If you're dealing with most of the key language features that have been implemented for quite a while, not very. If you're looking at the concurrency stuff - it's newer and needs plenty of polish yet. | ||
skids | gtodd: sometimes I find there's nothing like walking a tightrope to get your head back in the game. | 15:54 | |
Kristien | jnthn: OK | ||
jnthn | (Though those bits work better on JVM.) | ||
I've had cases where I spent the whole day writing stuff using Rakudo and didn't run into anything; there I was doing stuff with grammars, objects, bit of I/O, usual data structures... | 15:55 | ||
hoelzro | o/ #perl6 | 15:56 | |
15:56
mr-foobar joined
|
|||
PerlJam | these days, I don't usually run into rakudo bugs unless I'm *trying* to. | 15:56 | |
hoelzro | dwarring: thanks for the suggestion on the CSS module | ||
vendethiel | Kristien: also, some segfaults if you want to try the more "compile-time" part of the language :p | 15:59 | |
m: role A[::T] {...}; role A[Int] { constant T = Bool; }; role A[Str] { constant T = Int }; sub foo(::T --> A[T]) { Nil } | 16:00 | ||
camelia | ( no output ) | ||
vendethiel | m: role A[::T] {...}; role A[Int] { constant T = Bool; }; role A[Str] { constant T = Int }; sub foo(::T --> A[T]) { Nil }; foo(5) | ||
camelia | rakudo-moar f9cb17: OUTPUT«Type check failed for return value; expected 'A[T]' but got 'Any' in any return_error at src/vm/moar/Perl6/Ops.nqp:649 in sub foo at /tmp/gjwtwvJsGC:1 in block <unit> at /tmp/gjwtwvJsGC:1» | ||
vendethiel | m: role A[::T] {...}; role A[Int] { constant T = Bool; }; role A[Str] { constant T = Int }; sub foo(::T --> A[T]::T) { Nil }; foo(5) | ||
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!=== Error while compiling /tmp/hUBGSUTRhoMissing blockat /tmp/hUBGSUTRho:1------> constant T = Int }; sub foo(::T --> A[T]⏏::T) { Nil }; foo(5)» | ||
jnthn | vendethiel: I hope you're filing any of those you find :) | 16:01 | |
vendethiel | jnthn: not really, I think I was told my "general case" was filled already | ||
jnthn | OK | 16:02 | |
vendethiel | with the recursive role constant... thing | ||
jnthn | Sounds familiar :P | ||
vendethiel | .oO( and for that I'm sorry :p ) |
||
16:05
Kristien left
|
|||
dalek | rl6-roast-data: 4359c55 | coke++ | / (5 files): today (automated commit) |
16:15 | |
16:15
Kristien joined
16:17
[Tux] left
|
|||
vendethiel | m: role Nat { ... }; role Zero does Nat { constant VAL = 0; }; role Suc[::N] does Nat { constant VAL = 1 + N::VAL; }; | 16:18 | |
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!===Cannot call method 'at_key' on a null object» | ||
vendethiel | jnthn: ^ the error | ||
Kristien | I want to learn everything about Perl 6. | ||
vendethiel | that was quick :P | 16:19 | |
jnthn | vendethiel: I think that should whine that you can't compose a role that is only stubbed... | 16:20 | |
vendethiel | uh? so only classes could be allow to be stubs? | ||
jnthn | It's not that you can't stub it | 16:21 | |
16:21
rurban left
|
|||
jnthn | You'd be free to use it like a type constraint and so forth. | 16:21 | |
vendethiel | if I can't extend a stub role, how is it useful? | ||
also, what happens when you augment a stub? | |||
jnthn | It's just that roles are spec'd as immutable (and so can't be augmented) because we copy things from them (thus composition is flattening) | 16:22 | |
vendethiel | then augment a stub class :P? | ||
jnthn | Um...I didn't try that :P | ||
m: class Foo { ... }; augment class Foo { } | |||
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!=== Error while compiling /tmp/3qF2fDkPtcaugment not allowed without 'use MONKEY_TYPING'at /tmp/3qF2fDkPtc:1------> class Foo { ... }; augment class Foo ⏏{ } expecting any of: generic…» | ||
jnthn | m: use MONKEY_TYPING; class Foo { ... }; augment class Foo { } | 16:23 | |
camelia | ( no output ) | ||
jnthn | Guess it is fine with it. | ||
And just treats it as supplying the actual definition. | |||
16:23
Kristien left
|
|||
vendethiel | m: use MONKEY_TYPING; class Foo { ... }; augment class Foo { method x { 5 } }; Foo.new.x.say | 16:23 | |
camelia | rakudo-moar f9cb17: OUTPUT«5» | ||
vendethiel | alright :-) | ||
jnthn | I think in terms of what the MOP sees here, it's the same set of calls if you didn't have the augment there. | ||
Except first asking ClassHOW if augment is allowed. | 16:24 | ||
vendethiel | I really need to take a look a how to parse Foo[X]::Y... I'm going to make it segfault quite a lot, I'm sure | 16:27 | |
16:28
denis_boyun_ left
|
|||
masak | yay | 16:28 | |
16:29
[Tux] joined
|
|||
PerlJam | jnthn: when does the copying happen for roles? in vendethiel's Nat example, role Nat { }; role Zero does Nat { }; does the copying from Nat to Zero happen when building the Zero role or does it happen whenever the role is composed into a class? | 16:30 | |
vendethiel | I really want to try that `:(::T -> Foo[T]::Type)` thing :DD | ||
jnthn | PerlJam: The problem in vendethiel's example is actually the constant referencing a type variable that was never instantiated yet. | 16:31 | |
PerlJam: The copying actually happens when the role is finally composed into a class | |||
So we can defer whining until that happens, but not really beyond it. | 16:32 | ||
vendethiel | jnthn: isn't N::VAL the correct syntax, then? | ||
jnthn | vendethiel: The problem as I see it is that constant happens at BEGIN time, as we parse. | ||
vendethiel | so it's a bug :P? | ||
jnthn | Well, there's a bug, but it's not going to do what you want. | 16:33 | |
vendethiel | awww =( | ||
jnthn | You're doing the equivalent of | ||
vendethiel | I thought it was going to do the instantiation of the code inside the role only as the role was created | ||
jnthn | sub foo(::T) { constant blah = T.someting } | 16:34 | |
16:34
Rounin joined
|
|||
vendethiel | I... see what you mean | 16:34 | |
jnthn | vendethiel: Yes, if you write "my" instead of constant then it will. | ||
vendethiel | can I use subset instead of constant, then? | ||
yeah, but if I use "my", I'm not really at the type-level anymore :P | |||
jnthn | Are you expecting the body of a role to behave like some kind of macro that defers evaluation of all BEGIN-time things inside of the role? | 16:35 | |
vendethiel | yes. | 16:36 | |
jnthn | OK. It doesn't. | ||
vendethiel | if it's parameterized, I'm expecting it doesn't try anything unless it gets its parameters | ||
like I'm not expecting a sub to be evaluated before I pass it its parameters | |||
jnthn | Yes, but if you write constant inside of a sub and refer to a parameter, you're in the same situation, simply because it's spec'd as "evalue the RHS of the constant at BEGIN time, after we parse it" | 16:37 | |
*evaluate | |||
vendethiel | so, subset is at the same time? | ||
jnthn | Also set up at BEGIN time, yes. | ||
16:37
kjs_ left
|
|||
vendethiel | mmh, too bad | 16:37 | |
16:38
kaleem joined
|
|||
jnthn | Feels like this is more in macro space. | 16:38 | |
vendethiel | well, I'm trying to get values to act as types, so not really | 16:39 | |
16:39
kaleem left
|
|||
vendethiel | (or rather, types as values, but it's already the case in the Perl6 sense) | 16:41 | |
gtodd | how will people use MONKEY_TYPING in real world perl6 ? :-) | 16:42 | |
vendethiel | .oO( poorly ) |
||
jnthn | Sparingly, I hope... :P | 16:43 | |
skids | .oO(SRPMS is a pain in the head) |
||
vendethiel | I hope people won't repeat the same mistake ruby did | ||
gtodd | as a way to augment a class and get an idea for ... errm a better class of class | ||
vendethiel | .oO( ruby on rails is cool, but did it really warrant trading my soul to the devil? ) |
||
pmurias | vendethiel: hopefully we avoid the bad things about ruby culture | 16:44 | |
vendethiel | that's an entirely, unrelated matter | ||
16:45
telex left
|
|||
gtodd | having to type "use MONKEY_TYPING ; " means the person at the keyboard will be forced into a frame of mind ... | 16:45 | |
pmurias | like rubish module name or using a cute custom made page instead of good documentation | 16:46 | |
16:46
telex joined
|
|||
gtodd | can we haz perl6 books with those matte gloss covers ? | 16:46 | |
16:46
Otterpocket joined
|
|||
gtodd | ruby books tend to have matte finish ... perl books tend to be shiny and ... errm | 16:47 | |
wait ... that's an entirely, unrelated matter | |||
16:48
muraiki_ joined
16:57
booly-yam-6137 left
|
|||
japhb | Any particular reason that die($failure) isn't defined to die($failure.exception)? (Barring that it should only happen for a concrete Failure, of course.) | 16:58 | |
ab5tract | jnthn: so it turns out that the moar probe stuff dislikes fish shell | 16:59 | |
that appears to have been the issue i was having last week | |||
jnthn | ab5tract: Oh... I don't know the probe stuff much or the fish shell at all, unfortunately... | 17:01 | |
jnthn bbiab | |||
masak | should .indent(*) warn about a line that contains too little indent, when that line only contains whitespace? | ||
(it currently does in Rakudo; I'm wondering whether it's better for it not to) | 17:02 | ||
ab5tract | yeah, i will poke at it a bit to see if i can understand why. it could also be at the rakudobrew level, perhaps | 17:04 | |
fish shell: the shell for programmers who never became sysadmins but still like to write shell scripts without crying | |||
masak | m: role R[$x] { method foo { $x } }; role S[$x] does R[$x] { method bar { self.foo } }; say S["OH HAI"].new.bar | ||
camelia | rakudo-moar f9cb17: OUTPUT«(Mu)» | ||
japhb | masak: I'm provisionally against a warning in that case. | ||
masak | ^^ bug? | ||
japhb: yeah, I'm not convinced either. | |||
it would be really awesome if the above role thing would bind `$x` all the way through from S to R. | 17:09 | ||
I could accept if it didn't, but there'd have to be a decent reason. :) | |||
vendethiel hopes there's no such reason... :-) | 17:10 | ||
nine | In a talk about Inline::Perl5 and Inline::Python, what would you like to hear/see? | 17:15 | |
gtodd | demystify the magic of FFI ... "try this at home!!" | 17:17 | |
errm NativeCall | |||
nine | masak: does it currently warn about completely empty lines? | ||
masak | nine: it does not. and that's by spec. | 17:18 | |
17:18
booly-yam-6137 joined
|
|||
nine | gtodd: in other words a look under the hood. I can show how easy it was to implement, yes. | 17:18 | |
17:18
Kristien joined
|
|||
gtodd | nine: yeah that ... and then some of those tricks that show how well it works ... didn't you run catalyst or something :-D | 17:19 | |
nine | gtodd: indeed I did. Any other suggestions for examples? | ||
gtodd | you could show simple little scripts "this is my first perl5 sysadmin script I ever wrote ... I can't throw it away just because I use perl5 ... BING ... oh I don't have to" | 17:20 | |
17:21
regreg joined,
Mso150 joined
|
|||
gtodd | "oh no ... over a 4 year period I learned Catalyst and made a blog !! should I just rm -rf ?? or ... wait!! It works too!" | 17:22 | |
nine | I'll definitely show some DBIx::Class example. That probably reaches much more people than Catalyst. | 17:23 | |
gtodd | nine: is one use case ... mixing in perl5 modules to do something and then hand off to perl6 for overall program logic etc? | ||
like a glue language for the duct tape of the web? | |||
nine | gtodd: yes, that's actually the most simple use case. Use Perl 5 modules in Perl 6 programs. | 17:24 | |
gtodd | do I remember correctly that you have files that mix 5 and 6 ? that makes people wake up put down their phones :-) | ||
nine | My problem is that using Perl 5 modules is as simple as use Inline::Perl5; use Petal:from<Perl5>; | 17:25 | |
There's not that much to show :) | |||
PerlJam | That doesn't sound like a problem to me :) | ||
Pick some of the heavy hitters of Perl 5 modules, and show that you can use each of them. | 17:26 | ||
nine | gtodd: yes, mixing Perl 5 and 6 is what makes using Catalyst or DBIx::Class feasible. | ||
psch | Moose! | ||
scnr | |||
gtodd | hehe .... masak or moritz or well lots of people have sample perl5 code "translated" into perl6 ... it might be neat to show the sample perl5 code work followed by the perl6 translation .... | ||
nine | psch: there's even a test file that tests interaction with Moose objects ;) | ||
gtodd | Moose6 | ||
psch | nine++ | ||
PerlJam | Take all of the P5 rosettacode examples, and run them in P6 | 17:27 | |
gtodd | haha | ||
nine | What are the heavy hitters of Perl 5? Apart from Moose and DBIx::Class... | ||
gtodd | tests would be neat ... running perl5 tests in perl6 | ||
17:28
fhelmberger left
|
|||
gtodd | you probably want to show off how perl5-ish perl6 can be so morphing perl5 code into perl6 would distract ... | 17:29 | |
Mojo? | |||
PerlJam | Isn't there a site that shows the Perl modules that are most depended upon? | ||
gtodd | Mojolicious ... | ||
is stand alone though | 17:30 | ||
17:31
FROGGS joined
|
|||
jdv79 | PerlJam: this?: ali.as/top100/ | 17:31 | |
PerlJam | yeah! that's the one | 17:32 | |
jdv79 | i would if its up to date | ||
*wonder | |||
nine | Moose does not seem to be in the top 100 | 17:33 | |
PerlJam | Didn't Alias go off and join the Microsoft cult or something? | ||
jdv79 | sounds right | 17:34 | |
17:34
gfldex joined
|
|||
gtodd | nine: what about some bigish application like Bugzilla :-D | 17:35 | |
17:35
kurahaupo1 joined,
Otterpocket left,
kurahaupo1 left
|
|||
gtodd | nine: no wait that would be *unpossible* ! | 17:36 | |
17:37
kurahaupo1 joined,
kurahaupo1 left
|
|||
nine | Why would it? | 17:38 | |
Kristien | Since I started learning Perl 6 I became happier. | ||
This may purely be a coincidence, though. | |||
FROGGS | Kristien: :D | ||
me too | |||
17:38
kurahaupo1 joined
|
|||
gtodd | :-D | 17:39 | |
nine: just joshing ;-) | |||
nine: maybe running perlcritic or using PPI would be impressive ... | 17:40 | ||
not sure ... | |||
Kristien | Does Perl 6 have the goatse operator? | ||
japhb | What should 'die(Failure)' do? Right now, it chokes: | ||
m: die Failure; | |||
camelia | rakudo-moar f9cb17: OUTPUT«Cannot look up attributes in a type object in method <anon> at src/gen/m-CORE.setting:14282 in any find_method_fallback at src/gen/m-Metamodel.nqp:2737 in any find_method at src/gen/m-Metamodel.nqp:988 in method Str at src/gen/m-CORE.settin…» | ||
gtodd | only perl can parse perl .. until now ... :-D | ||
nine | I guess "usefull to the audience" would be better than just impressive. | ||
japhb | I'm thinking it should just turn die(Failure) into die('Failure'): | 17:41 | |
die 'Failure' | |||
m: die 'Failure' | |||
camelia | rakudo-moar f9cb17: OUTPUT«Failure in block <unit> at /tmp/CjqI65tkkT:1» | ||
17:42
anaeem1_ joined
17:43
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
|
|||
pmurias | gtodd: PPI from Perl6 doesn't seem to be incredibly impressive | 17:43 | |
gtodd | Kristien: aka Saturn ? =( )= | 17:44 | |
Kristien | :O | ||
yeah :p | |||
gtodd | well think of what it is meant to do ... | ||
psch | m: sub circumfix:<=( )=>($x) { "pls no" }; say =( 5 )= | 17:45 | |
camelia | rakudo-moar f9cb17: OUTPUT«pls no» | ||
gtodd | pmurias: you are right .... what if perlcritic/PPI could pass over the perl5 code and make it go blinky blinky just as that line was executed ? :-D | 17:46 | |
pmurias | blinky blinky? | 17:47 | |
nine | HTML::Parser seems like a nice example | ||
gtodd | pmurias: assuming we are running the code from inside an editor :) | ||
17:47
anaeem1_ left
17:48
anaeem1_ joined
|
|||
skids | Maybe just practical examples of using superior Perl6 features with a P5 library makes a quick script easier. | 17:48 | |
17:48
denis_boyun_ joined
|
|||
nine | skids: I would be very greatful for even one such example :) | 17:49 | |
gtodd | nine: I think people that have applications will continue to run them with perl5 .. so that is more a way to exercise and impress the audience with how good IP5 is ... more likely people have libraries or complex modules they don't want to rewrite or would find it convenient to reuse ... so practically looking at that kind of thing (with a bit of the Catalyst wow stuff) would be be best | 17:50 | |
17:51
bronco_creek joined
|
|||
bronco_creek | Woohoo. Just built my first perl6 script for actual work. | 17:52 | |
gtodd | nine: say someone has some fancy custom automated login and authentication stuff in perl5 that they use from a sort of top level application to errm orchestrate something or another .... being able to keep using that while writing a new tool (maybe in house or not customer facing yet but super fast and easy to write) would show how power of perl6 can fit with perl5 tools | ||
nine: you could create a fake scenario like that :-) | 17:53 | ||
nine | gtodd: exactly. While other Perl 6 talks tell people why they want to use Perl 6, I want to tell them how they can actually do this while sitting on huge Perl 5 code bases. | 17:54 | |
17:57
rindolf joined
17:58
jack_rabbit joined
|
|||
gtodd | say perl6 is making someone happy and when later they go to fix or update some portion of a large perl5 $DAYJOB application just for kicks they write something in perl6 "to see how it works" and it takes only an hour and blows their mind. They think: "Wow if only I ddin't have to rewrite the other 80% of the app ....". I::P5 means you don't have to ... examples ... hmm | 17:59 | |
18:01
anaeem1_ left,
tgt joined
|
|||
dalek | ecs: e684a38 | TimToady++ | S02-bits.pod: interaction of :{} with other adverbialoids |
18:03 | |
18:03
panchiniak joined
18:04
dakkar left
18:05
jack_rabbit left
|
|||
gtodd | nine: some corporate environments love java but have perl5 installed because ... well ... how can't you | 18:05 | |
bronco_creek | I used the XML module. Wished for more examples of how to traverse/process the data once it is in a p6 data structure. | 18:06 | |
18:06
jluis_ joined,
Kristien left
|
|||
hoelzro | an XPath module would be nice | 18:09 | |
masak | <Kristien> Since I started learning Perl 6 I became happier. | ||
gtodd | nine: if that were possible maybe showing how you can leverage perl5 libraries with I::P5 from perl6-j would be a practical demo ... | ||
masak | Kristien: this should be the only reason anyone ever needs. | ||
bronco_creek | Yes to an XPath module. Even something like Matt Sargeant's old XPathScript. | 18:11 | |
18:14
jluis_ left
|
|||
nwc10 | 09:38 <jnthn> Yeah, if you're going to do that it really wants to be only enabled with some flag. | 18:14 | |
09:38 <jnthn> For *developers* to enable if they find it useful | |||
mischan | |||
(sorry) | 18:15 | ||
(context will not be made available, even if bribes of decent beer are offered) | |||
18:18
anaeem1 joined
18:21
kjs_ joined
|
|||
jnthn | m: role R[::T] { method foo { T } }; role S[::T] does R[T] { method bar { self.foo } }; say S[Int].new.bar | 18:23 | |
camelia | rakudo-moar f9cb17: OUTPUT«(Int)» | ||
muraiki_ offers indecent beer | |||
jnthn | masak: You can do it with type vars, it seems | ||
ab5tract | nine: i've been toying with interpreter pools | ||
jnthn | masak: Not quite sure about the variable case, in part 'cus I can't remember how on earth the type var case works :P | ||
ab5tract | it could be interesting to do some async stuff in p6 while spinning jobs out to p6 | 18:24 | |
sorry, out to p5 | |||
pmurias | "interesting" = "full of crazy segfaults?" | 18:27 | |
ab5tract | pmurias: why would that necessarily be the case? | 18:28 | |
just make sure you are careful about when and where you access the return values of a given interpreter pool | 18:29 | ||
jnthn | You'd have to make sure you weren't in one Perl 5 interpreter from two threads at once, but wrapping it inside an actor/monitor (OO::Actors/OO::Monitors) could help :) | ||
(Help to ensure that in a good way, I mean.) | |||
ab5tract | jnthn: i was looking for those modules the other day.. | ||
*member of a given interpreter pool | 18:30 | ||
jnthn | ab5tract: They be in l'ecosystem... :) | 18:31 | |
18:31
mvuets joined
|
|||
dalek | kudo/nom: 41d51f4 | peschwa++ | src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java: Fiddling for jvm-fields via a proper HOW. |
18:32 | |
rakudo/nom: 47d08d9 | peschwa++ | src/vm/jvm/ (2 files): | |||
rakudo/nom: Add support for .^methods and .^add_methods on Java objects. | |||
18:32
dalek left
18:33
dalek joined,
ChanServ sets mode: +v dalek,
FROGGS_ joined
|
|||
jnthn | psch++ # JVM interop patches | 18:33 | |
timotimo likes | |||
18:36
FROGGS left
18:37
jluis_ joined
|
|||
vendethiel | masak: I tried to introduce him to perl6 a while ago, but he didn't like it at first :P | 18:39 | |
18:40
anaeem1 left,
anaeem___ joined
18:41
bronco_creek left
18:42
rurban joined,
panchiniak left
18:44
anaeem___ left
18:45
regreg left,
anaeem1 joined,
regreg joined,
kjs_ left
|
|||
masak | vendethiel: well, it wouldn't surprise me if people fall in love with "first languages" a bit more quickly, but "last languages" are more of an acquired taste. | 18:48 | |
18:49
anaeem1 left
|
|||
timotimo | vendethiel: who is "him"? | 18:50 | |
vendethiel | Kristien | ||
timotimo | k | ||
timotimo is afk again | |||
PerlJam | I think BASIC was my first language and it didn't engender any feeling of "love" and barely generated some "like" :) | ||
masak | PerlJam: BASIC was my first language too. but I don't think it's that good a "first language", by today's measure. | 18:52 | |
Python is. LOGO is. there's probably more excellent examples which elude me now. | |||
PerlJam | Scheme ;> | 18:53 | |
masak | yeah. | ||
I almost put Smalltalk on that list, too. | |||
pmurias | how do people with zero experience react to smalltalk? | 18:54 | |
TimToady thinks that's a rather small population for various external reasons | 18:55 | ||
masak | I think a bunch of children were exposed to Smalltalk back in the day. | 18:56 | |
TimToady | I think that's why we got Logo | ||
nine | I'll see if XML::XPath fits into my talks since there doesn't seem to be a replacement in Perl 6 yet. | ||
PerlJam | I should try to teach smalltalk to my children and see what happens | ||
(though only one of my children seems to have the right mindset to take to any kind of programming) | |||
nine: that's also a good way to encourage someone to write a replacement :) | 18:57 | ||
FROGGS_ | hoelzro: I am currently porting XML::LibXML, and XPaths are working already | ||
PerlJam | or if you're juxtaposed with a talk on grammars, get a newbie excited about P6 | ||
18:57
pmurias left
|
|||
geekosaur found BASIC as a first language incredibly motivating... to find something else and make it work on his machine >.> | 18:58 | ||
muraiki_ | early on in learning programming I made a webapp using Pharo Smalltalk and the Seaside framework. I really enjoyed it, learned a lot, and miss many things about working in Smalltalk. Perl 5 is my second most recent language, and it was more of an acquired taste :) | 18:59 | |
geekosaur | (in fact, if anything BASIC kinda ruined me in the sense that my second language was C and it was such a huge step up that for years I missed how lousy a language it was) | 19:01 | |
PerlJam | I *think* my route went BASIC -> ASM -> Pascal -> AutoLISP -> C -> C++ -> bunches of other stuff (shell, awk, perl, smalltalk, scheme, effiel, prolog, etc.) I bet there are few people learning programming today that start off with BASIC and ASM any more. | 19:02 | |
hoelzro | FROGGS_++ | ||
thanks for mentioning it! | |||
FROGGS_ did it in this order: Amiga Basic, Turbo Pascal, PHP, Perl 5, C, Perl 6 | |||
muraiki_ | I did C back in the day in some horrible programming classes, did something completely different, then last year switched careers to be a programmer. | ||
geekosaur | also I do not generally count asm as a language; more as a motivation to develop languages... | 19:03 | |
FROGGS_ | hoelzro: traversing structures is the next bigger step | ||
nine | I loved coding asm back then :) | ||
muraiki_ | so I guess it went C -> python -> racket -> smalltalk -> clojure -> javascript -> some haskell -> perl5 -> elixir | ||
jercos | FROGGS_: that's eerily close to my history, but with QBASIC/GW-BASIC, and no pascal step. | ||
:D | |||
19:04
kurahaupo1 left,
kurahaupo1 joined
|
|||
FROGGS_ | ohh, I forgot about javascript... but I guess that what almost everybody has to know, at least for webstuff | 19:05 | |
19:05
booly-yam-6137 left
|
|||
PerlJam | geekosaur: I was doing x86 asm at home to learn how computers worked closer to the metal, and whatever motorola chipset Apple IIe used at school because UCSD pascal didn't do all of the things I wanted it to :) | 19:06 | |
muraiki_ | I actually almost sent that without putting js in. it's like a given now, hehe | ||
FROGGS_ | muraiki: exactly :o) | ||
geekosaur | IIe was not motorola. MOS Technologies 6500 series | ||
...admittedly MOS Tech was founded by disgruntled Moto engineers | |||
jercos | FROGGS_: JavaScript and PHP feel incredibly similar to me :| | ||
muraiki_ | and I realize that I idle here but I've only written like 6 lines of perl 6 code. I am excited for p6 though! :) | 19:07 | |
skids | nine: unfortunately I've just recently started coding some personal work scripts in P6 so I don't have a big library to draw from. Also my P6 isn't very idiomatic yet :-). | ||
19:07
tgt left
|
|||
FROGGS_ | jercos: similar? not in the slightest I'd say | 19:07 | |
jercos | I mean there are obvious differences, like a lack of sigils, but some of the quirks in comparisons are the same for example. | ||
The object system is totally different, but hey, the object system was brand new when I learned PHP :p | |||
FROGGS_ | well, yeah, it like designing a language at a weekend without thinking about it | 19:08 | |
PerlJam | jercos: javascript has a "standard library" with inconsistent parameter passing conventions? | ||
skids | nine: but it is not hard to contrive a way to take a random P5 50-liner, pretend it needs to get its input data from some source only reachable via a P5 module, and recode the 50-liner in P6 idiomatically. | ||
jercos | No. JavaScript only has anything resembling a "standard library" at all recently. | ||
19:09
anaeem1 joined
|
|||
jercos | But parameters are passed to functions similarly, with extra arguments flowing off the end, and no type checking, arrays are magic (except when they're not) | 19:10 | |
I'm not saying a JavaScript engine can run PHP code >.> | |||
PerlJam | jercos: are you sure you're not describing Perl 5? ;) | 19:11 | |
muraiki_ | lol | ||
jercos | Hah, no, PHP and JavaScript both make a passable effort at binding function arguments :p | ||
The transition from PHP to Perl 5 *was* surprisingly easy though. I think I made myself a cheat-sheet of everything I needed to look up on perldoc to start writing things in Perl 5... | 19:12 | ||
PerlJam | yeah, that's a big wart on P5 I think. Moreso than the lack of "builtin" objects like everyone else has. | ||
jercos | Yeah that sits somewhere up with "tie" on the tuit count | 19:14 | |
TimToady | m: role R[$x] { method foo { $x } }; role S[::T $x] does R[T] { method bar { self.foo } }; say S[Int].new.bar | 19:22 | |
camelia | rakudo-moar f9cb17: OUTPUT«(Int)» | ||
TimToady | m: role R[$x] { method foo { $x } }; role S[::T $x] does R[$x] { method bar { self.foo } }; say S[Int].new.bar | ||
camelia | rakudo-moar f9cb17: OUTPUT«(Mu)» | ||
TimToady | m: role R[$x] { method foo { $x } }; role S[::T $x] does R[$x.WHAT] { method bar { self.foo } }; say S[Int].new.bar | ||
camelia | rakudo-moar f9cb17: OUTPUT«(Mu)» | ||
TimToady | m: role R[$x] { method foo { $x } }; role S[::T T $x] does R[$x.WHAT] { method bar { self.foo } }; say S[Int].new.bar | 19:23 | |
camelia | rakudo-moar f9cb17: OUTPUT«None of the parametric role variants for 'S' matched the arguments supplied.Cannot call ''; none of these signatures match::(::$?CLASS ::::?CLASS $, T ::T $x) in any specialize at src/gen/m-Metamodel.nqp:2258 in any specialize at src/gen/m-Me…» | ||
TimToady | seems to simply be not setting up $x's binding soon enough to participate in the does | 19:25 | |
though obviously it considers the variable to be declared already | 19:26 | ||
TimToady still thinks those errors should try to describe "the arguments supplied" | 19:27 | ||
hmm, ::::?CLASS ? | 19:28 | ||
skids | TimToady++ +1 errors that briefly say what was fed in. | ||
19:29
anaeem1 left
19:30
anaeem1 joined,
Kristien joined
19:31
anaeem1__ joined,
anaeem1 left
|
|||
jnthn | m: sub foo(Int $x) { }; foo("") | 19:32 | |
camelia | rakudo-moar f9cb17: OUTPUT«===SORRY!=== Error while compiling /tmp/wv_Hntm8SACalling 'foo' will never work with argument types (str) Expected: :(Int $x)at /tmp/wv_Hntm8SA:1------> sub foo(Int $x) { }; ⏏foo("")» | ||
jnthn | Those ones already have it :) | ||
+1 to the others getting it also :) | |||
skids | m: role R[$x] { method foo { $x } }; role S[::T $x] { also does R[$x.WHAT]; method bar { self.foo } }; say S[Int].new.bar | ||
camelia | rakudo-moar f9cb17: OUTPUT«(Mu)» | ||
avuserow | (backlog) nine: Could Inline::Perl5 be used to add a plugin written in P6 to something like Bot::BasicBot? That would be neat to see. Gradual way to transition into P6 code | 19:33 | |
TimToady | skids: nice try, but I don't think it's scoping, but rather timing | ||
19:34
Mso150 left,
Mso150_a joined
|
|||
TimToady | and probably related to perceived non-genericity | 19:34 | |
skids | I think that "also" form could have slightly different semantics to allow disambiguation for stuff like "my $x; role A [ $x ] { }; role B does A [ 1 ] does C [ $x ] { } | 19:36 | |
as in "could" hypothetically. | |||
TimToady | well...I think mixins already cut that particular Gordian Knot | ||
19:37
anaeem1_ joined,
anaeem1__ left
|
|||
TimToady | and 'also' is meant to hoist declarations to the surrounding declaration | 19:37 | |
as long as they don't need to be known at the { | |||
19:37
dwarring joined
|
|||
TimToady | so I wouldn't want to overload that with timing semantics, I don't think | 19:38 | |
Kristien | Hmm, weird. | 19:39 | |
TimToady | pay no attention to the wizards skulking behind the curtains... | ||
Kristien | sub f(@xs) { [&&] @xs Z== reverse @xs } f([1, 2, 1, 2, 1]) works now, whereas it didn't like an hour ago. | ||
TimToady | m: sub f(@xs) { [&&] @xs Z== reverse @xs }; say f([1, 2, 1, 2, 1]) | 19:40 | |
camelia | rakudo-moar 20aa85: OUTPUT«True» | ||
Kristien | yeah with semicolon | 19:41 | |
TimToady | m: sub f(@xs) { all @xs Z== reverse @xs }; say f([1, 2, 1, 2, 1]) | ||
camelia | rakudo-moar 20aa85: OUTPUT«all(True, True, True, True, True)» | ||
Kristien | Wunderbar. | 19:42 | |
nine | avuserow: yes, should indeed be possible. At least with v6-inline. | ||
TimToady | m: sub f(@xs) { @xs eqv reverse @xs }; say f([1, 2, 1, 2, 1]) | 19:43 | |
camelia | rakudo-moar 20aa85: OUTPUT«True» | ||
TimToady | I'd probably use eqv there | ||
especially since it might short-circuit on the first falsification for you | 19:44 | ||
'course, that's really doing twice as many comparisons as necessary | 19:45 | ||
19:46
zakharyas joined,
rindolf left
19:47
regreg left
19:51
regreg joined
|
|||
gtodd | Kristien: just curious: why did you do it with Z== and [&&] ? ..... sub f(@xs) { [&&] @xs Z== reverse @xs }; | 19:52 | |
Kristien | because I'm bad at Perl 6. | ||
19:52
Rounin left
|
|||
gtodd | Kristien: hehhe I like finding out how peoples minds solve problems though :-D | 19:52 | |
Kristien | Z and […] are about the only features I know anything about at all :P | ||
TimToady | actually, it shows quite a nice grasp of the metoperators | ||
gtodd | Kristien: ok | ||
TimToady | *meta | 19:53 | |
.oO(I never metaametaoperator I didn't like...) |
|||
s/aa/a | |||
gtodd | Kristien: it's like in your mind you laid out the list and its reverse and checked to see if the elements were equivalent | ||
Kristien | Hmm, the problem I raised a few hours ago is also gone. | 19:54 | |
TimToady | it's magic :) | ||
Kristien | :m say map({ $_ }, ((0..*) Z=> ("Hi", "Hello", "World", "!"))) | ||
I think I have an old version of Rakudo at my work machine. | |||
moritz | m: | ||
not :m | |||
Kristien | oh oops :v | ||
m: say map({ $_ }, ((0..*) Z=> ("Hi", "Hello", "World", "!"))); | |||
camelia | rakudo-moar 20aa85: OUTPUT«0 => Hi 1 => Hello 2 => World 3 => !» | ||
gtodd | Kristien: which is a cool way to think about it ... :-) | 19:55 | |
Kristien | On my work Machine it prints 0 => Hi 0 => Hi 0 => Hi 0 => Hi 0 => Hi 0 => Hi 0 => Hi 0 => Hi 0 => Hi ... | ||
TimToady | that probably works because you added parens around the Z=> | ||
ab5tract | jnthn: am i wielding OO::Monitors incorrectly? gist.github.com/ab5tract/4c2b8cc439d8470cbfda | 19:56 | |
19:56
anaeem1__ joined,
anaeem1_ left
|
|||
gtodd | Kristien: since I am bad at Perl6 and things like [&&] are hard to google for .. I would've taken another approach :-) | 19:58 | |
TimToady | Kristien: that's a very odd failure mode, failure to progress on a Z | 20:00 | |
I don't think I've ever seen anything like it | |||
Kristien | Only happens with map | ||
if I remove map it works as expected | |||
It's on Gentoo's latest Rakudo version, which may be outdated. Doesn't happen on Homebrew's latest version of Rakudo. | |||
gtodd | Kristien: first I would've made this mistake: | 20:01 | |
m: my @a = 1,2,1,2,1; my @b = 1,2,1,2,2; sub f(@xs) { @xs == reverse @xs }; f(@a).say ; f(@b).say | |||
camelia | rakudo-moar 20aa85: OUTPUT«TrueTrue» | ||
gtodd | googled for a bit .... | ||
20:02
rurban left
|
|||
TimToady | Kristien: what does perl6 -v tell you? | 20:02 | |
gtodd | and then used eqv | ||
Kristien | On my home PC: This is perl6 version 2014.09 built on parrot 6.7.0 revision 0 | ||
On my work PC I have no idea since I have no access to it right now. | |||
20:03
anaeem1 joined
20:04
anaeem1__ left
|
|||
skids | Yeah, that's old. Once you are hooked, you'll want to at least built Star to get perl6-m. Before you know it though you'll be loitering outside guthub fiending for the latest patch. It's a brutal addiction. :-) | 20:04 | |
ab5tract | gtodd: this reminds me that i wanted to mention -- perhaps part of 6.0 should be clearing out as much outdated information from google results | 20:05 | |
gtodd | Kristien: so ... I conclude a) you are smart but humble; or b) you have used Haskell ;-) | ||
Kristien: but you will get very good at perl6 very quickly | |||
ab5tract | Kristien: rakudobrew is highly recommended :) | ||
gtodd | ab5tract: hmm good point | ||
Kristien | gtodd: I have used too many languages to list them here. :P | 20:06 | |
TimToady | gtodd: a and b are not mutually exclusive | ||
20:07
virtualsue left
|
|||
gtodd | ab5tract: a new perl6 user (esp one who has used other languages knows what they are looking for) could start getting very productive amazingly fast only to smash into outdated docs ... | 20:07 | |
TimToady | but yeah, we tend to stick close to the current monthly (or minutely) version because it's actually more stable than the "stable" old versions that tend to show up in distribs | 20:08 | |
20:08
regreg left
|
|||
moritz | gtodd: which is why any help in keeping doc.perl6.org up-to-date is highly appreciated | 20:08 | |
gtodd | ab5tract: since the advents are a useful resource ... corrections in the comments could help if code examples no longer work | 20:09 | |
jnthn | ab5tract: Hard to tell; I wrote the whole thing in a few hours 'cus that's all I had... Does it reproducably fail that way, and could you --ll-exception? | 20:10 | |
gtodd | and TimToady probably has a way to download all perl6 code from rosettacode.org and magically ensure that it still works :) | 20:15 | |
20:16
darutoko left,
dalek left,
Sqirrel joined
|
|||
ab5tract | jnthn: curiously, it fails differently when using perl6-debug-m | 20:16 | |
20:17
dalek joined,
ChanServ sets mode: +v dalek
|
|||
skids | gtodd: I believe a lot of the advent examples end up in the roast suite. | 20:17 | |
FROGGS_ turns $xml_doc->documentElement->firstChild->toStringC14N(1) into $xml-doc.root[0].c14n(:comments) and does not know if he should feel good or not | |||
ab5tract | "Internal error: Unwound entire stack and missed handler" | ||
jnthn | ab5tract: perl6-debug-m hasn't got much clue what to do with threads yet :( | ||
20:17
virtualsue joined
|
|||
arnsholt | FROGGS_: Oooh, that looks pretty nice! | 20:17 | |
ab5tract | jnthn: ah... another notch for 6.0 :) | 20:18 | |
Kristien | gtodd: I'm involved in language design and implementation | ||
ab5tract | so then yeah, it's 100% reproducible | ||
if i s/start/await start/, it gives the same error | |||
jnthn | ab5tract: OK, if you've a moment please drop a link to the gist in a github issue, so I don't forget I need to look at it | 20:19 | |
FROGGS_ | arnsholt: one aha moment I had ten minutes ago is the [*-1] behaviour you get for free when adding a .elems and .at_pos to you class | ||
so, ->lastChild is just [*-1], and I guess doing it that way makes it more composable in the end | 20:20 | ||
(doing slices and things like that) | |||
arnsholt | Yeah, definitely | 20:22 | |
gtodd | skids: I *knew it* ;-) ... sort of magical | ||
Kristien: you've come to the right place :-D | 20:23 | ||
Kristien: I'm just an old and unknown perl5 weanie | |||
dalek | c: 13e8ddb | moritz++ | lib/Language/functions.pod: Add some initial docs on multis |
20:24 | |
20:24
abraxxa1 joined,
brrt joined
|
|||
PerlJam | gtodd: what's your CPAN id? | 20:25 | |
gtodd | hehe | ||
unknown :-D | |||
PerlJam | That would be a neat CPAN id. :) | 20:26 | |
gtodd | heheh | ||
[Coke] | m: my $c='c'; say $c++ | 20:27 | |
camelia | rakudo-moar 20aa85: OUTPUT«c» | ||
[Coke] | m: my \c = 'c'; say c++ | ||
camelia | rakudo-moar 20aa85: OUTPUT«Cannot modify an immutable Str in sub postfix:<++> at src/gen/m-CORE.setting:2158 in block <unit> at /tmp/7woezJQhbU:1» | ||
[Coke] | at least one of those looks wrong. | ||
FROGGS_ | m: my $c='c'; say $++c | 20:28 | |
camelia | rakudo-moar 20aa85: OUTPUT«===SORRY!=== Error while compiling /tmp/RAWE7FsLPyTwo terms in a rowat /tmp/RAWE7FsLPy:1------> my $c='c'; say $++⏏c expecting any of: infix stopper infix or meta-infix pos…» | ||
FROGGS_ | m: my $c='c'; say ++$c | ||
camelia | rakudo-moar 20aa85: OUTPUT«d» | ||
FROGGS_ | that .succ's :o) | ||
skids | Ow. | ||
FROGGS_ | I'd vote for both being correct | ||
Kristien | gtodd: Perl 5 is fun! | ||
[Coke] | FROGGS_: why does the sigil matter there | 20:29 | |
PerlJam | Where do the synopses talk about things like \c ? | ||
[Coke] | ? | ||
moritz | [Coke]: because $ implies a scalar container | ||
[Coke]: whereas \c means "store whatever you got there", and what you've got is a Str, not a Str in the container | 20:30 | ||
[Coke] | I would have expected a note on \ under sigils. | ||
PerlJam | moritz: so, \c is more of an alias? | ||
moritz | it's not really a sigil, because it's not used everyhwere | 20:31 | |
PerlJam is weak on the exact semantics of foo | |||
moritz | I mean, it's only used on assignment/binding, not on access to the thing | ||
PerlJam: yes | |||
ab5tract | so you need a container to .succ, then? so is the distinction between $c and \c the difference between an "object" and a "value"? | ||
[Coke] | moritz: fair enough on container vs. not. thanks. | ||
gtodd | Kristien: for sure :) perl5++ ... | 20:32 | |
ab5tract | so if you're type defines a method succ, *and* you are in a container, you can use it? | ||
[Coke] | regarding docs, I don't expect a full declaration, just a note for someone looking for docs on where to go. (probably better for just docs) | ||
ab5tract | grrr... s/you're/your/ | ||
moritz | [Coke]: where on doc.perl6.org would you expect it? | ||
ab5tract | moritz: ECATEGORYFAIL | 20:33 | |
Kristien | m: my $x = "perl5"; $x++; say $x; # gtodd | ||
camelia | rakudo-moar 20aa85: OUTPUT«perl6» | ||
20:33
brrt left
20:34
DarkLoord joined
|
|||
PerlJam | Kristien: the only problem is that once you get to "perl9", the next ++ gives you "perm0" (But maybe the language *needs* that radicalism then :) | 20:35 | |
moritz | m: my \a = 42; a = 35; | ||
camelia | rakudo-moar 20aa85: OUTPUT«Cannot modify an immutable Int in block <unit> at /tmp/V0mpwOYGBe:1» | ||
20:35
zakharyas left
|
|||
DarkLoord | test | 20:36 | |
moritz | DarkLoord: plan before you test! | ||
nwc10 | that's not a real test - you missed "please ignore" | ||
raydiak | Dubious test result no plan found in TAP output | 20:37 | |
moritz | raydiak++ thinks along the same lines as me | ||
raydiak | :) | ||
FROGGS_ | Two terms in a row near: test⏏test | ||
ab5tract | moritz: i spoke too soon.. doc.perl6.org/language/variables#___top | 20:38 | |
doc.perl6.org/language/variables#Sigils | |||
vendethiel | m: my \a = 5; a := 6; say a | ||
camelia | rakudo-moar 20aa85: OUTPUT«===SORRY!=== Error while compiling /tmp/stJEOKWI1OCannot use bind operator with this left-hand sideat /tmp/stJEOKWI1O:1------> my \a = 5; a := 6⏏; say a» | ||
ab5tract | and thus i find what [Coke] was looking for .. doc.perl6.org/language/variables#Si..._variables | 20:39 | |
vendethiel | the < twigil? what? | ||
20:40
regreg joined
|
|||
vendethiel | m: 'a' ~~ / ( a ) /; say $<a; | 20:40 | |
camelia | rakudo-moar 20aa85: OUTPUT«===SORRY!=== Error while compiling /tmp/Av6CD6JZ5vUnable to parse quote-words subscript; couldn't find right angle quoteat /tmp/Av6CD6JZ5v:1------> 'a' ~~ / ( a ) /; say $<a;⏏<EOL> expecting any of: …» | ||
FROGGS_ | vendethiel: $<foo> | ||
moritz | vendethiel: pseudo twigil | ||
vendethiel | that's not a twigil | ||
TimToady | well, it is, but it requires a corresponding > is all | ||
moritz | what is it, then? | ||
masak | DarkLoord: you can't test twice without writing any code inbetween :) | ||
moritz: a circumgil! :D | |||
dalek | c: 9666759 | moritz++ | lib/Language/variables.pod: Link to sigilless vars earlier |
||
TimToady | masak: was checking for cosmic ry interactions | ||
20:41
zakharyas joined
|
|||
TimToady | *ray <- there was one | 20:41 | |
moritz | there was your catcher in the ray | ||
20:41
tgt joined
|
|||
masak .oO( ♫ rye, a drop of golden sun ♫ ) | 20:42 | ||
vendethiel | psch: github.com/peschwa/eigmip6/blob/ma...l6#L22-L24 | ||
couldn't that be `my ($root, $third, $fifth) = $num-to-Notes{$in, ($in + 4) % 12, ($in + 7) % 12}` ? | |||
DarkLoord | join #freakshow | 20:43 | |
FROGGS_ | DarkLoord: we'll just stay in this one | ||
vendethiel | the repl on windows is... ugh | 20:44 | |
ab5tract | how extensible is the current repl? | ||
vendethiel | I can't even type { inside of the repl. any accentuated letter will crash it with "invalid utf8" | ||
ab5tract | can it be loaded from a script with custom I/O for instance? | ||
TimToady would like to see it scrapped and replaced with something much more incestuous with the prser | |||
ooh, another cosmic ray hit | |||
ab5tract | hehe | 20:45 | |
FROGGS_ | look, a squirrel! | ||
moritz | vendethiel: is your terminal configured to use UTF-8? | ||
ab5tract | TimToady: i'm not sure if i ever elaborated on the Explore module concept i had | ||
vendethiel | moritz: I'm using cmd.exe | ||
raydiak hopes the cosmos stops hitting him soon | |||
vendethiel | m: my %a; %a{'a'..'z'} = 1..*; my ($a, $b, $c) = %a{'e', 'g', 'f'}; say $b | ||
camelia | rakudo-moar 20aa85: OUTPUT«7» | ||
moritz | vendethiel: and is it configured to use UTF-8? | ||
ab5tract | the perl6 repl could resemble something like an ipython notebook | ||
20:45
denis_boyun_ left
|
|||
vendethiel | moritz: I don't think that's configurable | 20:46 | |
moritz | vendethiel: I think it is | ||
vendethiel | can't find it in the options | 20:47 | |
FROGGS_ | cp-something something | ||
moritz | mode con codepage prepare $something | ||
ab5tract | i imagine it being trivial to load up a 'view' onto the source code of any given method/operator/library/etc | ||
DarkLoord | join #freakshow | ||
FROGGS_ | vendethiel: ss64.com/nt/chcp.html | ||
moritz | stackoverflow.com/questions/1410902...by-default | ||
ab5tract | add comments, experi[ment|ence]s .. | ||
DarkLoord | join #freakshow | ||
FROGGS_ | vendethiel: so it would be chcp 65001 | 20:48 | |
moritz | DarkLoord: add a / in front | ||
vendethiel | I can't even type accents anymore | ||
FROGGS_ | ohh, what a fopaux | ||
vendethiel | .oO( faux pas ) |
20:49 | |
ab5tract | runnable code snippets, pipe-able outputs, even potentially providing compunits as modules in a patching environment | ||
FROGGS_ | :P | ||
so, the repl could also make for a good gsoc project | |||
jnthn | Could actually, yeah | ||
20:50
anaeem___ joined
20:51
anaeem1 left
|
|||
dalek | c: 6beb0c9 | moritz++ | lib/Language/variables.pod: Link to Match documentation in context of $/ variables |
20:51 | |
: 47c6ff9 | FROGGS++ | misc/gsoc-2015/ideas.md: add the REPL as a gsoc task |
20:54 | ||
gtodd | ab5tract: ++ | ||
dalek | c: 134f23f | moritz++ | lib/Language/variables.pod: Add a paragraph and example for the "our" scope declarator |
||
gtodd | for repl idea :) | ||
FROGGS_ | @everyone: feel free to edit my repl/gsoc description | ||
the REPL surely needs love, aye | 20:55 | ||
dalek | c: 943c380 | skids++ | lib/Language/traps.pod: Add a little fluff, prune stray phrase, mention <.ws> |
||
FROGGS_ | and it is a good piece of work for a one man army me thinks | ||
ab5tract | moritz++ # getting to work on those missing declarator sections :D | ||
gtodd: it could all be feasibly done as a CLI too | 20:56 | ||
moritz | What about NFG? would that make a good GSoC project? | 20:57 | |
20:57
grondilu joined,
ilbot3 left
|
|||
TimToady | I hope jnthn can concentrate on that after NSA | 20:58 | |
gtodd | ab5tract: you mean make perl6 REPL more featureful by making it inot a script that does a bunch of stuff? | ||
20:58
pecastro left
|
|||
grondilu | TimToady: in List.pm, combinations and permutations as methods use the homonym subroutines eagerly. Is that necessary? | 20:59 | |
jnthn | TimToady: Most likely I'll get us NA, then do NFG, and the S can come later :) | ||
20:59
pecastro joined
|
|||
TimToady | grondilu: it's a lot faster than not | 20:59 | |
assuming you're optimizing for throughput and not latency to first result | 21:00 | ||
and usually if you're asking for those, you want them all, or are looking for something that is on average in the middle | 21:01 | ||
grondilu | I was trying to solve projecteuler.net/problem=32 and to beign with I wanted to see how fast I could enumerate all permutations of nine objects. It was unpractle eagerly. | 21:02 | |
*unpracticle | |||
21:02
ilbot3 joined
|
|||
TimToady | it's probably impractical lazily too :) | 21:02 | |
at least until the GLR | |||
moritz | m: say [*] 1..9 | 21:03 | |
camelia | rakudo-moar 20aa85: OUTPUT«362880» | ||
TimToady | but if you want to enumerate them all, then why not eagerly? | ||
grondilu | because I can't see what is happening in real time. | ||
TimToady | much more cache friendly | ||
21:03
Mso150_a left
|
|||
grondilu | (for debugging) | 21:03 | |
plus it's hard to get an idea of how fast it's going if it's doing all in row | 21:04 | ||
21:04
Mso150_a joined
|
|||
TimToady | I just temporarily compile a note into the setting when I want to know something like that :) | 21:05 | |
anyway, I think it was something like 8 times faster at the time I made the change | |||
skids | Would getting the build/install systems in order (e.g. not building things during config stage, only rebuild what changed) be too mundane for GSoC? | ||
21:05
zakharyas left
|
|||
TimToady | though I could be confusing that with something else | 21:06 | |
grondilu | well, if you tll me that after the GLR we may switch back to lazy behavior, I'm fine with that and can wait. | ||
TimToady | the GLR can hopefully negotiate from end to end whether the whole thing is eager or lazy | ||
so we can have our cake and eat it too | 21:07 | ||
21:07
zakharyas joined
|
|||
dalek | c: c1579c3 | moritz++ | lib/Language/variables.pod: temp declarator: better/correcter explanation |
21:07 | |
c: 4e7b547 | moritz++ | lib/Language/traps.pod: Consistent spelling for "Perl 6" |
|||
skids | sorry | 21:08 | |
moritz | skids: no problem | ||
ab5tract | gtodd: what i guess i expect is some way to issue commands to a 'pool' of repls with arbitrary scopes and states (essentially akin to how Inline::Perl5 works, in a way) | ||
gtodd | ab5tract: oops not sure how that got private messaged | ||
dalek | : f06f24c | raydiak++ | docs/feather/syn_index.html: Fix broken stylesheet url There isn't much difference (yet), which is why nobody noticed it's been broken for a month |
||
21:08
kaare_ joined
|
|||
c: deac9aa | moritz++ | lib/Language/classtut.pod: more consistent "Perl 6" spelling |
21:09 | ||
gtodd | ab5tract: cool | ||
21:09
jluis_ left
21:22
muraiki_ left,
anaeem___ left
21:24
denis_boyun_ joined
21:25
xfix left
|
|||
psch | vendethiel: yeah, i suppose so. it could also coerce to Notes instead of having that awkward %notes hash | 21:25 | |
21:27
muraiki_ joined
|
|||
psch | vendethiel: but i didn't know about enum coercion yet, and haven't done anything more with that repo since then either | 21:27 | |
21:28
zakharyas left
21:29
DarkLoord left
|
|||
raydiak | moritz: is there a reason for text::smartlinks to be generating html 4 transitional instead of something more modern, or at least more strict? | 21:30 | |
21:30
DarkLoord joined
|
|||
raydiak | and if I change it...is it used by anything besides design.perl6.org? | 21:30 | |
looking at lining up the doctypes on syn_index.html and text::smartlinks output, so I can use the same header/footer inserts everywhere in the new design...maybe switch it all to html5? thoughts/feelings? | 21:31 | ||
21:32
regreg left
|
|||
Kristien | I wanna write some program in Perl 6 to give it a try. | 21:32 | |
skids | do it. doitdoitdoitdoit! | 21:33 | |
:-) | |||
TimToady | if you're looking for ideas, there's always rosettacode.org/wiki/Reports:Tasks_..._in_Perl_6 | 21:34 | |
Kristien | I always wanted to write an uptime monitor. | ||
moritz | raydiak: only hysterical raisins for html 4 | ||
TimToady | but you should write something that you find motivating :) | ||
moritz | raydiak: html5 didn't exist when text::smartlinks was written, iirc | ||
TimToady wonders what percentage of browsers out there still look cross-eyed at html5 | 21:35 | ||
raydiak | very, *very* small | ||
Kristien | IE | ||
moritz | IE != IE | ||
raydiak | XPers using IE, but that's not gonna last much longer either | ||
PerlJam | lots of browsers on government computers that are running old version of Windows, IE, etc. | 21:36 | |
raydiak | if you are using IE 8, you are likely very used to looking at the web through broken glasses | ||
by now | |||
skids | Kristien: You could give Inline::Perl5 a run for its money trying Net::SNMP. I don't think anyone's done that yet. | ||
moritz | perl6.org README says "IE8 still needs to be considered (2014-03). IE7 and below can be ignored." | 21:37 | |
masak | IE8 seems to be at 10% currently. www.theie8countdown.com/ | ||
skids | (If SNMP doesn't make you tear up. Sometimes it does that to me.) | ||
raydiak is happy to give that 10% one more reason to stop making my life difficult | 21:38 | ||
vendethiel | masak: wow, we're in 2013 already? :P | ||
moritz | where I'd say "considered" means "should be somewhat readable", not "needs to be perfectly rendered" | ||
raydiak | hm | 21:39 | |
guess I'll stick with 4 strict, better than getting it done and finding it fundamentally broken on a target platform | 21:41 | ||
21:43
DarkLoord left
21:44
Mso150_a left
|
|||
Kristien | Is it already possible to spawn processes? | 21:46 | |
moritz | Kristien: there's shell() and run() and qx// | ||
japhb | Also Proc::Async | 21:47 | |
moritz | that needs documentation | 21:48 | |
Kristien | ah thanks | ||
moritz | oh, and run and shell are also undocumented :( | 21:49 | |
(on doc.perl6.org, that is) | |||
dalek | c: d27cb96 | moritz++ | TODO: Add run/shell/Proc::Async TODOs |
21:50 | |
21:51
Mso150 joined
|
|||
psch | hah, first time merging a PR on github and apparently i thanked ven++ in the commit message of the merge | 21:52 | |
instead of leaving the original commit message in there... | 21:53 | ||
21:55
skids left,
abraxxa1 left
|
|||
raydiak wonders where theie8countdown.com gets its data and how recently it was updated...those are not the numbers seen at statcounter, w3counter, etc | 21:55 | ||
masak .oO( masak's law of data: The Data Is Always Wrong ) | 21:57 | ||
PerlJam | masak: I think that's more true of "real time data" than historical data usually. | 22:02 | |
22:03
Ele1 joined
|
|||
raydiak | I tend to check several sources and do a sort of weighted average, unless they're in obvious disagreement...which at least holds up in most discussions, in spite of whole-hearted agreement with Masak's Law of Data :) | 22:04 | |
22:05
Ele1 left
|
|||
masak | raydiak: clearly, the consensus view between my law and your addendum is: (a) check several sources, and then (b) the data is still wrong :P | 22:05 | |
PerlJam | raydiak: that sounds wisdom-of-the-crowd-ish | ||
Kristien | Hmm, start and Promise aren't in scope even though I have Rakudo 2014.09. | 22:06 | |
22:06
lsm-desktop left,
bjz left
22:07
FROGGS_ left
|
|||
raydiak | PerlJam: maybe...that's where the "weighted average" comes in, which is where, in an even less-rigorous fashion, I use my experience and intuition to decide which sources to trust more than others | 22:07 | |
22:08
pmurias joined
|
|||
raydiak | masak: I'd say that's factually accurate, for at least some definitons of "wrong"...just not a position that's going to do much for most debates, other than stop them dead on both sides :) | 22:09 | |
masak | *nod* | 22:10 | |
raydiak used to tell people "you don't know anything until you realize you know nothing" | |||
masak | knowledge is tricky. | 22:11 | |
22:11
mvuets left
|
|||
PerlJam | masak: yeah ... but how do you *know* that? ;) | 22:12 | |
masak | I have all this data that... dang. | 22:13 | |
raydiak finally understands...and retires to build a cabin in the remote wilderness | 22:14 | ||
22:16
denis_boyun_ left
|
|||
Kristien | japhb: in which version of Rakudo Star should Proc::Async be available? | 22:17 | |
> added experimental support for Proc::Async, MoarVM only for now | |||
Oh. :v | |||
22:18
lsm-desktop joined
22:21
prammer left
22:27
booly-yam-6137 joined
22:34
denis_boyun_ joined
22:35
bjz joined
22:41
telex left,
denis_boyun_ left
22:42
telex joined
22:43
bjz left
22:46
booly-yam-6137 left,
Kristien left
22:47
bjz joined
22:50
kjs_ joined,
Mso150 left
22:52
bjz left
23:04
booly-yam-6137 joined
23:12
tgt left
23:18
kjs_ left
23:24
booly-yam-6137 left
23:25
skids joined
23:26
booly-yam-6137 joined
23:29
gfldex left,
rurban joined
23:37
araujo left,
virtualsue left
23:38
araujo joined
23:40
rurban left
|
|||
masak | m: class A { trusts ::B; method !foo { say "OH HAI" }; class B { method bar { $*a!foo() } }; method baz { my $*a = self; B.new.bar } }; A.new.baz | 23:41 | |
camelia | rakudo-moar 20aa85: OUTPUT«===SORRY!=== Error while compiling /tmp/Bh4Ig7A9fLNo such private method 'foo' for invocant of type 'B'at /tmp/Bh4Ig7A9fL:1------> HAI" }; class B { method bar { $*a!foo(⏏) } }; method baz { my $*a = self; B.new…» | ||
masak | several questions: | ||
(a) can I call a private method in one class from another? | |||
(b) is the above the way to do it? | |||
23:41
booly-yam-6137 left
|
|||
masak | (c) should I rather place the `trusts` before the (nested) caller class, or after it? do both work? | 23:42 | |
(d) should the above work? is it a bug that it doesn't? | |||
jnthn | masak: There's multiple things wrong with your code. | 23:47 | |
masak: First, private method calls are not virtual, and must always be qualified; failing to do so implicitly takes the surrounding class. | |||
masak: Second, you need to stub B, then trusts B; | 23:48 | ||
masak | qualified, as in `$*a!A::foo()` ? | ||
jnthn | The error message tells you the first, btw, 'cus it says it's looking for it in B | ||
Yes. | |||
masak | thank you. | ||
m: class A { class B { ... }; trusts B; method !foo { say "OH HAI" }; class B { method bar { $*a!A::foo() } }; method baz { my $*a = self; B.new.bar } }; A.new.baz | 23:49 | ||
jnthn | Finally, $*a contains an instance of B, not A? :) | ||
camelia | rakudo-moar 20aa85: OUTPUT«OH HAI» | ||
masak | jnthn++ | ||
23:49
grondilu left
|
|||
masak | no, it contains an A. | 23:49 | |
jnthn | Oh :) | 23:50 | |
masak | I'm not 100% clear on why `trusts ::B;` doesn't work. | ||
jnthn | Note that since private methods aren't virtual, you get compile-time typo detection. | ||
masak | *nod* | ||
jnthn | Because trusts happens at BEGIN time. | ||
masak | this is the first time I've felt I've wanted *both* Java's "qualified self" notation *and* `trusts`. | 23:51 | |
23:51
pmurias left
|
|||
jnthn | And is an immediate MOP call to .add_trusts or so. | 23:51 | |
23:51
BenGoldberg joined
|
|||
jnthn | I'm sure the reason is hidden in the code I can't see, but if A is an aggreate with B inside of it, then a lexical class B and a normal method might be enough... | 23:52 | |
masak | a normal method is what I've ended up with, at least as a workaround. | 23:54 | |
I'll see if I end up turning them back into private methods and the working solution above. | |||
jnthn | *nod* | 23:56 | |
23:56
adu joined
|
|||
masak | as an author of grammars, I still find it annoying and difficult that grammars generally fail, that is, return a failing match -- *unless* you use the `~` combinator, in which case they nqp::die with an exception that can't be properly caught using a CATCH. | 23:58 | |
in effect, that gives grammars three possible outcomes: success, failure, or death-because-of-failgoal. | 23:59 |