»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
lue what the heck is @@w supposed to mean? I remember reading not too long ago something about @@ and slices, but I don't know anything beyond that. 02:13
dalek : 1df6eb2 | lue++ | examples/functional/ (7 files):
[examples] fixed most of examples/functional to work with rakudo/nom

The entirety of the fixes include making sure functions returned Bool values when they said they would, flattening where it would otherwise cause infinite recursion, and avoiding redeclaration of variables (how that managed to happen is beyond me). Only monads.pl was untouched, due to an NYI error about typed arrays.
03:04
natureboy hi swarles :] 03:44
swarles hey =] 03:48
sorear hello and welcome, natureboy and swarles. 03:57
natureboy hello, thanks 03:58
mberends \o 03:59
TimToady »ö« 04:01
sorear lue: @@x sounds like something from the Dark Age of Pugs, perhaps 2003 04:02
TimToady was a little later than that 04:03
swarles hello o/
TimToady perl6: say "Howdy doody!" 04:04
p6eval pugs, rakudo 2bac6a, niecza v9-7-g252c6a5: OUTPUT«Howdy doody!␤»
mberends ▷☋◁ 04:05
TimToady a frog with fins?
mberends Iron Butterfly 04:06
TimToady looks kinda like a bat
sorear .u ☋ 04:07
phenny U+260B DESCENDING NODE (☋)
sorear bleh 04:09
.net's async IO model is very un-POSIX-like
they have Select but it's sockets only
other kinds of file descriptors use a stateful request/callback system 04:10
natureboy: swarles: anything we can help you with? 04:11
swarles Nope I'm just here to watch/listern :) 04:11
listen*
TimToady ⊱ö⊰
⊱⍥⊰ 04:12
sorear has little idea what kind of interface to present to Perl 6
natureboy not really, but thanks sorear 04:13
TimToady ⊱⚉⊰ 04:15
decomputing &
natureboy is that supposed to look like "Camelia" ?
TimToady vaguely 04:16
mberends Campelia
mberends sorear: structuring async I/O around callbacks would be useful, to unify with other NCI events (eg GUI input) 04:18
lue severely detests Google's refusal to search symbols essential to any programmer's diet. 04:29
sorear mberends: I think I'm going to shift my month focus to general CLR integration and let someone else worry about API design. 04:32
I don't like API design.
mberends lue: you should look beyond Google, even if only to resist the creation of another kind of monopoly
sorear you should detest Google for other reasons.
mberends sorear: I'll gladly participate in API bikeshedding, but would like to work mainly with example use cases. 04:33
lue I got NoScript to stop Google from the stupid "guess what you want as you're typing" when they brought it to the SSL version. [It severely slows down my connection and makes Google think I'm using a bot to do mass searches!] 04:34
lue investigates other search engines
mberends sorear: I'm very happy that you'll work on CLR integration instead. If you you devise something that goes beyond Zavolaj's NativeCall, it will create many application opportunities for Niecza and throw out a challenge for Rakudo to catch up. Therefore I hope you can make it as VM agnostic as possible. 04:43
lue: I'm not sure 'wormhole' is the best choice of word, could you help me with some possible improvements? github.com/sorear/niecza/blob/mast...mpiler.pod 04:47
lue looks 04:50
mberends that sentence reads better with "Perl 6 virtual world" and "executable real world" as well 04:54
lue instead of wormhole, maybe passageway? [also, I noticed this: "How is the Niecza compiler babby formed?" Are you sure it's babby? ] 04:55
mberends lue: yes, I'm sure. I was hoping for something more cosmic, to spice up the text. 'bridge' is too mundane, 'stargate' too exotic. 04:57
lue
.oO(gateway perhaps?)
04:58
mberends yes, better. how about portal? 04:59
sorear rabbit-hole.
mberends yes, quite nice 05:00
lue I like rabbit-hole, reminds me of Alice in Wonderland (where CLR is real life, and P6 is Wonderland, according to your analogy) 05:01
mberends no, implies similar worlds too much, like wormhole
oh, the looking-glass!
sorear it's not really like a boundary between P6 and real life
and as I said yesterday, rawscall has nothing to do with system calls 05:02
the "s" stands for "static"
"rawcall" calls instance methods, "rawscall" calls class methods
mberends oh, I missed that totally 05:03
sorear CLR makes the distinction
mberends I'd kinda mapped VM to system
mberends ok, that will get a rewrite. I'm really attracted to 'looking-glass', I think it triggers appropriate thoughts. 05:05
sorear DownCall/UpCall is kind of like a wormhole, it's a portal through time 05:06
it allows code compiled using last month's Niecza to call code compiled using the current Niecza, and vice versa (for eval)
mberends I assumed that was only during the bootstrap compile, and that in the next iteration of recompile the versions of caller and callee would be in sync. 05:08
sorear mberends: it would be possible to do it that way, and the release binaries are set up that way 05:09
mberends I like the time travel viewpoint of the bootstrap, that might be worth mentioning more explicitly.
sorear mberends: but for development I only want to build niecza once, which means that "self-compiled" is a bad idea
in ghc/gcc parlance builds from source are always stage1s 05:10
mberends aye, I hacked on Small-C many years ago and had the same self-hosting stability risks
sorear ... "Small-C"? haven't heard of that in ages. 05:11
mberends by James Hendrix, an excellent learning tool 05:12
sorear most of the "stability" problems went away when niecza started running roast
I don't fear that I'm rebooting with a broken niecza
mberends yes, testing++ 05:13
sorear mberends: hrm, I wonder then if CLR interop should be more like Zavolaj or Blizkost 05:20
mberends sorear: so far I've preferred Zavolaj because it's more explicitly declarative 05:21
TimToady literal but non-portable interfaces are okay for building portability layers on top of
mberends sorear: Zavolaj is independent on what lies beyond, for example hooking up PostgreSQL was a breeeze. 05:23
*of, *breeze even 05:26
sorear mberends: preferred Zavolaj over...?
mberends sorear: Blizkost, the other option you mentioned for 'interop like' 05:27
sorear mberends: yeah just wondering where you would have the option to use both 05:29
and goodnight.
mberends 'night
mberends phenny, tell sorear we have the option to use Zavolaj or Blizkost generally when a Perl 5 module abstracts a native library, for example a PostgreSQL or MySQL client. I preferred independence from the effect a Perl 5 layer might have on what is available to the Perl 6 code. In short, call direct. The question for the Niecza interop design is whether you can _always_ interrogate native code to tell you its methods and parameters, or not. I don't think 05:51
you can.
phenny mberends: I'll pass that on when sorear is around.
mberends phenny, tell sorear otoh, CLR is easier to deal with than native code because CLR has Reflection. Calling from Niecza to native code involves jumping through two hoops, CLR and FFI. We don't want the solution to look like Perl 5 XS. 06:03
phenny mberends: I'll pass that on when sorear is around.
lue oh! I was reading up more on the capture sigil (¢) ooc, and found an irc log discussion mentioning ¢'s supposed alternative (@%) used to be @@. So, does that mean @@ is just ¢ ? 06:06
perlhack 用中文 像大家问好 06:08
各位辛苦了
:-)
tadzik good mornings 06:28
man, HPatMoR chapters are coming out at insane pace 06:30
tadzik rakudo: class A { has $!b; submethod BUILD { say $!b } }; A.new(b => 5) # correct? istr it worked 07:15
p6eval rakudo 2bac6a: OUTPUT«Mu()␤»
pmichaud I think the new standard is that private attributes aren't automatically initialized that way. 07:23
(nom implements the new version, ng had the old one) 07:24
pmichaud S12:882 07:25
tadzik rakudo: class A { has $.b; submethod BUILD { say $.b } }; A.new(b => 5) # correct? istr it worked 07:28
p6eval rakudo 2bac6a: OUTPUT«Mu()␤»
tadzik doesn't seem so, unless I miss something
pmichaud I think "rakudo: 07:28
pmichaud I think "rakudo:" now refers to nom. 07:29
tadzik yes, that's what I'm hoping for
pmichaud ng: class A { has $.b; submethod BUILD { say $.b } }; A.new(b => 5) # correct? istr it worked 07:29
b: class A { has $.b; submethod BUILD { say $.b } }; A.new(b => 5) # correct? istr it worked
p6eval b a55346: OUTPUT«Any()␤»
tadzik b needs callsame for that, I believe
b: class A { has $.b; submethod BUILD { callsame; say $.b } }; A.new(b => 5) # correct? istr it worked
p6eval b a55346: OUTPUT«5␤» 07:30
pmichaud b: class A { has $!b; submethod BUILD { say $!b } }; A.new(b => 5) # correct? istr it worked
p6eval b a55346: OUTPUT«Any()␤»
tadzik that doesn't help nom though 07:30
pmichaud well, in nom's case you're overriding BUILD, so you don't get the default BUILD
tadzik rakudo: class A { has $.b; submethod BUILD { callsame; say $.b } }; A.new(b => 5) 07:31
p6eval rakudo 2bac6a: OUTPUT«Mu()␤»
tadzik no, something else's broken
pmichaud rakudo: class A { has $.b; submethod BUILD($!b) { say $.b } }; A.new(b => 5) 07:33
p6eval rakudo 2bac6a: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in submethod BUILD at /tmp/WM9GqkKeFO:1␤ in method BUILDALL at src/gen/CORE.setting:483␤ in method bless at src/gen/CORE.setting:473␤ in method new at src/gen/CORE.setting:458␤ in <anon> at /tmp/WM…
pmichaud rakudo: class A { has $.b; submethod BUILD(:$!b) { say $.b } }; A.new(b => 5) 07:34
p6eval rakudo 2bac6a: OUTPUT«5␤»
pmichaud hmmmmmmmmmm
tadzik I don't like it, again :) 07:41
tadzik I believe BUILD { say $!b } used to Just Work in nom some time ago 07:42
moritz \o 07:56
tadzik o\ 07:56
moritz doesn't that need to be BUILD(:$!b) { say $!b } ?
tadzik I hope not. I don't like easy things hard to do 07:57
I think I'm missing a being
perlhack hi 07:57
tadzik hi perlhack
perlhack hello tadzik,i am ready to get off duty.i wish you have fun. 08:02
woosley what is BUILD used for? just like BUILD in Moose? 08:05
tadzik woosley: I hope it to be, but it seems that it's a different magic 08:06
woosley tadzik: so what is the magic here? 08:09
tadzik woosley: it doesn't work as expected :) The attributes aren't neceserilly set in your BUILD, you may have to do that yourself. I mean, those passed to the .new 08:10
mberends phenny, tell pmichaud the next timing accuracy improvement in Test.pm will be to move $time_before and $time_after assignments out from proclaim() to ok(), is*(), diag() etc, because some of those do lots of work before calling proclaim(). There should be negligible performance impact, but I'd like your opinion before proceeding. Also, there will probably be a few sub-microsecond times soon. We could record nanoseconds instead of microseconds (I pref 08:33
phenny mberends: I'll pass that on when pmichaud is around.
mberends er integers), even though clocks do not have nanosecond resolution (yet).
eiro hello all 08:41
tadzik hello eiro 08:42
eiro i'm trying to use the comments of arguments for doc (pastebin.com/cYwvCGxj)
it sends me the message: ===SORRY!=== 08:43
Whitespace character is not allowed as a delimiter at line 4, near " one of CR"
eiro hello tadzik. i was trying to write my first IA for the farm game. 08:43
AI 08:44
actually it's more like IS (artificial stupidity) 08:45
moritz well, natural stupidity we have more than enough :-) 08:47
tadzik eiro: docs for signatures are NYI 08:49
I may poke that soon, since someone actually needs this :)
lue docs for signatures? What's that? [Or rather, which spec would tell me about it, if it's too long to explain here] 08:51
eiro moritz, i can't just plug my brain to parrot :) 08:54
tadzik, NYI ?
moritz NYI = Not Yet Implemented 08:55
eiro arg :)
ok thanks
moritz lue: S26 allows attaching doc strings to just about anything
lue ohh, now that I know we're talking about doc strings, I can figure out exactly what docs for signatures are. 08:57
.oO(could you attach doc strings to doc strings?)
09:00
mberends lue: :) don't go there... 09:01
tadzik why, yes you can :) 09:02
lue
.oO(#=this is a doc string explaining method foo of class xyzzy. Its purpose is to tell you the purpose of foo)
tadzik rakudo: gist.github.com/1185757 09:03
p6eval rakudo 2bac6a: OUTPUT«Array.new("doc #= double doc")␤»
tadzik documented documentation :)
lue oooh, I didn't know p6eval took files 09:05
tadzik lives 09:06
lue I won't for much longer if I don't go to bed. Good night everyone o/ 09:08
im2ee Could I find somewhere modules which are build in Perl6? 09:33
Like IO::Socket ? :)
mberends im2ee: IO::Socket in built in to Rakudo itself. Modules are here: modules.perl6.org/ 09:34
im2ee I know modules.perl6.org. So, there is no site about modules which are build in to Rakudo? :) 09:35
mberends im2ee: avoid confusion, what is built into Rakudo is not *modules*. The complete set of Synopses describes what *should* be built in perlcabal.org/syn/ and this is the progress so far: perl6.org/compilers/features 09:38
im2ee mberends, ok. Thank You! :) 09:39
mberends im2ee: IO::Socket is specified in perlcabal.org/syn/S32/IO.html 09:40
im2ee Great. :)
mberends im2ee: examples of IO:Socket are github.com/cosimo/perl6-lwp-simple and github.com/mberends/http-server-simple 09:42
im2ee mberends, thanks again. :) 09:43
mberends have lots of fun! :)
finally, a 6model/c raw list implementation is free of memory leaks according to valgrind. Next up, a bigger test suite :) 09:48
im2ee Hmm, some more questions. :) 09:50
What about threading in Perl6? :)
Using fork, or some modules?
And... does exist something like DO (from p5)? 09:51
:
:)
mberends im2ee: not much implemented yet, your can use run('command') or qx(command). I think Niecza has some threading support but not Rakudo. I did create this example using Zavolaj: github.com/jnthn/zavolaj/blob/mast...ix-fork.p6 09:54
mberends im2ee: oops, qx/command/ 09:57
im2ee hmmm.. No problem in total. :)
I'll be glad to help You with Perl6. :)
mberends great! when can you start?
im2ee But ... now I must get to know perl6 better. :) 09:58
I use Perl5 for 1 y (maybe 2), now I'll learn P6. :)
Hmm, I know C too. 09:59
mberends oh good, then you may be able to get involved with Parrot as well.
im2ee Hm, don't now exactly when - but I would as soon as possible :) 10:00
im2ee Where I can find informations about what is to do? :) 10:00
mberends, You wrote Zavolaj? 10:01
mberends im2ee: I am contributor. jnthn++ is the author. 10:02
im2ee Ok. :) 10:03
mberends, Where I can find informations about what is to do? :) 10:04
mberends im2ee: first make sure that you can use Perl 6, (Rakudo, Niecza or both). The try to create your own module to share with the community. Then try to add a Perl 6 language test to github.com/perl6/roast. 10:05
im2ee Hmm, is there maybe a site where I can find information abouts who is working on what? 10:06
im2ee I won't to work on something over which one is working now :) 10:07
mberends im2ee: not really. I recommend searching the logs of this channel at irclog.perlgeek.de/perl6/ 10:08
what would you *like* to work on? maybe I can remember who is interested in similar things. 10:09
moritz im2ee: people generally publish their work early and often 10:12
im2ee: so if something isn't on modules.perl6.org, you can be confident nobody has invested too much time in it
im2ee Hm, maybe for start on something like IRC bot module, etc. 10:15
You know - Im now professional, I hope You it'll be changed ! :) 10:16
And I hope You understand, that I'm not professional. :)
Right? :)
Hi moritz :)
moritz is not professional either :-)
im2ee :)
mberends there are already several people playing with IRC clients, I cannot remember names but that irc log search will find them.
im2ee Hmm, but there is IRC Bot framework, right ? :) 10:17
moritz right, by TiMBuS++
im2ee Net::IRC::Bot
Ok. So .. hm, something else :)
mberends other people often ask for modules to build web applications. There are some incomplete frameworks, they need more love. 10:18
TiMBuS yay im getting attention
mberends :)
moritz TiMBuS: not you, just your module :-)
mberends lol
TiMBuS im2ee, feel free to contribute to make my module suck less
i never added module unloading support! the whole reason i made it modular 10:19
thats a good palce to start
moritz for example you could write a simple bot, and see if you miss any functionality from the framework
or find unintuitive, or so
mberends but please don't point a buggy bot at this lovely channel ;) 10:20
TiMBuS i miss the part where, the bot disconnects if it times out. because i have no async IO or threads >:[
mberends, the last bot someone sent here was a barrel of laughs
mberends oh yeah 10:21
im2ee TiMBuS, I don't thing that Your module sucks. :)
TiMBuS joke please
im2ee think*
TiMBuS thanks im2ee! but you can still probably make it better
im2ee TiMBuS, makeing irc module will be good lesson for me. :) 10:23
Hmm, does my English suck?
mberends nope 10:24
TiMBuS mines worse
im2ee mberends, thanks. :) 10:25
TiMBuS, where are You from? :)
mberends im2ee: :) 10:26
TiMBuS australia. 10:26
im2ee I must say something. This is the most friendly community that I have ever known. :) 10:27
mberends im2ee: thank you 10:28
im2ee No, I thank You. :)
So. :)
I'll learning P6 today. :) 10:29
mberends im2ee: one small thing, English people write 'you' with a small 'y'
im2ee Ok. :)
mberends im2ee: have you installed Rakudo or Niecza yet? It seems a logical first step. 10:30
im2ee I have Rakudo 07.2011 10:30
mberends good. Then also install Panda, as described on the Modules page. 10:31
im2ee i have Panda too. :) 10:31
and i installed some modules :)
mberends impressive :)
im2ee :) 10:32
So. I'm on the good way. :)
a instead of the :)
or? :)
nevermind :)
mberends I guess a, but nevermind 10:33
im2ee Now, I'll write some code which will help me learn the language. 10:35
daxim im2e++ for practicality 10:49
mberends im2ee++ even
im2ee :) 10:50
im2ee $sock.say("JOIN $chan\r") for @channels -> $chan; 11:06
what is wrong? :)
Trashlord uh 11:12
for my $chan @channels;
or 11:13
for my $chan (@channels);
flussence maybe $sock.say("JOIN $^chan\r" for @channels); 11:14
im2ee Works, thanks. :) 11:15
write method on IO::Socket::INET is better, isn't it? 11:19
flussence .write would be better than mixing an explicit \r and implicit \n... 11:23
im2ee flussence, thanks :) 11:24
flussence (having a working &wrap would be better, just make $sock.say do the right thing...)
pmichaud good morning, #perl6 11:57
phenny pmichaud: 08:33Z <mberends> tell pmichaud the next timing accuracy improvement in Test.pm will be to move $time_before and $time_after assignments out from proclaim() to ok(), is*(), diag() etc, because some of those do lots of work before calling proclaim(). There should be negligible performance impact, but I'd like your opinion before proceeding. Also, there will probably be a few sub-microsecond times soon. We could record nanoseconds instead of micr
pmichaud mberends: I'll go with your judgement on this one. 12:00
mberends pmichaud: ok, we'll give it a try. Results so far are encouraging :) I'm curious how Niecza measures up. 12:02
the delay in is_deeply() is probably huge, and nondeterministic 12:04
bbkr_ rakudo: "aa" ~~ /(a)($0)/; $1.say # bug? 12:17
p6eval rakudo 2bac6a: OUTPUT«␤»
moritz yes 12:19
rakudo: "aa" ~~ /(a)($0)/; $0.say
p6eval rakudo 2bac6a: OUTPUT«a␤»
bbkr_ reported 12:20
moritz bbkr_++
tadzik im2ee: good to see you around :) 12:42
PerlJam good * #perl6 12:45
im2ee tadzik, good to see you too. :) 12:57
mls morning perl6! 13:00
If you're interested whay perl6 does when it compiles the setting: www4.informatik.uni-erlangen.de/~ml...ing.out.gz 13:01
It's in kcachegrind input format 13:02
I've patched parrot's runloop to collect call statistics 13:05
bbkr_ rakudo: sub foo ( /abc/ ) { 1 }; foo( Regex ); # bug with method delegation?
p6eval rakudo 2bac6a: OUTPUT«===SORRY!===␤Cannot use a value type constraints whose value is unknown at compile time at line 1, near ") { 1 }; f"␤»
bbkr_ std: sub foo ( /abc/ ) { 1 }; # i don't know what kind of monster is it, but STD allows such declaration, therefore foo(Regex) should delegate 13:07
p6eval std e3c970e: OUTPUT«ok 00:01 123m␤»
flussence mls++
moritz bbkr_: I think it's a limitation in rakudo's current handling of constraints and literals 13:08
flussence (seems like the grammar is the slowest part...)
PerlJam using grammar is always faster than parsing grammar ;) 13:09
moritz mls++ 13:10
lineof is the function that takes the most time 13:11
mls it is? 13:12
I don't see it 13:13
moritz mls: that's what your report says when I sort by the 'self' column in kcachegrind
flussence it's the longest per-call, it only gets called 18k times though 13:14
mls it takes the most ops, but you can switch to 'cycles'
flussence oh, *now* it makes more sense... 13:15
moritz mls: do you know what <cycle 7> as a routine name means?
flussence (.new looked strangely lightweight before)
mls turn off cycle detection
moritz ah 13:16
mls you get a cycle when you do recursion
moritz so post_children takes up a lot of time 13:17
ah, it shows the cycles in in the right window
moritz finally learns how to kcachegrind :-) 13:18
PerlJam attr gets called a lot 13:19
mls: can you patch rakudo to do the same thing but for perl 6 subs/methods? :) 13:20
flussence protoregex appears to be where a lot of the slowness in parsing originates 13:21
im2ee What means Z? (e.g. in @@( <a b> Z <c d> )) And where can I use this? :)
moritz im2ee: it's the "zip" operator
flussence rakudo: say ('a'..'f' Z 1..6).perl 13:22
moritz rakudo: say (<a b c> Z 1, 2, 3).perl
p6eval rakudo 2bac6a: OUTPUT«(("a", 1), ("b", 2), ("c", 3), ("d", 4), ("e", 5), ("f", 6)).list␤»
rakudo 2bac6a: OUTPUT«(("a", 1), ("b", 2), ("c", 3)).list␤»
im2ee Great! Thanks :) 13:24
flussence
.oO( there's also the XZXZXZX operator, but we don't talk about that one here... )
13:26
arnsholt But no XYZZY? =) 13:30
PerlJam we've got Z X R and S I believe so far. Dunno what Y would be. 13:33
oh, and E too 13:35
flussence E? 13:36
flussence only knows the first three
PerlJam S03:2152
flussence aha
im2ee I know only Z :) hah 13:37
Everything is waiting for me.
moritz robey.lag.net/2011/04/30/dissolving...terns.html # seems the Builder pattern could be replaced entirely with named arguments 13:45
tadzik my physics is waiting for me, heh 13:50
moritz wishes tadzik best of luck 13:51
tadzik thanks. For now, I need some best of motivation :)
moritz rakudo: say (my @motivation).elems 13:52
p6eval rakudo 2bac6a: OUTPUT«0␤»
moritz seems motivation is out. Try sense of duty instead.
tadzik hmm, will think about it 13:54
rakudo: say "charmander".chars 13:55
p6eval rakudo 2bac6a: OUTPUT«10␤»
tadzik I liked "nom:", it was short
flussence rakudo: sub prefix:<+~>(Str $s) { $s.chars }; say +~'abcdef'; 13:56
p6eval rakudo 2bac6a: OUTPUT«0␤»
flussence rakudo: sub prefix:<+~>(Str $s) { $s.chars }; say +~ 'abcdef';
p6eval rakudo 2bac6a: OUTPUT«0␤»
flussence hm
rakudo: sub prefix:<+>(Str $s) { $s.chars }; say +'abcdef'; 13:57
p6eval rakudo 2bac6a: OUTPUT«6␤»
flussence
.oO(if only there was a unicode symbol for "number of chars" I could use there...)
13:58
flussence std: sub prefix:<+>(&infix<~>:($a, $b)) { } # I wonder... 13:59
p6eval std e3c970e: OUTPUT«===SORRY!===␤Unable to parse signature at /tmp/ZI_A6jK7jN line 1:␤------> sub prefix:<+>⏏(&infix<~>:($a, $b)) { } # I wonder...␤Couldn't find final ')'; gave up at /tmp/ZI_A6jK7jN line 1:␤------> sub prefix:<+>(&infix⏏[…
flussence nope, too crazy of an idea :) 14:00
std: sub prefix:<+>(&infix:<~>:($a, $b)) { }
p6eval std e3c970e: OUTPUT«Can't create infix:sym<~>:($a, $b): syntax error at (eval 233) line 18, near "qw<~>:"␤syntax error at (eval 233) line 30, near "qw<~>:"␤␤FAILED 00:01 122m␤»
flussence huh, that's the first time I've seen std output an error that didn't end in an ellipsis. 14:01
moritz std: 1 14:06
p6eval std e3c970e: OUTPUT«ok 00:01 117m␤»
moritz that was easy :-)
sorear good * #perl6 14:08
phenny sorear: 05:51Z <mberends> tell sorear we have the option to use Zavolaj or Blizkost generally when a Perl 5 module abstracts a native library, for example a PostgreSQL or MySQL client. I preferred independence from the effect a Perl 5 layer might have on what is available to the Perl 6 code. In short, call direct. The question for the Niecza interop design is whether you can _always_ interrogate native code to tell you its methods and parameters, or not.
sorear: 06:03Z <mberends> tell sorear otoh, CLR is easier to deal with than native code because CLR has Reflection. Calling from Niecza to native code involves jumping through two hoops, CLR and FFI. We don't want the solution to look like Perl 5 XS.
JimmyZ good morning, sorear 14:10
moritz \o
mberends hi sorear. Maybe that should be three hoops - CLR, unmanaged code interop, and then FFI. I'm not sure. 14:36
mberends The best way to find out is probably to attempt to create a working example. I think that would take me at least several hours. 14:39
moritz aren't there CLR-based drivers for most interesting things already? 14:40
mberends yes there are CLR drivers for many things. When designing the overall API, I would prefer not to restrict it that way though. It would be best to be able to access as many different libraries as possible. The most high performance software on Windows is still compiled native (unmanaged) code. 14:48
dalek ecza: d3b0031 | sorear++ | lib/Builtins.cs:
Make sqrt return the *principal* square root in accordance with the spec
14:50
sorear mberends: I'm seeing three general approaches here. 15:02
"Blizkost like": CLR::System::Console.WriteLine("Hello, World");
"Zavolaj like (1)": sub writeLine is clr("System::Console", "WriteLine", "string", "void") { ... }; writeLine("Hello, World") 15:03
"Zavolaj like (2)": sub puts( Str $x ) is native() { }; puts("Hello, World") 15:05
mberends sorear: thinking 15:07
sorear mberends: when you talked about "Zavolaj like", which did you mean?
the tricky part of #0 is getting fully automatic type-directed marshalling to work. #1 can use hints 15:08
mberends sorear: I was thinking of (1)
sorear: I like each one for different reasons, almost want to have them all :) 15:09
moritz how would any of them deal with structs? 15:10
sorear I guess you could have a Perl 6 object encapsulating a struct 15:11
mberends moritz: very good point. we probably should sort out a Perl 6 struct spec out first. It's tricky.
sorear my $t = CLR::System::DateTime.new(0); 15:12
$t.AddDays(5);
CLR::Some::Class.MethodWhichChangesARefDateTime($t);
say $t.ToString(); 15:13
TimToady it sounds like a fancy type-mapping responder interface
mberends there is the risk of being pulled into a "CLR Perl 6" mindset
TimToady yes, we'd like to avoid becoming Perl# 15:14
flussence I was thinking of writing a struct role, but I'm waiting for Bufs + pack/unpack to work reasonably in new master first...
moritz mberends: I think natively typed attributes bring us a long way there, but it might need a custom metaclass (or at least a trait)
mberends structs might have to be specified as a kind of annotation (trait) for opaque data *handwave* 15:15
moritz: this connects back to our recent native types discussion
sorear TimToady: exactly a responder interface 15:16
moritz finds the *handwave* part particularly interesting
sorear ummm, all of you, why are you trying to define structs in Perl 6?
I thought the point of this exercise was to access *existing* code using *existing* types 15:17
flussence I want a nice way to mess with arbitrary binary files too
TimToady existing code uses structs :)
sorear flussence: oh, you said structs, I thought you meant C# structs 15:18
TimToady and it depends on what you mean by "existing types"
mberends talking to SQLite needs structs, that's why Zavolaj cannot atm
TimToady S12 talks about structs
sorear which have ~nothing to do with C structs
flussence I've no idea what C# structs are like, I just assumed everyone meant the C ones :)
JimmyZ how about Link-C like? 15:18
TimToady sorear: the intent is to converge on the C(ish) representation if you use native types 15:19
sorear TimToady: in the C model, every compilation unit defines the struct, so defining structs in Perl 6 makes sense
TimToady S12:702 and S09:129
sorear TimToady: C# structs are defined in one place and referred to by reference only 15:20
TimToady so just different models of unificaiton
*tion
moritz TimToady: what I dodn't like about S09:129 is that attributes are meant to be private/internal 15:21
sorear defining structs in perl 6 code seems to be pointless since we can just refer to the existing structs
TimToady moritz: which is what S12:702 is for 15:21
sorear and moreover, the CLR uses nominal identity - if you define your own struct, it is *not equivalent* to any predefined struct, and is therefore useless for FFI 15:22
TimToady sorear: assuming we can do the typemapping without p6-side hints, sure
moritz TimToady: which isn't quite the same as saying "the order of attribute declarations within the class matter"
TimToady moritz: and there's issues of alignment too, if you get bored with the order :) 15:23
moritz TimToady: right
TimToady we're just trying to make it possible to get there from here, in a fashion that could be efficient someday
and without having to write more than a minimal amount of glue or even hints 15:24
sorear how would you write an anonymous bit-field?
TimToady by using only the sigil? 15:25
TimToady is full of facile answers this morning :) 15:26
TimToady I'm fine with deriving types from external sources though; that's what 'use' is for, after all... 15:29
JimmyZ hopes most java projects in apache foundation will be rewritten in perl 6 eventually ;) 15:30
TimToady and to the extent that XS has taught us anything, it's that it's preferable to have any glue code in one or the other high-level language rather than inventing a 3rd language for it...or at least a 3rd language like XS :) 15:31
the other question is when the glue code (if any) is run, and who runs it? Compile time? Use time? 15:32
mberends TimToady: you answered my question before I had time to finish typing it :)
TimToady the Inline modules point toward 'use' type semantics 15:33
or BEGIN-time even
moritz and afaict they have quite some problems
because they want to run a compiler when you 'use' the module, making it slow and prone to permission errors 15:34
TimToady yes, an internal C/whatever compiler would be less error prone in that sense
we need a language that makes it easy to write parsers :)
TimToady anyway, not really trying to design it all for you; my job is handwaving :) 15:35
TimToady but I see it as mostly a funny kind of unification problem between two type systems, and the rest is details 15:37
maybe I should run for President with a "Yes we can!" motto... 15:38
oh wait, been done
moritz and it was successful
TimToady apologizes for having his brane in sideways this morning
moritz so, good chances for you, TimToady 15:39
TimToady hates both parties, so not much chance of it, even if I were suited for the job, which I ain't 15:40
moritz would certainly love to see a president who's not hungry for power
mberends sorear: do you think you will treat CLR interop and unmanaged code interop as two separate matters, or a single combined one? 15:41
im2ee Maybe you (or we in future :) ) could make site for Perl6 Developers, where each developers can find informations about - tasks (progress, whats to do, what is not completed)? 15:42
Where each developers can write : "I'm working on SOME::MODULE" etc.
He can write about progress etc. 15:43
Or it's unnecessary ? :)
mberends im2ee: several of our members blog a lot
TimToady so far, blogs + github + irc plus project-specific files seems to scale 15:44
tadzik well, if you examine the irc channel you're on, you'll notice that we tend to know who works on what. Note the #phasers meetings too
im2ee Of course, but is it enough mberends ? :)
TimToady but it might be possible to find a better organization for that info
tadzik irclog.perlgeek.de/phasers/2011-08-30
im2ee Hm, right - but on this site would be all in one place :) 15:45
TimToady perlgeek.de is one place
im2ee Hm, ok. :)
TimToady and there's a sense in which these things evolve organically as needed 15:46
it's useful to push such an idea, but if you get too far out in front of the need, then it tends to get bypassed later
we've had lots of bypassed web sites in Perl 6 history
the real trick is to see the need at the point in time where people are ready for it 15:47
im2ee Ok, i'm new. So i didn't know. :)
TimToady well, we need a few visionaires too :) 15:48
*aries
im2ee :) 15:49
mberends im2ee: hope that answered your question :)
TimToady the people who do best here are the ones who are comfortable both with their head in the clouds and their feet on the ground
im2ee Yes. :) Thanks
TimToady and don't mind getting rammed by a few birds from time to time :) 15:50
sorry, told you my brane was in sideways today
im2ee :) no problem 15:51
TimToady should go do something useful instead of imagining impossible things before breakfast 15:52
flussence leaves this here because I seem to keep forgetting about it - gist.github.com/1186468 15:55
tadzik I like the way you think 15:56
moritz flussence: the default .new requires hashes 15:57
flussence: you you probably need my %values = self.^attributes.map(*.name) Z unpack($format, $blob);
im2ee moritz, what means ^? (one?) 15:59
im2ee I saw somewhere it today, but where? :) I forget. 15:59
moritz im2ee: $obj.^method is a method call on the meta class
rakudo: say 1.^method(:local) 16:00
p6eval rakudo 2bac6a: OUTPUT«Method 'method' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤ in method dispatch:<.^> at src/gen/CORE.setting:615␤ in <anon> at /tmp/0jeuZCIm_i:1␤ in <anon> at /tmp/0jeuZCIm_i:1␤␤»
moritz rakudo: say 1.^methods(:local)
p6eval rakudo 2bac6a: OUTPUT«Int Num Rat abs Bridge chr succ pred sqrt base Bool Str␤»
moritz these are methods defined in the Int class, of which 1 is an instance
im2ee Amazing. :) Thanks
im2ee And what means "given"? I can't find it. 16:04
"given $attr.type {"
tadzik it's our switch-case, but better 16:05
tadzik perlcabal.org/syn/S04.html#Switch_statements 16:06
im2ee Thanks! :) 16:07
pmurias sorear: re C# binding, what i would like to have is the ability to use a C# library without writing bindings for the individual functions even if that means an unperlish interface
OTOH a CPAN module might want to specify a nice perlish interface 16:09
pmichaud re-good morning 16:27
mberends re-o/ 16:28
tadzik rehey
pmichaud 13:05 <mls> I've patched parrot's runloop to collect call statistics 16:42
(1) that's really awesome
(2) how is it different from Parrot's profiling runloop?
(other than "it seems to work") 16:43
pmichaud there's definitely a problem with lineof 16:47
looking.
....and I bet that problem is directly related to whatever is slowing down our compilation speed 16:48
because if lineof is having these problems, it implies that there are at least 18K source code objects lying about somewhere. 16:49
(although they might not be exactly clones)
phenny: tell mls would you be able to do the same sort of callgraph analysis for compilation of Rakudo ng's setting? 16:52
phenny pmichaud: I'll pass that on when mls is around.
pmichaud phenny: tell mls it would be really useful to be able to compare the differences between ng and master 16:53
phenny pmichaud: I'll pass that on when mls is around.
dalek odel: b19eb80 | (Martin Berends)++ | c/ (8 files):
odel/c] initial refcount memory manager with tests
17:21
im2ee To write a standard function (like say, print etc.) what i must do? 17:40
It depends on Rakudo?
Or something like standard module? 17:41
pmurias im2ee: what do you mean by a standard function? one which is always avalible in all lexical scopes? 17:43
im2ee Yes. :) 17:44
Which is available in every programs written in p6. :) 17:45
TimToady then it has to be put into the "setting", which is like a Haskell prelude, except we think of it as lexically around the user's code, not in front of it 17:46
tadzik im2ee: what do you plan to do? 17:48
masak oh hai #perl6 17:57
im2ee tadzik, hmm, i have some ideas, but i must learn a bit more. :)
masak eiro: great! looking forward to hearing about your progress!
eiro: as far as I know, I'm the only one who's build such an AI so far. I didn't publish mine yet. (it's very naive) 17:58
Su-Shee call it "young and innocent" ;) 18:01
masak it's very young and innocent. 18:02
Su-Shee let 18:03
let's knit a nice cuddly toy!
masak imagines one knit cuddly toy for each animal type in Little Animal Farm 18:06
Su-Shee which can be automated by your young and innocent AI in need of some cuddly toys!
also, skynet will be fluffed and cuddled into submission.
masak awww 18:08
Su-Shee sees terminator kittens and bunnies. but maybe that was just my three hours at the dentist.. 18:12
masak TimToady: if strings are immutable, and cursors are immutable, and each cursor keeps an $.orig reference, what is it that actually changes when string-emitting macros change the source code? 18:16
im2ee Does exist something like auto-closing file? E.g. i open file, and i forget about close this file on the end of a scope . Does perl close it automatically? :) 18:20
moritz im2ee: it should be closed eventually. It isn't now in rakudo and parrot (known bug) 18:20
im2ee moritz, ok. Fine. :) 18:21
tadzik is it a lack of DESTROY?
masak im2ee: Perl 5 closes it when its variable goes out of score. Perl 6 closes it when the value gets GC'd, which is any time starting from when its variable goes out of scope. :) 18:22
moritz tadzik: mixture of lack of DESTROY and lack of global destruction
tadzik mhm
masak I don't know if I've posted "Enough is Enough: A Thinking Ape’s Critique of Trans-Simianism" here before... but it seems many in here would like the tone of that text. 18:45
it's even slightly on-topic if you believe Perl 6 will have a hand in the Singularity :P 18:46
TimToady we're working toward the Plurality instead... 18:46
lue hello planet o/ 19:22
colomon \o
TimToady plant o/ greets you 19:23
*planet
lue TimToady: I noticed the P6 cheatsheet is no longer at wall.org/~larry/cheatsheet [had to use the Wayback Machine to get it] 19:27
pmichaud it should be in the perl6 repo somewhere 19:28
lue makes sense /me checks
TimToady okay, should be there now again (been restoring things piecemeal since a headcrash) 19:29
lue yep, it's in the mu repo. And TimToady++ for getting it back online (sometimes typing in a simple URL is faster than a dig through the mu repo) 19:32
TimToady I note that 'slice' should now be 'lol' 19:35
lue suddenly knows a bit more about what 'slice' used to mean, thanks to the new, more descriptive name 'lol' 19:46
pmichaud I'm having a hard time finding the time spent in 'lineof' as claimed by mls' kcachegrind file 20:37
pmichaud what do the counts represent, ooc? 20:39
im2ee Have to go, bye! :) Have a nice day
or night :)
tadzik o/ 20:40
flussence does anyone know what happened to that old spec graph that used to be on the rakudo site? I remember seeing it a long time ago, dunno if it's been lost since 20:53
pmichaud some of the internals changed, so it was left to bitrot 20:54
i.e., we could no longer keep the totals up to date reliably
the program that created those graphs is tools/progress_graph.pl 20:55
er, tools/progress-graph.pl
flussence yeah, just curious to see what it looked like so I can tell if I missed anything important on my ones... :)
pmichaud oh, I have some old graphs in slideshows
just a sec
pmichaud.com/2009/pres/oscon-rakudo...lide6.html 20:57
there's an example.
flussence that looks like it, thanks
pmichaud also: pmichaud.com/2009/pres/images/rakud...-04-17.png 20:58
tadzik there was one in my talk too 20:59
github.com/tadzik/Perl6-slides/blo...ogress.png 21:00
flussence I'm not entirely sure what the regr(ession)? number is on those old ones, I've looked at the code too...
cognominal___ sacré faciste de Callaghan! sur France 3 21:13
*fasciste 21:14
cognominal___ il suffit qu'il se promène dans le quartier chinois de SF pour qu'il y ait un hold up 21:16
tadzik ww? 21:17
cognominal___ oops 21:18
wrong channel, again :(
tadzik happens to the best of us :)
flussence (meanwhile, some other channel is getting a long essay about hyperoperators...) 21:19
tadzik an actual laughter was produced, aloud 21:19
flussence++ # plain 'lol' is not sufficient these days 21:20
TimToady laughed out loud really == lolr, and then we can quantify it with lolr(1) 21:27
sjohnson heh 21:27
$self->_lolr == 1
tadzik look ohead?
fatface!
pmichaud just _knows_ that we're going to end up with a .lolr contextualizer now. 21:28
probably instead of .tree(1) :-)
tadzik ( `ー´) 21:29
gets me every time :)
sjohnson heheh 21:30
Sparky_ natureboy: hi 21:36
natureboy Sparky_: hi 21:36
Sparky_ i l y l o l =]
natureboy swarles: people probably think we come in a package or something
swarles hahaha 21:37
TimToady, what text editor do you use?
sjohnson he uses vim! 21:38
swarles I thought so haha 21:39
sjohnson too
swarles I could never get into vi because im not good with the key triggers or whatever you would call them
Sparky_ it just takes some getting used to 21:40
i use nano for my text-ui editor
gedit or kate for my gnome one
swarles nano is very easy to use, i use it as well 21:41
sjohnson after a long learning curve with vi 21:48
you become convinced that it is the best way to write code
swarles I have heard that a lot, why is that? 21:49
tadzik I had a moment of enlightenment when I realized that typing itself cannot be optimized really much. It's the editing, jumping through the document that the time is wasted on. vim changes that
Sparky_ 􏿽xF6.􏿽xF6 21:50
swarles Does it let you jump to certain code blocks or something? 21:51
I'll have to look it up
tadzik well. You can really easily jump for example 3 words forward. Or to the next opening bracket. To change the word on the cursor and nothing else
flussence typing can't be optimised, sure, but vim's drawing of those chars to screen leaves a lot to be desired... 21:52
tadzik I don't think I understand
flussence on my netbook the vim process tends to average 10% cpu just editing perl6 code 21:53
tadzik oh, I think our hilighting is a bit less than awesome in that sense
but I won't really seek vim's fault in that
flussence (anyone feel like writing a vimscript LLVM backend? :) 21:54
cognominal___ tiens on voit la voie rapide détruite par le tremblement de terre sur France 3 21:55
tadzik hehe 21:56
cognominal___ Callaghan fait son jogging sur Embarcadero
sjohnson swarles: if if you're wondering why that is, then.. simply because when you get fast at doing what Vim can do with your fingers 22:00
it's just so much slower doing the same things in things like notepad, or nano
jump around, copy blocks of code quickly, delete lines quickly, and a hundred other things 22:01
swarles I'm trying it out right now, I'm reading a tutorial on it as we speak ^.^
donri a very strange enchanted boy.. 22:02
sjohnson swarles: took me many months to get used to using it
it has a steep learning curve, so try not to become too frustrated
also, i have found that setting up a .vimrc with simple macros to make qutting easier essential for my piece of mind 22:03
map :Q! :q!
shit like that
swarles o.o
swarles :ZZ is quit and save right 22:03
?
flussence no, you can just write ZZ for that 22:04
or :x
swarles oic
I'm making sure that i read the tut carefully, because i know if i deviate i'll get mad when it doesnt work, haha
donri vim is best at editing, emacs at everything else
sjohnson my favourite custom mapping is: map q :q<CR> 22:05
i even read someone else figured that out, and even posted a blog about it
jasonmay do you have recording mapped somewhere else? I am intrigued
donri yehudakatz.com/2010/07/29/everyone-...was-wrong/ mandatory reading 22:06
tadzik I have a feeling that people are talking about vim a bit too much 22:07
donri because they are... vimpy. 22:08
sjohnson jasonmay: you mean, do i have my mappings online somewhere? 22:10
lue I for the record use emacs as a secondary OS :) [remote editing and archive viewing go!, to name a couple of great things]
tadzik I use mc for that :)
lue I tried vim (for, what, a minute, long time ago) and didn't like it too much (in particular the need to switch into an editing mode to do anything). There was something about emacs though that made me stick with it. 22:14
[Now if only I were allowed to change my Caps Lock key to Ctrl...]
donri modal editing is effective if you can manage to train yourself to defer fixing errors to after you're done inputting, for example 22:18
i.e. stay in one mode longer instead of switching all the time between editing and inserting
felher lue: Well, most of the vim users love vim for its two modes. One may very well remap some key to escape though, so one doesn't have to leave the home-row for leaving insert-,command-,visual-mode. 22:19
donri ^C works for leaving insert mode
lue O.o 22:20
donri i rarely ever use escape in vim
djanatyn lue: You're not allowed to change your capslock key to control?
felher donri: well, yeah. But just for leaving. It is not the same as <esc> since it behaves quite differently. 22:21
TimToady I use CTRL-[, and I do have my capslock remapped
donri felher: in deed
TimToady so I don't leave the homerow to escape
djanatyn remapped his capslock key to ctrl
donri ^[ is like insanely complicated to type on a swedish keyboard
lue I think my keyboard is wired to not allow remapping Caps Lock. On Apple keyboards (at least this powerbook's), the CapsLock LED is in the key itself, which tells me the functionality is hardwired
donri ctrl+altgr+9
TimToady lue: not necessarily 22:22
lue [Trying to remap results in a dead Caps Lock key that does nothing] 22:22
TimToady I've had capslock keys like that that remapped fine 22:22
lue Or perhaps I haven't been doing it right :)
TimToady the light went on or off every other time though :)
felher just did :imap fj <esc>. fj is very fast to type, one does not have to leave the homerow and i never had to realy insert fj.
djanatyn just used xmodmap
sjohnson TimToady: is your capslock remapped to ESC? 22:23
that's why i do
TimToady no, it's ctrl, like it oughta be :)
lue (other items on my keyboard agenda include learning Dvorak (just for the heck of it, haven't decided between English or Programmer), and designing my own keyboard
sjohnson i find it much easier for my left pinky to hit the caps
as ESC, that is
TimToady I switched to vi because emacs was wearing out my left pinky 22:24
lue I'd love to avoid the "Emacs Pinky" by CapsLock -> Ctrl. [as soon as my computer is done with the mass upgrade, I'll try all that again]
(Not that I've had "emacs pinky" yet, I'm not a shortcut-maniac)
sjohnson so far i'm the only guy i know who uses CAPS -> Esc for blissful vi editing
though one girl at work who doesn't use Vi still does it, and she said it's rocking her world. going over to her computer to do stuff is blissful cause it's just like my setup
donri i have caps as compose in x11 22:25
lue
.oO(The world would be much better off with clicky noise-making Space Cadet keyboards...)
22:26
plobsing you people must be really smart. My mind can never output sufficiently fast to put any kind of strain on my hands.
TimToady lue: not when you have an SO trying to sleep
pmichaud I've mapped individual pixels on the top row of my monitor to input characters, so that clicking at e.g. 0,65 sends an "A". Thus I can enter up to 1920 unique characters all with a single button. :-P
felher pmichaud: :D awesome idea! 22:27
lue perhaps s/The world/I/ then (or s/The World/Some/)
felher someone really should imlement a virtual-keyboard working that way :) 22:28
lue .oO[You quickly run out of buttons on a kb when you want to assign them to middle click, right click, compose, and uim/anthy] 22:29
felher lue: Yeah, but as pmichaud statet: With 1920x1080 res, mapping the first row of pixels of your screen to characters gives you 1920 characters :D If you use left,middle,right, even 5760 :) 22:31
lue rakudo: my $pixels = 1024 * 768; my $unicodechars = 0x110000; say ?($pixels >= $unicodechars); 22:33
p6eval rakudo 2bac6a: OUTPUT«Bool::False␤»
lue ponders an -Ofun keyboard 22:35
donri typematrix.com/
lue I'll check that in more detail later (curse thee inadequate CPU!), but looks cool. [My favorite from looking for fun so far is Das Keyboard] 22:39
TimToady lue: if you have a color screen you can count each pixel 3 times :) 22:46
rakudo: my $pixels = 3 * 1024 * 768; my $unicodechars = 0x110000; say ?($pixels >= $unicodechars);
p6eval rakudo 2bac6a: OUTPUT«Bool::True␤»
lue I would love to see a Unicode keyboard (0x110000 keys, all produce a different character) 22:47
natureboy what is ?() ?
TimToady ? is a prefix operator that is the opposite of ! 22:48
so like !! in Perl 5
natureboy oh, that's convenient
donri rakudo: say 3 >= 2 22:49
p6eval rakudo 2bac6a: OUTPUT«Bool::True␤»
donri rakudo: say 1.Bool 22:50
p6eval rakudo 2bac6a: OUTPUT«Bool::True␤»
donri rakudo: say 0.Bool
p6eval rakudo 2bac6a: OUTPUT«Bool::False␤»
donri and of course "??" is the same as "!" (but only on a certain day in april) 22:51
TimToady "yeah, sure." <-- double positive 22:56
donri "do you mind" "yes of course!"
TimToady "You can say that again." === "That goes without saying." 22:57
lue
.oO(really unsure people should use the ???????????? prefix)
donri theoatmeal.com/comics/literally 22:58
TimToady perl6: ???????????
p6eval rakudo 2bac6a: OUTPUT«===SORRY!===␤Found ?? but no !! at line 1, near "???"␤»
..niecza v9-8-gd3b0031: OUTPUT«===SORRY!===␤␤Prefix requires an argument at /tmp/j9VGcHPr8v line 1 (EOF):␤------> ???????????⏏<EOL>␤␤Parse failed␤␤»
..pugs: OUTPUT«*** ␤ Unexpected "???????????"␤ expecting program␤ at /tmp/jnKDHxFXH6 line 1, column 1␤»
lue
.oO(I *literally* destroyed Jupiter when I saw that link to theoatmeal)
perl6: my $a = 3; say ????????????$a; 22:59
p6eval pugs: OUTPUT«*** ␤ Unexpected "????????????$"␤ expecting bare or pointy block construct, ":", identifier or operator␤ at /tmp/nS3U9Fktti line 1, column 16␤»
..niecza v9-8-gd3b0031: OUTPUT«===SORRY!===␤␤Expecting a term, but found either infix ?? or redundant prefix ?␤ (to suppress this message, please use space between ? ?) at /tmp/fL5Vlc1Ix5 line 1:␤------> my $a = 3; say ????????????⏏$a;␤␤Parse failed␤␤…
..rakudo 2bac6a: OUTPUT«===SORRY!===␤Found ?? but no !! at line 1, near ";"␤»
donri oh wait ??!! is the ternary right?
otherwise the rakudo error was hilarious
TimToady and ??? is a listop
lue Darn. I was kinda hoping you could stack the ?'s ... [for no other reason than because you can, so it's not a loss] 23:00
TimToady perl6: ? ? ? ? ? ? ? ? ? 42
p6eval pugs, rakudo 2bac6a, niecza v9-8-gd3b0031: ( no output )
TimToady perl6: ??? ??? ??? 23:01
p6eval rakudo 2bac6a: OUTPUT«Could not find sub &warn␤ in <anon> at /tmp/9Fog6nNLRc:1␤ in <anon> at /tmp/9Fog6nNLRc:1␤␤»
..pugs: OUTPUT«*** Cannot cast from VUndef to GHC.IO.Handle.Types.Handle (VHandle)␤ at /tmp/RudZp1qt_6 line 1, column 9 - line 2, column 1␤»
..niecza v9-8-gd3b0031: OUTPUT«Unhandled exception: >>>Stub code executed␤ at /tmp/pQUH5dzr4l line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2045 (CORE C954_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2046 (CORE module-CORE @ 57) ␤ at /home/p6ev…
donri perl6: ! ? ! ! 0 ?? 1 !! 0
p6eval pugs, rakudo 2bac6a, niecza v9-8-gd3b0031: ( no output )
lue What does work though (and I've used it a couple of times) is !?$a 23:02
donri 2bac6a "oh that one"
chewbacca
donri lue: what be the point though? 23:03
TimToady not so $a # much more poetical 23:04
lue To boolify the variable and negate it (I honestly can't recall why I do it, but I recall having good reason to)
rakudo: my $a = 1; say "hi" if not so $a; 23:05
p6eval rakudo 2bac6a: ( no output )
lue Although from I've read here just now !$a would do the same thing (i.e. the ? is redundant). I still like the look and clarification of !?$a :) 23:06
TimToady rakudo: if False == so not True { say so True } 23:07
p6eval rakudo 2bac6a: OUTPUT«Bool::True␤»
lue :D 23:08
.oO(only in P6...)
donri rakudo: say .WHAT
p6eval rakudo 2bac6a: OUTPUT«Any()␤»
donri rakudo: .say given * 23:09
p6eval rakudo 2bac6a: OUTPUT«*␤»
lue I'm also still searching (passively however) for a suitable English translation of %_
donri topical pair map! 23:11
natureboy what are the "postcircumfix" methods?
lue [$_ -> it, @_ -> them, %_ -> ???, &_ -> ???, ¢_ -> ???]
donri punctuation that goes around something, after something else
f.x. calling() is i think postcircumfix:<()> 23:13
the parenthesis are "post" the identifier and "circum" the arguments
natureboy i see 23:14
TimToady lue: there is no ¢, you've been reading ancient documentation 23:16
lue it's mentioned briefly in S08, as well as its ASCII equivalent @%
donri %_ -> "the respective"?
TimToady "thus" 23:17
donri ah
lue
.oO(get all the key-value pairs of thus)
donri "thus get all the facts"? :) 23:18
lue I really like P6 because at times it feels like a natural language, almost as if a linguist designed it... 23:20
TimToady as if an almost linguist designed it, you mean :)
lue I agree with the "it's not a first language, it's a last language" sentiment. You'll never not want to use P6 once you know it. 23:22
donri a language to last 23:26
lue
.oO(It's also the only language with a lol type) There should be a grand list of "cool things about P6", where everyone adds a particularly amazing/cool/fun feature they've found
23:30
lue afk 23:38
[Coke] . 23:52