»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
buggable New CPAN upload: AttrX-Mooish-v0.2.1.tar.gz by VRURG modules.perl6.org/dist/AttrX::Mooish:cpan:VRURG 00:11
buggable New CPAN upload: AttrX-Mooish-v0.2.2.tar.gz by VRURG modules.perl6.org/dist/AttrX::Mooish:cpan:VRURG 00:31
lindylex What is back refference in Perrl 6? 01:39
WHat does the variable look like? 01:40
This is what I am trying? say "The first occurrence of a double letter ".match( / :i\w\1+ /, :global);
This returns an empty list : say "The first occurrence of a double letter ".match( / :i\w$0+ /, :global); 01:41
lookatme_q m: say "The first occurrence of a double letter ".match( m:i/ (\w) $0+ /, :global); 01:43
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block <unit> at <tmp> line 1
Cannot resolve caller match(Str: Nil, :global); none of these …
lookatme_q m: say "The first occurrence of a double letter ".match( m:i/ (\w) $0 /, :global); 01:44
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block <unit> at <tmp> line 1
Cannot resolve caller match(Str: Nil, :global); none of these …
lookatme_q m: say "The first occurrence of a double letter ".match( /:i (\w) $0 /, :global); 01:45
camelia (「cc」
0 => 「c」 「rr」
0 => 「r」 「tt」
0 => 「t」)
lookatme_q lindylex, you should capture them first
m: say "The first occurrence of a double letter ".match( /:i (\w) $0+ /, :global);
camelia (「cc」
0 => 「c」 「rr」
0 => 「r」 「tt」
0 => 「t」)
lindylex lookatme_q : thanks! 01:48
lookatme_q m: say "ccc".match( /:i (\w) $0+ /, :global); 01:53
camelia (「ccc」
0 => 「c」)
lookatme_q m: say "ccc" ~~ m:ig/(\w) $0+ /;
camelia 5===SORRY!5=== Error while compiling <tmp>
Adverb ig not allowed on m
at <tmp>:1
------> 3say "ccc" ~~ m:ig/(\w) $0+ /7⏏5;
lookatme_q m: say "ccc" ~~ m:i:g/(\w) $0+ /; 01:54
camelia (「ccc」
0 => 「c」)
lookatme_q lindylex, and it's recommend to using `~~`, the smart match operator
lindylex lookatme_q : is there in any advantage to it over match> 01:56
?
lookatme_q hmm, easy to type ? 01:56
lindylex Ok
lookatme_q yeah, short than the match, and I think most of people love it 01:57
uzl GN, #perl6! 03:52
benjikun night uzl 03:56
uzl Sometime ago I came across a small line of code to get a function's signatures in the REPL. That was pretty neat but I forgot all about it. Any idea of what that might look like? 03:57
uzl Hello, benjikun. 03:57
benjikun uzl: It's just &callable.signature 04:16
docs.perl6.org/type/Signature 04:17
uzl I'm pretty sure it looked quite different. For example, if called on join, it would list all join's signatures as listed here (docs.perl6.org/routine/join). 04:25
Geth doc: 4db318750f | (David Warring)++ | 3 files
describe .pick(*) as shuffling
05:42
doc: dc5bd2b1bf | (David Warring)++ (committed using GitHub Web editor) | doc/Type/Setty.pod6
typo
synopsebot Link: doc.perl6.org/type/Setty
doc: ba59def9df | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | 3 files
Merge pull request #2261 from dwarring/pick-star--aka-shuffle

describe .pick(*) as shuffling
xinming timotimo: Yesterday, I tried with newest version of rakudo, And I found we that bug is fixed in newest rakudo. 06:13
I mean, I compiled newest rakudo yesterday, and test it today. :-) 06:14
JJJ Hi everyone 06:39
JJJ I think this chatroom is as dead as the perl language 06:40
ouch!
SHODAN cool 06:41
benjikun No 06:45
Right now is #perl6's least active time of day
On squashathons / When people need help, people chip in more 06:46
tyil .tell uzl Do you mean .candidates? docs.perl6.org/type/Routine#method_candidates
yoleaux tyil: I'll pass your message to uzl.
tyil its late in USA, but early in EU
and many people are currently moving or attending the perl conference in glasgow 06:47
benjikun ^
lookatme_q JJJ, here is Perl 6
benjikun I'm in the US, but I'm one of the few of North American perl6 users that stay up this late ... lol
JJJ Sorry guys 06:48
benjikun Is there a diagram for all Perl6 types? 06:49
That'd be nice
tyil all types, I dont think so 06:50
benjikun well
I guess we could use the one generated on the `Any` page
tyil you can get the graph for a certain type on its page in the docs
benjikun yeah, I know
It'd be nice to have a big render of all of the main core types
docs.perl6.org/images/type-graph-Any.svg 06:51
tyil yea
I think thats it
was about to post it myself :p 06:52
benjikun Mhm
tyil seems to contain pretty much everything
benjikun Not very appealing zoomed out
contains all of the meta stuff
Geth perl6-most-wanted: e80f400304 | Michael++ (committed using GitHub Web editor) | most-wanted/modules.md
Update modules.md

