»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
00:09
captain-adequate left
00:14
cpage_ joined
00:20
troys is now known as troys_
00:26
Xliff left
00:30
lookatme joined
|
|||
lookatme | morning \o. | 00:30 | |
Herby_ | o/ | 00:31 | |
00:35
skids joined
00:37
[2300mAh] left
00:40
lookatme left,
lookatme joined
00:44
lookatme left,
lookatme joined
|
|||
Juerd | ♥ given $input { when any(@stack) { note "Already selected!" } ... } | 00:44 | |
00:48
lookatme left,
lookatme joined
00:51
kurahaupo joined
00:53
Cabanossi left
00:54
astj joined
00:55
Cabanossi joined
01:00
lookatme left
01:02
astj left,
astj joined
01:03
astj left
01:04
lookatme joined
01:08
lookatme left,
baest left,
lookatme joined,
baest joined
01:09
astj joined
01:13
Zoffix joined
|
|||
Zoffix | Any idea why when I run this program it always prints "Killing" three times, but frequently it doesn't end, suggesting the murder did not succeed? gist.github.com/zoffixznet/79543ee...p6-L37-L41 | 01:14 | |
As you can see, I even tried sending three different kill signals, to no avail | |||
And indeed `ps ax` shows the procs unkilled, still running | 01:16 | ||
01:17
cyphase left
|
|||
kurahaupo | Zoffix: do you own the processes in question? | 01:18 | |
Zoffix | kurahaupo: they're started by that very script | ||
lookatme | Use SIGKILL ? | ||
kurahaupo | check for error returns? | ||
lookatme | check $! ? | 01:19 | |
Zoffix | Error returns from where? | ||
lookatme: at which point? | |||
And yeah, I'm already sending SIGKILL | |||
MasterDuke | if you add signal handlers to the code you're running in the Proc, do they fire? | ||
kurahaupo | error returns from the kills | 01:20 | |
Zoffix | kurahaupo: it just returns the signal number | ||
MasterDuke | run under strace and see what that shows happening? | ||
01:21
cyphase joined
|
|||
Zoffix | adding `signal(SIGINT).tap: {say "got a signal"};` to the spawned procs and then sending $proc.kill: SIGINT don't print that message :/ | 01:23 | |
I don't know how to use strace. | |||
kurahaupo | strace -o newtracefile program args ... | 01:24 | |
MasterDuke | you'll want -f also | ||
Juerd | github.com/Juerd/shalog/blob/master/tracking.p6 # Beginning of something usable | ||
kurahaupo | but for this you'll want -f or -ff | ||
MasterDuke: snap | |||
01:25
astj_ joined
|
|||
Zoffix | Hm. The code's `say "Killing!"; say $proc.kill: SIGSEGV;` and it always prints 3 killing but only 1-3 "11"s | 01:25 | |
Juerd | At some point I want to spread my code over several files. Are there any best practices regarding putting multiple classes in a single file? | 01:26 | |
Zoffix | Juerd: no | ||
Juerd | Great, at least I can stop looking for them then :) | ||
kurahaupo | Zoffix: if you just want something to stop normally, SIGTERM should be your first choice. SIGHUP is typically caught by daemons and used to trigger reloading | 01:27 | |
not that you've made the relevant arrangements, but that's the convention | |||
01:27
astj left
|
|||
MasterDuke | you could add an `fprintf(stderr, "Kilroy was here")` to src/io/procops.c:1073 and see if the moarvm op is getting called 3 times | 01:28 | |
kurahaupo | for interactive processes SIGHUP indicates that its terminal has disconnected -- the "hup" or "hangup" refers to a phone line with a dial-up modem | 01:30 | |
Zoffix | Here's the strace. What am I looking for gist.githubusercontent.com/zoffixz...tfile1.txt ? | 01:31 | |
here's the program that I used to generate it: gist.github.com/zoffixznet/c737b79...75d9b5339f | |||
01:37
BenGoldberg joined
|
|||
Zoffix | Golfed down a bit: await ^2 .map: {start { with Proc::Async.new: $*EXECUTABLE, "-e", "sleep" -> $p { Promise.in(2).then: {say "Killing"; $p.kill: SIGTERM}; await $p.start } }} | 01:38 | |
What's weird is it doesn't appear to happen if that `^2` is a `^1` | |||
Zoffix files in hopes jnthn++ would know a fix | 01:39 | ||
01:40
lookatme left
|
|||
Zoffix | .ask jnthn any idea what may be causing a Proc::Async.kill to fail killing when there's more than one Proc::Async involved? This is sort of blocking my ecosystem toaster script :( would be sweet if it could be fixed: rt.perl.org/Ticket/Display.html?id=131479 | 01:43 | |
yoleaux | Zoffix: I'll pass your message to jnthn. | ||
Zoffix | Man, need to learn C so I could fix stuff like this on my own :* | ||
pilne | c is dark and full of terrors... but at least is isn't c++ (: | 01:45 | |
01:46
ilbot3 left
|
|||
pilne | one bad thing about perl6 is that after dipping my toes in it... trying to learn anything else for a change of career (i don't do anything programming related at the moment), feels pooptastic | 01:46 | |
MasterDuke | i added a print to that moar function. i see two "Killing"s, but only one print from moar | ||
01:48
ilbot3 joined,
ChanServ sets mode: +v ilbot3
01:50
cpage_ left
01:52
lookatme joined
01:53
Cabanossi left
01:55
Cabanossi joined,
kurahaupo_ joined
01:56
aborazmeh joined,
aborazmeh left,
aborazmeh joined
01:57
kurahaupo left
02:00
cpage_ joined
|
|||
Zoffix | pilne: yeah, that's why we say Perl 6 is the last language you'll ever learn :) | 02:00 | |
Zoffix goes into hybernation mode | |||
I see I first suspected .kill was busted last September: github.com/perl6/roast/issues/158 | 02:01 | ||
lookatme | I send SIGTERM can killed one of **Promise** which tag with "bar" | 02:02 | |
Zoffix & | 02:03 | ||
lookatme | @_@ | ||
02:04
kurahaupo_ left
|
|||
pilne | i just have to keep hoping i'll be in the right place at the right time to jump on something looking to try "anything" as a coding backend >.< but there is a lot of buzzword hype and shenanigans locally. | 02:05 | |
but just barely getting to know perl6, it feels fantastic for "big data" and even machine learning/AI stuff. | 02:06 | ||
02:11
jcallen_ is now known as jcallen
02:13
Herby_ left
|
|||
curt_ | performance isn't quite there yet, but NativeCall is my best friend. I love how trivial it is to drop into C. | 02:16 | |
Juerd | "The following packages were stubbed but not defined:", but if I remove the "..." it says about the definition later in the file: "Redeclaration of symbol 'Nowhere'" | 02:18 | |
Any ideas? | |||
(Nowhere is the name of the class) | |||
lookatme | Is machine learning/AI need performance ? | ||
Juerd, can you paste code to somewhere | 02:19 | ||
Juerd | lookatme: gist.github.com/Juerd/27947ac0e756...abf69011fd | 02:20 | |
02:20
zhongjin616 joined
|
|||
Juerd | It worked when I didn't have it in a .pm file | 02:20 | |
curt_ | I'm not doing machine learning/AI, my 'big data' is just volume. | ||
lookatme | Juerd, I comment on the gist | 02:27 | |
pilne | for research purposes, technically, machine learning and AI don't need speed, they need "flexibility", but speed is always nice in that area (: | 02:28 | |
02:29
raschipi joined
|
|||
TEttinger | pilne: there's also bearlibterminal if you don't need some of the stuff libtcod provides. it's probably much easier to call from a not-C language | 02:29 | |
lookatme | The document about that forward declared not very clear | ||
TEttinger | (libtcod defines their own kinds of list and such) | 02:30 | |
foo.wyrd.name/en:bearlibterminal | |||
pilne | ahhhh, TEttinger, i was mainly interested in libtcod for it's terminal stuffs, tyvm | ||
TEttinger | BLT's terminal is definitely better in a lot of ways | ||
pilne | and it reminds me of a good meal | ||
so it's like... doubleplusgood | 02:31 | ||
TEttinger | it allows movement of each char outside its position, plus layers | ||
and works with TTF fonts | |||
pilne | project tcodperl: killed before germination | ||
TEttinger | BLT only does terminal output, since most games want their own map gen anyway | 02:32 | |
pilne | this will allow me to just write all the "roguelike" stuff (ai, etc.) in perl6, and use that for terminal. | ||
TEttinger | yep | ||
roguebasin has good resources | |||
pilne | tyvm, no need to lug around the horse trailer full of horses i ain't using | ||
yeah, it's where i get most of my stuff, not sure how i missed that | |||
TEttinger | I don't know if BLT has much presence there. libtcod had a monopoly on full-color terminal-likes for many years | 02:33 | |
but it stopped mac support and various other oddities before finally picking up some pieces | |||
www.roguebasin.com/index.php?title=Dijkstra | |||
pilne | yeah, and it was kinda "more" than i wanted from a library, even when using it in a tutorial for python a longtime ago. | ||
TEttinger | (useful but easy to miss AI technique) | 02:34 | |
pilne | i actually read a comparison of fill, dijkstra, and a* recently | ||
02:34
xiaoyafeng joined
|
|||
TEttinger | I work on a very "more" library for roguelikes but it's in Java | 02:34 | |
02:34
aborazmeh left
|
|||
TEttinger | yeah, it's crazy the differences | 02:34 | |
xiaoyafeng | hello, I have a question. | 02:35 | |
pilne | i just have a hard time feeling comfy as a one-man-dev in javaland, everything just feels so "big" | ||
TEttinger | currently in my benchmarks, I have A* beating everything hand-down for short simple paths, but surprisingly a breadth-first search with no heuristic can beat A* on long and moderately convoluted paths | 02:36 | |
xiaoyafeng | what's different between ".".io.dir.grep: {d} and ".".io.dir.grep({d}); | ||
please help | |||
pilne | TEttinger: a* "thinks too much" on the long and convoluted paths i've noticed. | ||
TEttinger | hi xiaoyafeng. there's some experts around recently, but I am not one of them | 02:37 | |
pilne | likewise, my perl-fu is weak like cooked spaghetti | ||
xiaoyafeng | :(.... | ||
02:37
Cabanossi left
|
|||
TEttinger | (I'm rather sure Zoffix is an expert, since I've seen a lot of commits tied to the name) | 02:38 | |
pilne | m: ".".io.dir.grep: {d} | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared routine: d used at line 1 |
||
lookatme | xiaoyafeng, no different. | 02:39 | |
curt_ | xiaoyafeng: subroutine(...) and subroutine: ... are just two ways of calling the sub | ||
pilne | it might just be alternate syntax, have you examined them? | ||
TEttinger | also you might not have access to current dir in the bot | ||
xiaoyafeng | ".".io.dir.grep: {.d} | ||
sorry | |||
raschipi | m: ".".io.dir.grep: {.d} | ||
camelia | No such method 'io' for invocant of type 'Str' in block <unit> at <tmp> line 1 |
||
lookatme | m: say ".".IO.dir.grep:{.d}; | ||
camelia | (".cpanm".IO ".local".IO ".npm".IO ".perl6".IO ".perlbrew".IO ".rcc".IO ".ssh".IO "Perlito".IO "evalbot".IO "log".IO "nqp-js".IO "p1".IO "p2".IO "perl5".IO "std".IO ".cpan".IO "rakudo-m-1".IO "rakudo-m-2".IO "rakudo-j-inst-1".IO "rakudo-j-1".IO "rakudo-j… | ||
xiaoyafeng | IO | ||
lookatme | m: say ".".IO.dir.grep({.d}); | 02:40 | |
camelia | (".cpanm".IO ".local".IO ".npm".IO ".perl6".IO ".perlbrew".IO ".rcc".IO ".ssh".IO "Perlito".IO "evalbot".IO "log".IO "nqp-js".IO "p1".IO "p2".IO "perl5".IO "std".IO ".cpan".IO "rakudo-m-1".IO "rakudo-m-2".IO "rakudo-j-inst-1".IO "rakudo-j-1".IO "rakudo-j… | ||
raschipi | It's just two ways of saying the same thing. | ||
02:40
Cabanossi joined
|
|||
TEttinger | oh, one was {.d} and one was {d} | 02:40 | |
pilne | god i love this bot | ||
TEttinger | it's a pretty great bot | ||
lookatme | It just two ways of function/sub call, you can chose your prefer style | ||
xiaoyafeng | so : and () is identical | ||
raschipi | What is different yould be ".".IO.dir.grep ({.d}); The space makes a difference. | 02:41 | |
m: ".".IO.dir.grep ({.d}); | 02:42 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3".".IO.dir.grep7⏏5 ({.d}); expecting any of: infix infix stopper statement end statement modifier st… |
||
lookatme | m: say ".".IO.dir.grep : {.d}; | ||
camelia | Cannot resolve caller grep(Seq: ); none of these signatures match: ($: Bool:D $t, *%_) ($: Mu $t, *%_) in block <unit> at <tmp> line 1 |
||
raschipi | m: say ".".IO.dir.grep\ ({.d}); | ||
camelia | (".cpanm".IO ".local".IO ".npm".IO ".perl6".IO ".perlbrew".IO ".rcc".IO ".ssh".IO "Perlito".IO "evalbot".IO "log".IO "nqp-js".IO "p1".IO "p2".IO "perl5".IO "std".IO ".cpan".IO "rakudo-m-1".IO "rakudo-m-2".IO "rakudo-j-inst-1".IO "rakudo-j-1".IO "rakudo-j… | ||
xiaoyafeng | well it's not allowed space. between sub and args | 02:43 | |
raschipi | m: say ".".IO.dir.grep\  ({.d}); | ||
camelia | (".cpanm".IO ".local".IO ".npm".IO ".perl6".IO ".perlbrew".IO ".rcc".IO ".ssh".IO "Perlito".IO "evalbot".IO "log".IO "nqp-js".IO "p1".IO "p2".IO "perl5".IO "std".IO ".cpan".IO "rakudo-m-1".IO "rakudo-m-2".IO "rakudo-j-inst-1".IO "rakudo-j-1".IO "rakudo-j… | ||
raschipi | You can even split into multiple lines, as long as you put a \ there. Otherwise it means something else. | 02:44 | |
xiaoyafeng | but why ".".IO.dir.grep: ({.d}) is allowed too? | ||
02:44
curt_ left
|
|||
raschipi | That is an alternative format. | 02:45 | |
xiaoyafeng | ok, now it's 3 ways to call a sub | ||
raschipi | Gotta have at least three ways of doing something in Perl6. | ||
xiaoyafeng | TIMTTWTDI | 02:47 | |
;) | |||
lookatme | m: say ".".IO.dir.grep {.d}; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unexpected block in infix position (missing statement control word before the expression?) at <tmp>:1 ------> 3say ".".IO.dir.grep7⏏5 {.d}; expecting any of: infix infix… |
02:48 | |
lookatme | m: say grep {.d}, ".".IO.dir; | ||
camelia | (".cpanm".IO ".local".IO ".npm".IO ".perl6".IO ".perlbrew".IO ".rcc".IO ".ssh".IO "Perlito".IO "evalbot".IO "log".IO "nqp-js".IO "p1".IO "p2".IO "perl5".IO "std".IO ".cpan".IO "rakudo-m-1".IO "rakudo-m-2".IO "rakudo-j-inst-1".IO "rakudo-j-1".IO "rakudo-j… | ||
02:49
noganex joined
|
|||
lookatme | m: say ({.d}).WHAT | 02:51 | |
camelia | (Block) | ||
lookatme | xiaoyafeng, ({.d}) also a callable Block | ||
02:51
noganex_ left
|
|||
lookatme | like {.d} does | 02:52 | |
xiaoyafeng | yeah, it makes sense | ||
02:56
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
raschipi | m: lc('Y','N'); lc 'Y','N' | 03:02 | |
camelia | 5===SORRY!5=== Calling lc(Str, Str) will never work with declared signature (Cool $s) at <tmp>:1 ------> 3<BOL>7⏏5lc('Y','N'); lc 'Y','N' Calling lc(Str, Str) will never work with declared signature (Cool $s) at <tmp>:1 ------> 3lc… |
||
raschipi | m: lc ('Y','N'); lc 'Y','N' | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Calling lc(Str, Str) will never work with declared signature (Cool $s) at <tmp>:1 ------> 3lc ('Y','N'); 7⏏5lc 'Y','N' |
||
lookatme | m: say lc('Y', 'N'); | 03:03 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Calling lc(Str, Str) will never work with declared signature (Cool $s) at <tmp>:1 ------> 3say 7⏏5lc('Y', 'N'); |
||
lookatme | m: say lc('Y'); | ||
camelia | y | ||
raschipi | bisectable6: say lc ('Y','N'); | 03:04 | |
bisectable6 | raschipi, On both starting points (old=2015.12 new=b667e81) the exit code is 0 and the output is identical as well | ||
raschipi, Output on both points: «y n» | |||
lookatme | m: say lc ('Y', 'N'); | ||
camelia | y n | ||
lookatme | m: say &lc.WHAT; | ||
camelia | (Sub) | ||
lookatme | m: say &lc('Y', 'N'); | 03:05 | |
camelia | Too many positionals passed; expected 1 argument but got 2 in block <unit> at <tmp> line 1 |
||
raschipi | I see, in the second, it was the version without parens that it didn't like. | ||
03:06
Cabanossi left
|
|||
lookatme | m: say &lc.signature.perl; | 03:06 | |
camelia | :(Cool $s) | ||
lookatme | m: say &lc(('Y', 'N')); | 03:07 | |
camelia | y n | ||
lookatme | m: say ('Y', 'N') ~~ Cool; | 03:08 | |
camelia | True | ||
lookatme | Oh.. @_@ | ||
03:08
Cabanossi joined
03:11
simonm left
|
|||
raschipi | m: say lc( ('Y','N') ); | 03:12 | |
camelia | y n | ||
lookatme | m: say &lc(('Y', 'N')).WHAT; | 03:13 | |
camelia | (Str) | ||
03:14
khw left
03:28
aborazmeh left
03:41
simonm joined
03:49
Xliff joined
|
|||
Xliff | \o | 03:49 | |
Is there a way to make a class that is only available to a specific scope? | |||
m: class A { my class B { method bb { say "bb"; } }; method new( B.bb; }; }; A.new; | 03:51 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Malformed parameter at <tmp>:1 ------> 3method bb { say "bb"; } }; method new( B7⏏5.bb; }; }; A.new; expecting any of: constraint formal parameter |
||
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new( B.new.bb; }; }; A.new; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Malformed parameter at <tmp>:1 ------> 3method bb { say "bb"; } }; method new( B7⏏5.new.bb; }; }; A.new; expecting any of: constraint formal parameter |
||
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new{ B.bb; }; }; A.new; | ||
camelia | bb | ||
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new{ B.bb; }; }; A.new; A::B.new.bb; | ||
camelia | bb Could not find symbol '&B' in block <unit> at <tmp> line 1 Actually thrown at: in block <unit> at <tmp> line 1 |
||
Xliff | Hmm... that should work. | ||
03:52
Cabanossi left
03:53
Cabanossi joined
|
|||
raschipi | m: class A { our class B { method bb { say "bb"; } }; method new{ B.bb; }; }; A.new; A::B.new.bb; | 03:54 | |
camelia | bb bb |
||
raschipi | Xliff: ^^ | 03:55 | |
m: class A { our class B { method bb { say "bb"; } }; method new{ B.bb; }; }; A.new; B.new.bb; | 04:02 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared name: B used at line 1 |
||
raschipi | m: class A { our class B { method bb { say "bb"; } }; method new{ B.bb; }; }; A.new; my B.new.bb; | 04:03 | |
camelia | 5===SORRY!5=== Type 'B' is not declared at <tmp>:1 ------> 3} }; method new{ B.bb; }; }; A.new; my B7⏏5.new.bb; Malformed my at <tmp>:1 ------> 3; } }; method new{ B.bb; }; }; A.new; my7⏏5 B.new.bb; » | ||
Xliff | raschipi: Why "our" instead of "my"? | 04:07 | |
raschipi | They say where the symbol will be visible. 'my' means it's visible only inside the block, 'our' means it will be visible outside. | 04:08 | |
Xliff | But if I only want B visible to methods in A, isn't that the same? | 04:09 | |
raschipi | If you want B visible only inside, use my. If you want it visible outside, use our. | 04:10 | |
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new{ B.bb; }; method aa { say "aa" B.bb; }; A.new; A::B.new.bb; | 04:11 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3ethod new{ B.bb; }; method aa { say "aa"7⏏5 B.bb; }; A.new; A::B.new.bb; expecting any of: infix infix stopper postfix… |
||
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new{ B.bb; }; method aa { say "aa"; B.bb; }; A.new; A::B.new.bb; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Missing block at <tmp>:1 ------> 3{ say "aa"; B.bb; }; A.new; A::B.new.bb;7⏏5<EOL> |
||
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new { B.bb; }; method aa { say "aa"; B.bb; }; }; A.new; A::B.new.bb; | ||
camelia | bb Could not find symbol '&B' in block <unit> at <tmp> line 1 Actually thrown at: in block <unit> at <tmp> line 1 |
||
raschipi | m: class A { my class B { method bb { say "bb"; } }; method new { B.bb; }; method aa { say "aa"; B.bb; }; }; A.new; A.new.aa; | 04:12 | |
camelia | bb bb No such method 'aa' for invocant of type 'Bool' in block <unit> at <tmp> line 1 |
||
raschipi | m: class A { my class B { method bb { say "bb"; } }; method new { B.bb; }; method aa { say "aa"; B.bb; }; }; A.new; A.aa; | ||
camelia | bb aa bb |
||
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new { B.bb; }; method aa { say "aa"; B.bb; }; }; A.new.aa; | ||
camelia | bb No such method 'aa' for invocant of type 'Bool' in block <unit> at <tmp> line 1 |
||
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new { B.bb; }; }; method aa { say "aa"; B.bb; }; A.new.aa; | ||
camelia | 5===SORRY!5=== Undeclared name: B used at line 1 Other potential difficulties: Useless declaration of a has-scoped method in mainline (did you mean 'my method aa'?) at <tmp>:1 ------> 3b"; } }; method new { B.bb; }; };… |
||
Xliff | m: class A { my class B { method bb { say "bb"; } }; method new { B.bb; }; }; method aa { say "aa"; B.bb; }; }; A.new.aa; | 04:13 | |
camelia | 5===SORRY!5=== Unexpected closing bracket at <tmp>:1 ------> 3b; }; }; method aa { say "aa"; B.bb; }; 7⏏5}; A.new.aa; Other potential difficulties: Useless declaration of a has-scoped method in mainline (did you mean 'my method aa… |
||
Xliff | OK, this needs an editor. | ||
04:14
geekosaur left
04:15
geekosaur joined
|
|||
Xliff | m: class A { | 04:16 | |
my class B { | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Missing block at <tmp>:1 ------> 3class A {7⏏5<EOL> |
||
Xliff | method new { B.bb; }; | ||
method bb { say "bb"; }; | |||
}; | |||
method aa { say "aa"; B.bb; }; | |||
}; | |||
A.new.aa; | |||
Feck. | |||
class A { my class B { method new { B.bb; }; method bb { say "bb"; }; }; method aa { say "aa"; B.bb; }; }; A.new.aa; | 04:17 | ||
raschipi | Use a pastie | ||
Xliff | m: class A { my class B { method new { B.bb; }; method bb { say "bb"; }; }; method aa { say "aa"; B.bb; }; }; A.new.aa; | ||
camelia | aa bb |
||
Xliff | That would have been my next step if that hadn't worked. | ||
m: class A { my class B { method new { B.bb; }; method bb { say "bb"; }; }; method aa { say "aa"; B.bb; }; }; A.new.aa; A.B.new; | |||
camelia | aa bb No such method 'B' for invocant of type 'A' in block <unit> at <tmp> line 1 |
||
Xliff | m: class A { my class B { method new { B.bb; }; method bb { say "bb"; }; }; method aa { say "aa"; B.bb; }; }; A.new.aa; A::B.new; | ||
camelia | aa bb Could not find symbol '&B' in block <unit> at <tmp> line 1 Actually thrown at: in block <unit> at <tmp> line 1 |
||
raschipi | do a /msg camelia | 04:18 | |
Xliff | OK, so I don't really see a noticible difference between using "my" and "our" | ||
04:19
xtreak_ joined
|
|||
raschipi | m: class A { our class B { method bb { say "bb"; } }; method new{ B.bb; }; }; A.new; A::B.new.bb; | 04:19 | |
camelia | bb bb |
||
raschipi | m: class A { my class B { method bb { say "bb"; } }; method new{ B.bb; }; }; A.new; A::B.new.bb; | ||
camelia | bb Could not find symbol '&B' in block <unit> at <tmp> line 1 Actually thrown at: in block <unit> at <tmp> line 1 |
||
raschipi | The second one doesn't work because B doesn't exist outside of A | 04:20 | |
Xliff | Heh. | ||
Which is exactly what I want. | |||
I don't want B to work outside of A | |||
raschipi | So use it. What's the problem? | ||
Xliff | No problem. I just wanted to know if I was doing it the right way. | 04:21 | |
You suggested "our" and I was confused if I had missed something. | |||
No worries. | |||
Thanks for the input, though. | 04:22 | ||
raschipi | I see. Yeah, using 'my' is the way to go. If you want something else, there are other options. | 04:23 | |
04:23
Actualeyes left
|
|||
Xliff | 'k | 04:26 | |
04:28
pilne left
04:36
Cabanossi left
04:39
Cabanossi joined
04:40
xtreak_ left,
xtreak joined
04:41
fatguy joined
04:43
raschipi left
04:45
aborazmeh joined,
aborazmeh left,
aborazmeh joined
04:47
aindilis joined
|
|||
Xliff | m: class A { my class B { method new { B.bb; }; method bb { say "bb"; A.aa;}; }; method aa { say "aa"; B.bb; }; }; | 04:56 | |
camelia | ( no output ) | ||
04:56
xtreak left
|
|||
Xliff | m: class A { my class B { method new { B.bb; }; method bb { say "bb"; A.aa;}; }; method aa { say "aa"; B.bb; }; }; A.new.aa | 04:56 | |
camelia | (timeout)aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa bb aa … |
||
Xliff | m: class A { my class B { method new { B.bb; }; method bb { say "bb"; A.aa}; }; method aa { B.bb }; }; A.new.aa | 04:57 | |
camelia | (timeout)bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb … |
||
Xliff | m: class A { my class B { method bb { say "bb"; A.aa }; }; method a { say B.bb }; method aa { say "aa" }; }; A.new.a | 04:59 | |
camelia | bb aa True |
||
Xliff | m: class A { my class B { method bb { say "bb"; A.aa }; }; method a { B.bb }; method aa { say "aa" }; }; A.new.a | ||
camelia | bb aa |
||
Xliff | Rawk. | 05:00 | |
05:00
finanalyst joined
05:04
astj_ left
05:07
astj joined,
Cabanossi left
05:08
Cabanossi joined
05:10
pegop left
|
|||
finanalyst | can someone tell me what had happened to perl6-debug? I have just rerun 'rakudobrew build moar', then 'perl6-debug' and got 'perl6-debug: command not found' | 05:10 | |
05:11
astj left
05:14
troys_ is now known as troys
05:19
BenGoldberg left
05:25
aborazmeh left
05:30
ufobat joined
05:33
domidumont joined
05:36
domidumont left
|
|||
zengargoyle | finanalyst: i think it's broken or going away or being changed or something. you probably have a `perl6-debug-m` for the moar build but that gives some other error. | 05:52 | |
finanalyst | zengargoyle: if it's going away, it would be nice to know. | 05:53 | |
05:53
MasterDuke left
|
|||
zengargoyle | quotable6: perl6-debug | 05:53 | |
quotable6 | zengargoyle, gist.github.com/3ef7cdc97a78f145bf...78c134949d | ||
finanalyst | If being changed, when will it be back? | ||
05:53
ufobat left
|
|||
finanalyst | perl6-debug-m does not work at all - gives an error for all input | 05:54 | |
zengargoyle | gues that doesn't do what i thought. :) too many bots to keep track of. i remember seeing a bit of discussion about perl6-debug in the past few days here in IRC. | ||
05:55
Mithaldu left,
Mithaldu joined
|
|||
finanalyst | how to find discussion? | 05:55 | |
zengargoyle | if you search the IRC logs you'll probably find the answer. it was just a few days or so ago. | ||
irclog.perlgeek.de/perl6/2017-06-02 | 05:57 | ||
zengargoyle thinks theres a bot that can search the logs but i don't know which one or how it works. :/ | |||
05:58
cpage_ left
|
|||
zengargoyle | irclog.perlgeek.de/perl6/search/?n...erl6-debug | 05:58 | |
05:59
zhongjin616 left
|
|||
Xliff | Does FALLBACK take positional args? | 06:00 | |
Oh, nevermind. | 06:02 | ||
It can. | |||
zengargoyle | finanalyst: i think perl6-debug vs perl6-debug-m is a little implementation detail of rakudobrew vs rakudo-star or whatever. not sure if the brokeness is terminal or just a bit of "it hasn't caught up yet". :) but you're not alone, it doesn't work. | 06:03 | |
06:04
troys left
|
|||
finanalyst | zengargoyle: just looking through the last few logs | 06:04 | |
basically debug & Grammar:: Debug stopped working at the last update | 06:05 | ||
06:05
domidumont joined
06:06
astj joined
|
|||
zengargoyle | finanalyst: cool. BTW i'm probably going to steal your Task::Popular as a template to make my own little set of favorite modules because i'm too lazy to track down the old Task::Star. :P | 06:08 | |
finanalyst | zengargoyle: :) | ||
06:09
stmuk_ joined
|
|||
finanalyst | zengargoyle: By the way, I created a local directory on my computer, put a META6.json file in it with some modules I like to have, and then used zef on the directory URL | 06:09 | |
It nicely installed all the modules | 06:10 | ||
list the required modules in the depends list | |||
zengargoyle | but i wonder if having an actual Task::Popular module that has nothing but a bare actual module with a version so it can somehow be tested against is more cromulent than just a Null install with dependencies.... | ||
like the p5 'perl -MTask::Whatever\ 99999' quick check of is it installed or not??? | 06:11 | ||
06:12
stmuk left
|
|||
finanalyst | zengargoyle: not sure what you mean about "testing against" a distribution | 06:13 | |
zengargoyle | package manager satisfying dependencies is a bit different than being able to 'use Task::Whatever' and then check Task::Whatever's version inside the code. | 06:14 | |
it's sortof a meta thing that's probably not too important anyways... :) | 06:15 | ||
06:16
nadim_ joined
|
|||
lookatme | perl6 -MTask::Whatever ? | 06:16 | |
zengargoyle | `perl -MGetopt::Long\ 9999 -e1` -> Getopt::Long version 9999 required--this is only version 2.48 at /usr/share/perl/5.24/Getopt/Long.pm line 1530. | 06:18 | |
if Task::Popular (or Task::Whatever) doesn't actuall install a module named Task::Popular with a version, then as far as perl6 is concerned it doesn't exist. | 06:19 | ||
only the package manager can tell by checking wheter all dependencies are installes. | 06:20 | ||
if there's an actual Task::Poplular module that does nothing but is installed then the check is quick and easy. require Task::Popular. or query the version installed. | 06:21 | ||
06:22
wamba joined
|
|||
zengargoyle | lookatme: doing the -MSome::Module\ 9999999 is just a really quick and easy way to see if a module is installed and which version is actually installed. you ask perl to load a reallly high version and it fails and tells you which version it actually has or that there's no such module installed. | 06:25 | |
lookatme | zengargoyle, I see. I dont' know much about module version control. | 06:27 | |
zengargoyle | IMHO, it's best practice for every module/package/bundle/whatever to have an actual module that gets installed (even if it doesn't do anything) just so you can tell that it's there and what version it is. | ||
but i may be alone in this thinking :) | 06:29 | ||
lookatme | Is there a way use specify version module in command `perl6 -M..` or in Perl 6 script.. | ||
zengargoyle | i'm not really sure about p6. but that's pretty much exactly what's going on in p5. in a script 'use Foo 4;' is the command line 'perl "-MFoo 4" (because spaces). | 06:32 | |
06:33
darutoko joined
06:35
kyan left
06:36
lowbro joined
|
|||
zengargoyle | but the point is can you tell that Task::Whatever is installed or not? if Task::Whatever actually installs a Task::Whatever module then you can tell. if Task::Whatever is just a list of dependencies and doesn't install an actual Task::Whatever module, then you can't check that it has been installed except by checking all of the dependencies. | 06:36 | |
06:36
lowbro left,
lowbro joined
|
|||
zengargoyle | one way is easy, one is a PITA. :P | 06:38 | |
lookatme | zengargoyle, There are something about module version in document. Such as `module mymodule:ver<0.0.1> { }`, but I dont' think it's exactly way manager module version. | 06:39 | |
I gotta do a test about that. | 06:41 | ||
docs.perl6.org/language/modules#Ex..._Importing | |||
zengargoyle | i don't think i've seen many command line (or scripts) that actually use the version information.... github.com/dnmfarrell/Perl6-One-Liners this page has a few uses of -M but not that many. | 06:42 | |
lookatme | Use that module would be like that `perl6 -MSOme::Module::ver<0.0.1>` | 06:43 | |
I think they add the `-M` option recently | 06:44 | ||
The command **perl6** not have that option before | |||
zengargoyle | i don't think i've ever used a version in a -M other than checking whether module was installed or not.... | 06:46 | |
one-liner's are usually using what you know work. :) | 06:47 | ||
fatguy | anyone using IO-Notification-Recursive ? i need to catch file/dir event (create/modify/delete), how can i do that ? | 06:50 | |
06:50
parv joined
|
|||
zengargoyle | `perl6 '-MTask::Popular' -e ''` --> No output | 06:58 | |
`perl6 '-MTask::Popular' -e ''` --> ===SORRY!=== Could not find Task::Popular at line 1 in: ...... | 06:59 | ||
gah, `perl6 '-MPSGI' -e ''` --> No output. | 07:00 | ||
07:02
cpage_ joined
07:04
astj left
|
|||
parv | zengargoyle, what is the difference in commands with Task::Popular so that you get the output only on the second time? | 07:08 | |
lookatme | Zef can install specify version module like this `zef install Foo:ver<1.0.0>` | 07:09 | |
And I found it's work when I use `use Foo:ver<1.0.0>` in script file, but not in `-M` option. | 07:12 | ||
zengargoyle | lookatme: the first time was a cut-n-paste error.... -MPSGI shows nothing -MTask::Popular returns error (even though Task::Popular is installed) because Task::Popular doen't actually install a modules named Task::Popular, it just has a list of dependencies that must be met (which `zef install Task::Popular` will happily do. | 07:13 | |
Voldenet | fatguy: start with IO::Notification class, it has .watch-path command and a good example on consuming the supply :) | ||
zengargoyle | lookatme: me too. i haven't been able to make -MFoo:ver<x.y>' work after trying many variants.... | 07:14 | |
Voldenet | watch-recursive pretty much does the same, except it sets up watches for the tree and merges the supplies | 07:15 | |
fatguy | Voldenet: where can i find the example and types of event doc ? | 07:17 | |
zengargoyle | parv: oops, that cut-n-paste error reply was to your question... | 07:18 | |
Voldenet | hm, docs.perl6.org/type/IO::Notification | 07:19 | |
parv | zengargoyle, don't worry; i read that. | ||
zengargoyle | :) | ||
fatguy | Voldenet: i don't understand what is FileRenamed event classification | ||
i did look at p6doc | 07:20 | ||
07:20
wamba left
|
|||
Voldenet | Hmm, It's not very well-documented | 07:20 | |
github.com/rakudo/rakudo/blob/c194...ication.pm | |||
but at least the underlying enums and classes are short ;) | |||
07:21
nadim_ left
|
|||
Voldenet | apparently "event" is FileRenamed or FileChanged, no idea why inotify events like IN_CREATE are not described | 07:22 | |
07:26
skids left
|
|||
fatguy | Voldenet: thanks ! i will use p5 inotify2 for my case | 07:27 | |
07:33
lookatme left,
Sgeo_ joined,
lookatme joined
07:35
Sgeo left
07:36
Cabanossi left
07:38
rindolf joined,
Cabanossi joined
07:47
dct joined
07:48
astj joined
07:49
astj_ joined,
astj left
07:50
astj_ left,
finanalyst left,
astj joined
07:51
geekosaur left
07:52
xtreak joined,
geekosaur joined
|
|||
fatguy | how can i print current line number and namespaces ? | 07:52 | |
07:53
astj_ joined
07:56
astj left,
xtreak left
|
|||
lookatme | Do you mean $?LINE and $?PACKAGE | 07:57 | |
07:57
salv0 joined
|
|||
lookatme | fatguy, it's package, there no namespace. | 07:58 | |
08:02
Sgeo__ joined
|
|||
fatguy | lookatme: yes, how about printing the method ? the $?PACKAGE print the class name, i need to print module name then class , then method for debugging msg purpose | 08:03 | |
08:03
xtreak joined
08:04
Sgeo_ left,
dwarring left
08:05
zapwai left
|
|||
lookatme | fatguy, there are many compile-time variable about that: docs.perl6.org/language/variables#..._variables | 08:07 | |
The method is &?BLOCK | 08:08 | ||
m: class A { method f-print-name( ){ say &?BLOCK; } }; A.new.f-print-name; | |||
camelia | f-print-name | ||
fatguy | lookatme: thanks! | 08:14 | |
08:14
wamba joined
|
|||
lookatme | :) | 08:15 | |
08:15
xtreak left,
AlexDaniel joined
08:16
xtreak joined
08:18
nadim_ joined
|
|||
AlexDaniel | quotable6: ‘perl6-debug’ | 08:24 | |
quotable6 | AlexDaniel, gist.github.com/f23c1cb3afddef7ac0...d8142244ce | 08:25 | |
08:29
xiaoyafeng left
08:32
zakharyas joined
08:35
Cabanossi left
08:38
Cabanossi joined
08:40
Ven joined,
Ven is now known as Guest35264
08:44
zakharyas left
08:45
zakharyas joined
08:47
parv left
08:55
AlexDaniel left
09:01
xtreak_ joined
09:02
xtreak left
|
|||
rightfold | m: (my $foo) = (); | 09:04 | |
camelia | ( no output ) | ||
09:04
Guest35264 left,
sivoais left
09:05
vimal2012 joined,
sivoais joined
09:06
xtreak_ left
09:07
xtreak joined
09:09
xtreak left
09:10
xtreak joined
|
|||
vimal2012 | <:Lt> does not match anything, but <:Lu> matches 'T', 'V', 'M'. Aren't the letters 'T', 'V', 'M' titlecase letters in the following string? | 09:10 | |
p6: "Trump Visits Mexico" ~~ m:g/<:Lt>/ | |||
camelia | ( no output ) | ||
vimal2012 | p6: "Trump Visits Mexico" ~~ m:g/<:Lu>/ | ||
camelia | ( no output ) | ||
vimal2012 | p6: say "Trump Visits Mexico" ~~ m:g/<:Lu>/ | ||
camelia | (「T」 「V」 「M」) | ||
09:10
Ven joined
|
|||
vimal2012 | p6: say "Trump Visits Mexico" ~~ m:g/<:Lt>/ | 09:11 | |
camelia | () | ||
09:11
Ven is now known as Guest39608
|
|||
vimal2012 | None of the 26 Uppercase letters in English match <:Lt>. It looks like English doesn't have titlecase letters? Then what other languages have titlecase letters? | 09:15 | |
moritz | vimal2012: there's a greek title case latter, iirc | 09:16 | |
lookatme | m: say "Trump Visits Mexico" ~~ m:g/<:Lt>/; | 09:18 | |
camelia | () |
|