»ö« 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␤ signature␤Parse failed␤FAILED 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/fuANEJ1007␤A is not composable, so B cannot compose it␤at /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 available␤at /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:1846␤␤Cannot 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/bem4uL6RgF␤Variable '$a' is not declared␤at /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/aJSwBmtW6n␤Variable '$a' is not declared␤at /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/hUBGSUTRho␤Missing block␤at /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/3qF2fDkPtc␤augment 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_Hntm8SA␤Calling '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«True␤True␤»
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/RAWE7FsLPy␤Two terms in a row␤at /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/stJEOKWI1O␤Cannot use bind operator with this left-hand side␤at /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/Av6CD6JZ5v␤Unable to parse quote-words subscript; couldn't find right angle quote␤at /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/Bh4Ig7A9fL␤No 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