Removed API::USNavalObservatory from list of Most Wanted Modules, as it is now in the ecosystem.
07:09
tyil looking through that list of most-wanted, I see File::pushd, and I already have IO::Path::Dirstack, implementing popd/pushd. Perl 5's File::pushd seems to keep a stack for each scope, and resets the stack once the scope is exited 08:04
if anyone can give me pointers how I could do the latter part in Perl 6, I'd gladly implement it in IO::Path::Dirstack 08:05
benjikun I think you'd have to do some weird wrapping stuff, considering P6 doesn't have a destructor method 08:16
hmm
tyil I'd probably need something that gets called when a new block is entered, and exited 08:23
benjikun tyil: Yeah :/ 08:31
There's ought to be some way to do it, I'm sure
not coming to my mind though 08:32
tyil same
but if anyone reads this and knows an answer, do let me know :>
or poke me at the perl conf tomorrow
I'll afk for a bit 08:33
lizmat_ and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/08/14/...m-glasgow/ 10:29
araraloren so the spam robots will try to send message when they join the channel ? 10:39
Altreus lizmat: is there inherent value in linking to a reddit link to medium? 10:45
I don't know how to make that question not sound snarky
sorry -_-
lizmat Altreus: not sure what you're referring to
lizmat don't know how not to sound dumb :-) 10:45
Altreus the link Small stuff #5: Gather around, it’s time to get lazy (…but why?) by Jo Christian Oterhals links to reddit 10:46
but that just links to medium
lizmat ah... copy_pasto
Altreus it's medium.com/@jcoterhals/perl-6-smal...20fdb18a3b
lizmat will fix
Altreus :)
I wondered if maybe you meant to link to the comments thread
Altreus the web is way more confusing than it once was 10:47
lizmat yeah... and I'm suffering from an oncoming flu as well.. so I'll be going back to bed for some more rest shortly 10:50
Altreus oh no 10:52
get well soon!
or else :P
lizmat :-)
aye aye!
afk& 10:54
Altreus we're making a discord bot framework called Yxmi and I can't decide whether it should be Discord::Yxmi, Bot::Discord::Yxmi, Framework::Discord::Yxmi, or other 11:10
Bot:: has perl5 precedence but it's not a runnable bot
well I guess it could be
I think I answered my own question 11:11
;d
:D
xq Discord::Bot::Yxmi
Altreus really? :x 11:27
Altreus is there prior art for Tech::Wossname::Name as opposed to Wossname::Tech::Name? 11:27
tadzik hmm 11:28
github.com/tadzik/Geo-Coder-OpenCage is the opposite prior art by yours truly :)
tadzik then again, it's not uncommon for "named" frameworks to just have their own namespace 11:29
you don't have WWW::Framework::Catalyst
pmurias with frameworks having cute names instead of sensible hierarchical ones kind of makes sense because a whole lot of them are contending for the same spot 11:31
sjn 11:51
sjn is looking forward to the Perl Conference in Glasgow :) 11:51
Altreus tadzik: right, but this is a new ecosystem so we can start doing it right 12:51
pmurias Altreus: Geo::Coder::OpenCage seems to make more sense then OpenCage::Geo::Coder 13:01
pmurias Altreus: especially if all the Geo::Coder::* modules have compatible API 13:02
tadzik Altreus: true 13:07
itaipu p6: say 3; 14:57
camelia 3
araraloren_ How can I call a method in a base role ? 15:04
jnthn self.RoleName::method() 15:05
moritz self.method or self.Role::method
araraloren_ m: role B { method f() { "called".say; }; }; class C does B { method f() { "IN C".say; self.B::f(); }; }; C.new.f
camelia IN C
called
araraloren_ I mean this
m: role B { method f() { "called".say; }; }; class C does B { method f() { "IN C".say; self.f(); }; }; C.new.f
camelia (timeout)IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C
IN C…
15:06
araraloren_ I implement a new version in C, but I want call the f in B
Is this the only way ?
why nextsame is not working
m: role B[::T] { method f() { "called".say; }; }; class C does B[Int] { method f() { "IN C".say; self.B[Int]::f(); }; }; C.new.f 15:07
camelia 5===SORRY!5=== Error while compiling <tmp>
Confused
at <tmp>:1
------> 3 { method f() { "IN C".say; self.B[Int]:7⏏5:f(); }; }; C.new.f
expecting any of:
colon pair
araraloren_ And Is there a way call the method of a paramterized role
araraloren_ m: role B[::T] { method f() { "called".say; }; }; class C does B[Int] { method f() { "IN C".say; self.^roles[0].f(); }; }; C.new.f 15:08
camelia IN C
called
araraloren_ m: role B[::T] { method f() { dd self; "called".say; }; }; class C does B[Int] { method f() { "IN C".say; self.^roles[0].f(); }; }; C.new.f
camelia IN C
B[Int]
called
araraloren_ m: role B { method f() { dd self; "called".say; }; }; class C does B { method f() { "IN C".say; self.B::f(); }; }; C.new.f 15:08
camelia IN C
C.new
called
araraloren_ seems like not working 15:09
jnthn m: role B[::T] { method f() { "called".say; }; }; my constant \BInt = B[Int]; class C does BInt { method f() { "IN C".say; self.BInt::f(); }; }; C.new.f 15:10
camelia IN C
called
jnthn You just need to arrange of a syntactically valid name to use in the qualified call 15:11
*for a
araraloren_ oh, great 15:11
thanks jnthn
jnthn And nextsame won't do it because roles do flattening composition, not inheritance 15:12
jnthn So from a dispatch point of view it's as if the role method never existed if it's replaced. 15:12
araraloren_ so, where the method f in the role ?
we have a f in C, where the method f in B ?
jnthn In what sense? For introspection? 15:13
jnthn Roles are generic, and are made concrete per composition 15:13
The concretizations are stored in the meta-object for the class 15:14
That's how they are resolved to the self.Foo::bar calling form
araraloren_ I just curious :)
jnthn We can't actually call the method declared in the role directly because it's generic
araraloren_ oh 15:14
jnthn So there's quite a bit going on behind the scenes to make self.SomeRole::foo work 15:15
araraloren_ sounds cool
jnthn (Though thankfully since I stuck a spesh plugin there to optimize it, the calls are actually fast, whereas a few months ago they were 12x slower than normal method calls :))
araraloren_ yeah, I have seen the post long time ago :) 15:17
great job, jnthn ++
El_Che spam seems to be gone for now 15:28
buggable New CPAN upload: Sparrowdo-VSTS-YAML-Cordova-0.0.6.tar.gz by MELEZHIK modules.perl6.org/dist/Sparrowdo::V...n:MELEZHIK 16:11
Xliff \o 16:48
Does anyone know how a NativeCall binding to a va_list parameter would work? 16:49
Juerd Whoa :) 16:51
Xliff Juerd: ? 16:53
Juerd Xliff: Ambitious :)
Xliff Oh. va_list?
Juerd Yea
Xliff I don't think I can do it natively.
It would have to be a NativeCall mechanism.
mainly because everything I've seen says that va_list needs macros va_start and va_end and so on. 16:54
So after thunking on it (LOL) this might need to be a MoarVM thing.
Juerd: Can't write bindings for some of the features in GTK without it. GTKListStore for example. 16:55
Juerd I understand 16:56
Xliff So, I take it no one has tackled this? 16:57
Geth ecosystem: 190a8350f0 | (Zoffix Znet)++ (committed using GitHub Web editor) | META.list
Move Toaster to p6cm
tobs Xliff: fwiw I remember it being discussed recently colabti.org/irclogger/irclogger_log...06-17#l683 16:58
Xliff tobs++
LOL! I was actually online and idle at that point. 17:03
Why can't MoarVM wrap va_start and va_end? 17:04
va_list, va_start and va_end are defines, and couldn't a function match those? 17:05
Might be interesting to try and compile an .so and see if that works.
timotimo difficult to use a function for that because you call a function, and that gives you a call frame for that rather than the callframe for the function you're using the va_ functions from 17:07
Xliff OK. I will have to look around and see if there are alternatives in the GTK spec. 17:10
Thanks.
b2gills m: use NativeCall; sub c-printf-II (Str,int32,int32 --> int32) is native is symbol<printf> {}; c-printf-II('%d/%d',1,3) 17:13
camelia 1/3
sumandoc Here is gist with C file containing 3 functions. When I write functions with nativecall in perl 6, for each function I am doing "is native(shared_library)". Is there any way to avoid doing this duplication 17:46
gist.github.com/sumandoc/8b20c1b0e...671833974f
sumandoc Everytime for each function I have to write "is native trait" for each function. 17:47
jnthn Declare a constant to hold shared_library and use the constant
sumandoc jnthn Still after declaring constant, is native trait will be in each function. 17:50
sumandoc jnthn Any link I can look for this? 17:50
xinming m: my $x; $x ~~ 20|rx/3\d/ 17:51
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block <unit> at <tmp> line 1
xinming m: (20 ~~ 20|rx/3\d/).say; 17:52
camelia True
xinming m: (30 ~~ 20|rx/3\d/).say;
camelia True
xinming m: (40 ~~ 20|rx/3\d/).say;
camelia False
SmokeMachine m: say False ?? "foi!!" # is this a LTA error? 19:17
camelia 5===SORRY!5=== Error while compiling <tmp>
Your !! was gobbled by the expression in the middle; please parenthesize
at <tmp>:1
------> 3 False ?? "foi!!" # is this a LTA error?7⏏5<EOL>
geekosaur yes, its guessing wrongly as to the cause of the syntax error 19:39
buggable New CPAN upload: Test-HTTP-Server-0.3.0.tar.gz by SCIMON modules.perl6.org/dist/Test::HTTP::...pan:SCIMON 19:41
Geth doc: 81678327ad | (JJ Merelo)++ | doc/Type/Iterable.pod6
Reflows, add markup
20:41
synopsebot Link: doc.perl6.org/type/Iterable
doc: 5a3133bc02 | (JJ Merelo)++ | 3 files
Minor changes and reflow
xinming_ What are the differences between callwith and samewith?
timotimo one calls, the other more or less "gotos"s 20:42
so a "callwith" will return 20:43
Altreus I seem to have come a cropper of the fact that two enums in the same scope have to have unique member names 20:49
I sort of assumed the symbols defined by the enum would be sort of namespaced to the enum
so enum Foo ( <quux quack> ) would be referred to as Foo::quux 20:50
timotimo i think it's magical; if you use them without their namespace they get exported if there's no conflict? or something?
m: enum Foo <quux quack>; say MY::.keys
camelia (quack $?PACKAGE $=pod $=finish $/ ::?PACKAGE !UNIT_MARKER Foo quux $¢ $! $_ EXPORT GLOBALish)
timotimo m: enum Foo <quux quack>; enum Bar <quux qook>; say MY::.keys
camelia Potential difficulties:
Redeclaration of symbol 'quux'
at <tmp>:1
------> 3m Foo <quux quack>; enum Bar <quux qook>7⏏5; say MY::.keys
($/ quack quux qook Foo $=finish $=pod !UNIT_MARKER $¢ Bar $! $_ EXPORT ::?PACKAGE GLOBALi…
timotimo oh, ok
xinming_ Is it possible to manually get the nextsame code? 20:57
xinming_ I mean, get the ref to it, then, later, we call it by hand. 20:57
timotimo hm, i don't think so. what happens if you just return a block that does "nextsame"? 20:58
xinming_ I'll try. 20:59
Because I found, that when we use next same, it seems, rakudo get mixed with next method where I take the snapshot. 21:00
I mean, where I do the next same, It just get skipped
Altreus I suppose I just ... add a prefix to all the names :s 21:01
I don't want weird, inconsistent ones
xinming_ timotimo: I can now get the ideas of callwith nextwith callsame samewith 21:02
callsame/nextsame callwith/nextwith But still in confusion about the samewith
xinming_ It's the bug in newest rakudo. 21:05
after downgrade, It worked fine.
Hope to see 2018.08 to be released soon 21:06
timotimo Altreus: you can put them in a package of your own 21:09
hm, do anonymous enums exist 21:10
Altreus they're "my" enums in a class
timotimo m: enum :: <foo bar>;
camelia ( no output )
timotimo cool.
m: package Foo { enum :: <foo bar> }; package Bar { enum :: <foo boo> }; say Foo::foo; say Bar::foo
camelia foo
foo
timotimo m: package Foo { enum :: <foo bar> }; package Bar { enum :: <foo boo> }; say Foo::foo.^longname; say Bar::foo.^longname 21:11
camelia No such method 'longname' for invocant of type 'Perl6::Metamodel::EnumHOW'
in block <unit> at <tmp> line 1
timotimo m: package Foo { enum :: <foo bar> }; package Bar { enum :: <foo boo> }; say Foo::foo.^long_name; say Bar::foo.^long_name
camelia No such method 'long_name' for invocant of type 'Perl6::Metamodel::EnumHOW'
in block <unit> at <tmp> line 1
timotimo i thought this was a thing that exists
anyway, Altreus, this ought to help
xinming_: i'm not sure what bug you mean, can you show a short piece of code for the bug? 21:12
Altreus oh I see 21:17
can I have 'my package' or is 'package X {...}' sufficient?
jnthn xinming_: there's nextcallee if you want to get the thing nextsame would go to 21:18
timotimo ooooh 21:19
timotimo i thought i remembered something like that, but then i assumed i was just thinking of "lastcall" 21:19
Altreus Why doesn't this DWIM? Type check failed in assignment to $!id; expected Int but got Str ("269438629775015936") 21:21
Didn't think perl6 suffered from too-big ints so it won't be that surely
jnthn Int is a types are constraints, not a coercion 21:23
Altreus sure but since there exists a coercion I anticipated that it would use it 21:24
Can I get it to use it by magic? :)
b2gills m: constant Foo := do { enum Foo < quux quack >; Foo }; constant Bar := do { enum Bar ( quux => 2, quack => 3 ); Bar }; say Foo::quux ~~ Foo 21:25
camelia True
Altreus cos I'm just trying to inflate from JSON and it would be handy if it tried to coerce the stuff I pass to the constructor before it complains about the structure 21:26
Otherwise I have to manually convert all the types
Altreus :s 21:26
jnthn You can write something like submethod TWEAK(Int() :$!foo) { } or some such 21:27
Which asks for it and does it fairly declaratively
Altreus hmm, that's almost worse, given how many properties the class has 21:27
What's the difference between Int and Int() there? 21:28
b2gills Int() is short for Int(Any), it coerces an Any to an Int 21:29
Altreus o
b2gills m: my Any $Any = '123'; dd Int( $Any ); # it resembles this 21:32
camelia 123
Altreus is there a rationale behind these being constraints but not coercions? 21:40
Altreus It seems to make everything super verbose by not coercing things before complaining about them 21:40
Especially trivial conversions we're used to from perl5 21:41
jnthn Isn't it more that you're choosing to make things more verbose by putting in type constraints, while if you left them out then things would just coerce on demand when you do math on them anyway? 21:43
Altreus not every type constraint is a primitive type 21:44
Some of them are enums
kinda the point of them is to make sure the object is sane before you even try to use it
but if you happen to pass a string where an int was wanted, languages called perl oughtn't complain :P
AlexDaniel xinming_: “It's the bug in newest rakudo” – what's the bug? 21:45
xinming_: is it fixed on HEAD?
jnthn sighs
Altreus I suppose I don't have any type constraints that are particularly needed but that I don't coerce manually anyway 21:46
hmm
fine you win xD
jnthn is always right
when will I learn
hmm although "0" is true huh 21:48
Altreus ah but the JSON might be a boolean anyway 21:48
hope so or else
jnthn I'm curious, are the integers actually stored as strings in the json?
Altreus yes, because some languages might trip up over them
jnthn Ah
Altreus the doc explicitly says that's the reason
jnthn Due to size?
Altreus indeed
AlexDaniel interesting :) 21:49
timotimo oh, big ints
jnthn In the future we'd like to make it so you can write has Int() $.x; fwiw 21:50
Which'd make things rather less verbose
AlexDaniel … I write that every now and then somehow expecting it to work :)
timotimo it might not be a very hard implementation
jnthn It's a bit tricky, but worse, it's right on a really hot path 21:51
Oh!
timotimo but we code-gen buildplans :)
jnthn But actually...I re-did assignment recently :D
Altreus that would be fairly grand
timotimo :D
jnthn No, it's actually part of assignment
timotimo ah
yeah, right, that makes sense
Altreus but for now the constraints aren't too important indeed
jnthn But because I re-did assignemnt with a spesh plugin of late...we actually get a way to implement it *without* hosing performance :D
AlexDaniel btw it doesn't say that it is NYI
jnthn So yeah, we can probably have that soon :) 21:52
AlexDaniel: that's a bit LTA
AlexDaniel m: class Foo { has Int() $x }
camelia 5===SORRY!5=== Error while compiling <tmp>
Coercion Int(Any) is insufficiently type-like to qualify a variable
at <tmp>:1
------> 3class Foo { has Int() $x 7⏏5}
expecting any of:
constraint
AlexDaniel “is insufficiently type-like to qualify a variable” yeah thanks that's extremely clear :)
jnthn Oh, I thought you meant it's not an error 21:53
OK, now I'm less worried :)
buggable New CPAN upload: Sparrowdo-0.0.40.tar.gz by MELEZHIK modules.perl6.org/dist/Sparrowdo:cpan:MELEZHIK 22:01
mempko what's the best way to assign a default to a variable if a key does not exist, otherwise assign the value of the key? 22:14
or even more general would be, assign value of variable if it is defined, otherwise assign a default 22:15
my $var = $some-undefined-var ?? $some-undefined-var !! 0;
AlexDaniel my $var = $some-undefined-var // 0; 22:16
m: my $some-undefined-var; my $var = $some-undefined-var // 0; say $var
camelia 0
AlexDaniel m: my $some-undefined-var = 42; my $var = $some-undefined-var // 0; say $var
camelia 42
AlexDaniel if a key does not exist? So it's a hash? 22:17
m: my %h = b => 50; %h<a> //= 42; %h<b> //= 42; say %h 22:18
camelia {a => 42, b => 50}
mempko nice! thanks Alex! exactly what I was looking for 22:19
Juerd my $some-undefined-var = 42; # Not a very good example of an undefined var :D
mempko I love this language. It has replaced my day to day perl5, python, and other scripting needs. 22:20
Juerd mempko: Before this, how did you decide between perl5 and python?
mempko in reality I rarely used python. Usually only when someone else used python and I needed to use it. 22:22
I'm mostly working in C++ day to day, and perl6 has quickly become #2 for me. #3 is javascript. 22:23
mempko The most interesting thing I use perl6 for is writing simulations. It's parallel compute primitives are so nice, so my cores get a good work out. 22:24
Juerd Do you find switching between languages easy to do? For me, such context switches can really throw me off.
mempko I've been programming for 22+ years so a lot of stuff is muscle memory really. Perl6 has not infested enough of my brain that it's become natural. But I still have to do a lot of doc lookups for it. 22:26
now*
Juerd Same here, but my muscle memory always seems to tuned to the language I'm not currently using :)
mempko what pulled me in was Grammars, and what kept me was the insanely awesome type system and multi-proc model. 22:27
mempko I'm starting to get offended that other languages don't care about being as fun and usable as perl6 seems to be. 22:27
Juerd Finally there's a language for non-masochists :D 22:29
lizmat m: my %h is default 42; say %h<a> # mempko 22:30
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3my %h is default7⏏5 42; say %h<a> # mempko
expecting any of:
constraint
infix
infix stopper
postfix
lizmat m: my %h is default(42); say %h<a> # mempko
camelia 42
lizmat m: my %h is default(42); say %h<a>:exists; say %h<a> 22:31
camelia False
42
jnthn Juerd: Only if you're not one of the folks implementing it ;) 22:35
Juerd jnthn: Aww 22:36
jnthn: I had no idea it'd hurt. Thanks for the sacrifice, though :D 22:37
mempko I always found there is a direct correlation between ease of use and difficulty implementing the software. 22:41
timotimo i think there's an inflection point towards one end where the easiest to implement are also the easiest to use 22:42
mempko If it's insane to implmenent, that's a good sign it might be user friendly.
timotimo like, implementing cat for example 22:55
i would have said "true", but i hear it's a hundred line file
Kaiepi net::icmp is nuts to implement 23:33
i have to do it mostly in c since io::socket::inet doesn't really support IPPROTO_ICMP and i have to write 3 different implementations for bsd, linux, and windows 23:34
no clue what i'm gonna do for windows since it handles it entirely different from bsd and linux
i can definitely implement ping for windows but idk how i'll be able to implement the rest of the icmp messages 23:37
timotimo .o( does SDL_Net support ICMP? )
benjikun Kaiepi: hmm 23:46
maybe ping by itself would be okay, on the wanted list it just specifies "ping" i think
Kaiepi it doesn't look like SDL_Net supports ICMP timotimo 23:48
timotimo i feared as much 23:49
Kaiepi then that's doable benjikun 23:50
benjikun thanks for still working on this :) 23:53