🦋 Welcome to Raku! raku.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: colabti.org/irclogger/irclogger_log/raku
Set by ChanServ on 14 October 2019.
00:00 cpan-raku left 00:01 cpan-raku joined, cpan-raku left, cpan-raku joined 00:09 approaching236 left 00:28 MasterDuke left 00:31 vrurg_ joined 00:33 vrurg left
[Coke] 41 ballots reporting (Average votes per ballot: 4.59) 00:58
.tell detroitdan - there is a package installer for windows here rakudo.org/downloads 00:59
tellable6 [Coke], I'll pass your message to DetroitDan
[Coke] .tell detroitdan I also build from source every so often with msvc on windows (using msvc & strawberry perl)
tellable6 [Coke], I'll pass your message to DetroitDan
Geth Raku-Steering-Council/main: 2c09bb94a9 | Coke++ | scripts/tally.raku
show a little more precision
01:00
01:01 leont left, donaldh joined 01:06 donaldh left 01:21 molaf left 01:34 molaf joined 01:47 AlexDani` joined 01:49 AlexDaniel left 01:52 aborazmeh joined, aborazmeh left, aborazmeh joined 02:21 Skarsnik left 02:29 ensamvarg3 joined, aborazmeh left 02:30 aborazmeh joined, aborazmeh left, aborazmeh joined 02:31 mowcat left 02:50 approaching236 joined 02:52 vrurg joined 02:54 vrurg_ left 03:03 donaldh joined 03:09 donaldh left, AlexDani` left 03:56 sftp joined 04:35 aborazmeh left 04:36 sjaveed left 04:37 sjaveed joined 04:41 sjaveed left 04:58 sjaveed joined 05:00 parabolize left 05:04 sjaveed left 05:10 bocaneri joined 05:13 skids left 05:15 Kaiepi left, Kaiepi joined 05:21 billN1VUX left 05:22 molaf left 05:32 sjaveed joined 05:34 sjaveed_ joined 05:37 sjaveed left 06:16 approaching236 left 06:37 andrzejku joined 06:43 stoned75 joined
Xliff Hrm. 07:02
I'm getting the following error: 07:03
$!c = $cancellable;
self.roleInit-Object;
Actually, not that one... this one:
===SORRY!=== Error while compiling /home/cbwood/Projects/p6-GIO/lib/GIO/ApplicationCommandLine.pm6 (GIO::ApplicationCommandLine)
P6M Merging GLOBAL symbols failed: duplicate definition of symbol %RAW-DEFS
at /home/cbwood/Projects/p6-GIO/lib/GIO/ApplicationCommandLine.pm6 (GIO::ApplicationCommandLine):12
However I've removed all references of %RAW-DEFS from the code a few hours ago. Is there an easy way to fix this?
07:05 donaldh joined 07:09 donaldh left 07:13 stoned75 left 07:21 kst joined 07:27 sena_kun joined 07:29 donaldh joined 07:30 bocaneri left 07:31 donaldh left 07:33 abraxxa left 07:34 bocaneri joined 07:35 abraxxa joined 07:36 dakkar joined
Xliff Error golfed: repl.it/@Xliff/LovingMassiveVendors#C.pm6 07:42
07:52 MasterDuke joined 07:54 Sgeo left, defaultxr left 07:55 defaultxr joined 07:56 andrzejku left
timotimo Xliff: works when i use package A { our %RAW-DEFS; ... } and package B and such 07:59
Xliff OK, so you are placing them in package blocks? 08:00
Here's the real issue. Most of these compunits are there to declare classes of the same name.
However sometims I will need symbols defined that will need quick nativecall defs. 08:01
If I do this in a compunit: class A::B { ... }; package A::B::C { ... };
the class def will not be able to see anything in A::B::C, even if they are marked "is export" 08:02
If we can solve that, then I'll be happy as a clam! :)
Is there a way to declare partials in Raku? 08:05
08:05 domidumont joined 08:12 sarna joined
sarna hello, does raku have bidirectional hashmaps? or something that could emulate one? 08:14
asking mostly out of curiosity - I can just declare ten variables in this particular case, a bidirectional mapping would be much nicer though :) 08:15
sena_kun I imagine implementing one wouldn't be too hard. Implement `Associative` and overload a couple of methods to do checks you want. 08:17
.oO ( document, pack and release then! )
08:21 stoned75 joined
sarna haha thanks, sena_kun - might as well do that :^) 08:22
08:24 dogbert11 joined 08:25 pecastro joined 08:28 dogbert17 left
Xliff sarna: What do you mean by "bidiractional hashmap"? Is there something online that describes the difference between that and the current Associatives we are used to in Raku? 08:32
sena_kun Xliff, see guava.dev/releases/19.0/api/docs/c...BiMap.html ? If I interpreted correctly what sarna wants. 08:36
sarna sena_kun: yeah, something similar at least 08:37
raku is dynamically typed, I could get away with adding stuff twice 08:40
Xliff role TwoWayHash[K, V] { has HahsMap[V, K] %!bizzaro; method EXISTS-KEY(\k) { k ~~ K ?? self{K}:exists !! %!bizzaro{K}:exists }; method AT-KEY(\k) { k ~~ K ?? self<K> !! %!bizzaro{K} }; }; # ??? 09:04
AT-KEY may need to be "is rw" 09:05
09:05 rindolf joined
Xliff Actually, it's more complex than that. 09:06
EXISTS-KEY need to return Proxy objects
sena_kun has an impression that it's just putting that must be locked, plus you call .antipairs to get "inverted" hash. 09:16
Xliff Yeah. Should have thought about that. Oh well. 09:20
sena_kun I mean, the idea seems to be to enforce that for each key there is a single value which cannot be overwritten (and add a backup method to break this law, of course) + antipairs does all the work on inverting. 09:25
dakkar you don't want to call `.antipairs` on each access though, otherwise you go from ~O(1) to O(N*log(N)) 09:26
(or whatever the cost of building a new hash each time is) 09:27
sena_kun Why call it on each access?
dakkar I just said not to ☺
I may be thinking of a different data structure… an immutable bi-hash is easy, a mutable one needs a bit more work 09:28
El_Che 5 people to vote sounded like a lot at first 09:30
it isn't
:)
09:36 leont joined 09:37 Skarsnik joined 09:55 Xliff left
sarna how to call methods of a parent, when I'm inheriting? 10:02
10:04 Black_Ribbon left, Black_Ribbon joined 10:07 aborazmeh joined, aborazmeh left, aborazmeh joined
tobs sarna: if `class B is A` and you want to call exactly A's method f, then you can inside of a method of B: self.A::f 10:10
sarna tobs: makes sense! I also like the syntax :)
tobs but if you just want to redispatch to the "next most appropriate method in the current dispatch chain" (which also involves methods of parent classes), then see nextsame and nextwith and the like.
sarna will do, thanks 10:11
"nextsame calls the next matching candidate with the same arguments that were used for the current candidate" - oh my!
tobs Those weave multiple dispatch and multiple inheritance into one string of candidates which you can walk and does the right thing if your situation is not as complex, e.g. with single inheritance. 10:12
sarna awesome! 10:13
10:35 parabolize joined 10:39 aluaces left 10:40 aluaces joined 10:50 cpan-raku left 10:51 cpan-raku joined, cpan-raku left, cpan-raku joined, aborazmeh left 10:53 Skarsnik left 11:19 marcusr left 11:21 marcusr joined 11:24 Altai-man joined
sarna does raku have keyword punning? in ocaml if you have a variable with the same name as a named argument, you can just omit the second part of "foo => $foo" 11:27
11:27 sena_kun left 11:34 Altai-man left
lizmat sarna: :$foo 11:43
sarna lizmat: thanks :)
11:43 sena_kun joined
sarna m: my \foo = a => 1, b => 2; say \foo.keys; say \foo.values; # why?? 11:47
camelia \((:a(1), :b(2)))
\((:a(1), :b(2)))
11:48 domidumont left
sarna m: my \foo = a => 1, b => 2; say foo.keys; say foo.values; # oh well that kinda works 11:48
camelia (0 1)
(a => 1 b => 2)
11:54 ggoebel left, ggoebel joined 11:55 stoned75 left 11:56 stoned75 joined 11:57 rindolf left 11:58 rindolf joined
timotimo yeah, when you define a my \foo you're defining a sigil-less "foo" to be used as "foo"; putting a \ in front of a value gives you a Capture object 11:59
12:00 aborazmeh joined, aborazmeh left, aborazmeh joined
lizmat wonders if we should get rid of that for .f 12:00
it's huffmanization for something most people don't use
timotimo capture literal syntax? 12:01
well, not really literal
lizmat m: dd (42,666).Capture # much clearer imo
camelia \(42, 666)
timotimo but yeah 12:02
at the very least change the output to read (blah).Capture
so that it's less confusing?
lizmat yeah, that it should then as well :-) 12:03
timotimo ah, right, can't really not do that 12:04
sarna m: my @foo = [1,2,3]; @foo[1]:delete; say @foo # how can I make @foo be [1,3], without the hole? 12:14
camelia [1 (Any) 3]
12:24 aborazmeh left
sarna m: my %hash = %{foo => [1,2]}; say %hash<foo>; .say for %hash<foo> # this was very confusing :( 12:33
camelia [1 2]
[1 2]
timotimo m: my $blerp = [1, 2]; .say for $blerp; .say for $blerp<> 12:34
camelia [1 2]
1
2
sarna ..decontainerization operator? 12:36
first time I see this
12:39 frost-lab joined
timotimo aye, scalar containers prevent iteration 12:43
12:45 Black_Ribbon left
sarna repl.it/repls/AgreeableYearlyFile#main.raku 12:48
sena_kun: I made it :)
mostly stolen from here stackoverflow.com/a/21894086, but eh 12:49
timotimo oh i thought bihash would forbid the same value from appearing more than once
sarna well it's an ambiguous condition - I like this approach more 12:50
timotimo OK 12:51
lizmat sarna: do you know about invert and push ? 12:52
m: my %h = a => 1, b => 1; my %i; %i.push(%h.invert); dd %i
camelia Hash %i = {"1" => $["a", "b"]}
sarna implodes
lizmat oops 12:53
12:57 Xliff joined
Altreus Anyone mind giving me a terminology refresher? In P5 I think of this as a hashref: my $data = {...}; 13:01
I'm not sure what to call it in Raku 13:02
does it particularly differ from my %data = ... ?
dakkar m: my $data = { a => 1 };say $data.WHAT
camelia (Hash)
dakkar it's a Hash
lizmat Altreus : an itemized Hash in a scalar 13:03
m: my $data = { a => 1 }; dd $data
camelia Hash $data = ${:a(1)}
lizmat note the ${ }
that will stop it from iterating seamlessly 13:04
m: my %data = { a => 1 }; dd %data
camelia Potential difficulties:
Useless use of hash composer on right side of hash assignment; did you mean := instead?
at <tmp>:1
------> 3my %data = { a => 1 }7⏏5; dd %data
Hash %data = {:a(1)}
lizmat m: my %data = a => 1; dd %data
camelia Hash %data = {:a(1)}
Altreus itemized!
lizmat note the absence of ${ }, so this *will* iterate seamlessly
Altreus so ${} has to be decontainerised e.g. with <> 13:05
lizmat yup
Altreus hmm
lizmat m: my $data = { a => 1, b => 2 }; .say for $data<>
camelia b => 2
a => 1
Altreus We were just running a test where I suggested swapping a % for a $ and it made no difference so presumably Raku does some containerisation magic when passing things to functions? 13:06
So if it's expecting a $ and you give it a % it itemises it for you, and if it's already a $ it doesn't? Something like that?
lizmat m: my $a = { a => 1 }; sub a(%b) { dd %b }; a $a 13:07
camelia Hash % = {:a(1)}
Altreus m: sub whatever($data) { dd $data }; my %data = 1 => 2; whatever(%data)
camelia ${"1" => 2}
lizmat that's the single arg rule at work
Altreus m: sub whatever($data) { dd $data }; my $data = {1 => 2}; whatever($data)
camelia ${"1" => 2}
Altreus single arg rule!
then
m: sub whatever($data, :$more-data) { dd $data }; my $data = {1 => 2}; whatever($data)
camelia ${"1" => 2}
Altreus o
m: sub whatever($data, :$more-data) { dd $data }; my %data = 1 => 2; whatever(%data) 13:08
camelia ${"1" => 2}
Altreus okay
still, it always looks the same is the point
lizmat well, Raku tries very hard to DWIM
Altreus as long as I SWIM, right
:D
lizmat and if you go with the flow, it generally does 13:09
sarna can I reopen a class in raku, like in ruby? to add one method to it?
lizmat it's different if you're applying e.g. Perl preconceptions
sarna: docs.raku.org/syntax/augment 13:10
but there's probably a better way to do that
afk for a bit&
sarna lizmat: thanks, this one demands going back to monke though :(
Altreus Perl preconceptions are hard to dispense of, especially when you refresh them every day 13:11
13:12 frost-lab left 13:36 sjaveed_ left
lizmat Altreus: true 13:39
lizmat is lucky in that respect
13:42 vrurg left 13:49 aluaces left 13:50 aluaces joined 13:51 vrurg joined
Altreus I'm lucky in the respect that I'm no longer working with PHP :D 14:02
El_Che [Coke]: thx for doing the logistics for the election 14:03
14:07 sjaveed joined 14:13 sjaveed left
[Coke] 42 ballots reporting (Average votes per ballot: 4.60) 14:14
El_Che: so far, not a problem! :)
14:17 gnufr33dom joined
El_Che not a lot of votes so far 14:24
[Coke] nope. about 3 days left 14:26
14:27 Sgeo joined
jdv79 what is the percentage of votes to potential votes? 14:27
[Coke] there is no list of potential voters.
if you want to make one, that'd be great!
it's everyone with access to several of the repos, but there is no trivial way to get that list. 14:28
I'm going to verify that the small # of voters appear someone in the list before certifying the results.
*somewhere
jdv79 probably impossible without higher privs at gh to do the api calls
[Coke] (easier to do 42 lookups than it is to write the script for me ATM) 14:29
if someone wrote something that could dump everyone from -a- repo, we can find someone to run it against our 4.
14:30 k-man left
El_Che if the 14 (!) candidates votes, that leaves us at 28 voters 14:31
s/votes/vote/
14:32 sarna left
lizmat
.oO( only marginally better than the Mexican army )
14:32
El_Che 14 managers for 28 programmers sounds about right, on the other hand :)
jdv79 if i have some free time today i could probably cobble it together
that's a big if i'm afraid:(
codesections m: say '»ö«' ~~ /<alpha>/ 14:34
camelia 「ö」
alpha => 「ö」
codesections what's the best way to match just ASCII chars? Just <[A..Za..z]>, or is there a better way? 14:35
jdv79 what's the criteria again? all contributors with commit bit for @repos?
lizmat jdv79: indeed 14:36
jdv79 thanks
14:38 k-man joined
[Coke] El_Che: I don't think this is spoilers - some of the 42 votes include votes from candidates. 14:43
codesections: by ascii are you including control characters? NUL ?
I don't think we have <ascii> 14:44
14:44 sjaveed joined
[Coke] m: say "wtf" ~~ /^ <ascii>* $/ 14:44
camelia No such method 'ascii' for invocant of type 'Match'. Did you mean
'asin'?
in block <unit> at <tmp> line 1
codesections [Coke]: Yeah, I didn't think there was a built in (it'd be odd to leave it out from the docs). Is there a unicode property that would do it, though? 14:45
[Coke] m: say "wtf" ~~ /^ <[\c[control-0000]..\c[LATIN SMALL LETTER Y WITH DIAERESIS]>* $/ 14:46
camelia 5===SORRY!5=== Error while compiling <tmp>
Unrecognized character name 'control-0000'
at <tmp>:1
------> 3say "wtf" ~~ /^ <[\c[control-00007⏏5]..\c[LATIN SMALL LETTER Y WITH DIAERESI
[Coke] m: say "wtf" ~~ /^ <[\x00..\xFF>* $/ 14:47
camelia 5===SORRY!5===
Unrecognized regex metacharacter < (must be quoted to match literally)
at <tmp>:1
------> 3say "wtf" ~~ /^ <[\x00..\xFF7⏏5>* $/
Unable to parse regex; couldn't find final '/'
at <tmp>:1
------> 3say "wtf" ~~ /^ <[…
[Coke] m: say "wtf" ~~ /^ <[\x00..\xFF]>* $/
camelia 「wtf」
[Coke] ^^
dakkar maybe \x7F? ASCII is 7-bit
[Coke] sure, FF is extended. 14:48
codesections Sorry, I wasn't clear: I really am looking for <[A..Za..z]> -- that is, just alphabetic ASCII 14:49
[Coke] m: say "wtf\t" ~~ /^ <[\x00..\x7F]>* $/
camelia 「wtf 」
[Coke] codesections: then /:i <[a..z]> / works
14:49 stoned75 left
[Coke] if you use something like <alpha> you're going to get a lot of unicode support that it sounds like you don't want. 14:50
codesections Makes sense. I think I was just overthinking it, unsuprisingly
(I thought there might be something easy that's similar to `:Lu` but for [letter & ASCII] instead of [letter & uppercase] 14:52
)
[Coke] You could write a code block in the regex to make sure the point is < \xF7 14:55
but that seems less maintainable.
codesections now who's overthinking it? :D
14:57 gnufr33dom left
[Coke] (and it doesn't look like there's a unicode category for ascii, which makes sense.) 14:58
dakkar it's called `Basic Latin` 15:00
it's the name of the block 0..7F
(took me a while to find it…)
codesections dakkar: where did you find it? I haven't found a great source for unicode props 15:01
15:01 stoned75 joined
dakkar en.wikipedia.org/wiki/Unicode_block via en.wikipedia.org/wiki/Unicode_char...r_property via docs.raku.org/routine/uniprop via docs.raku.org/language/regexes#Uni...properties 15:01
codesections dakkar++ I still feel like there must be a better reference source than Wikipedia, but that's the best I've found too 15:03
dakkar m: "abc\xe8" ~~ / [<:Script{'Basic Latin'}> & <:L>]+ / # uh? 15:07
camelia ( no output )
dakkar m: say "abc\xe8" ~~ / [<:Script{'Basic Latin'}> & <:L>]+ / # uh?
camelia 「abcè」
15:07 stoned75 left
dakkar I was not expecting it to match that è 15:07
aahh
m: say "abc\xe8" ~~ / [<:Block('Basic Latin')> & <:L>]+ / 15:08
camelia 「abc」
dakkar the delimiters are important, and it's a Block, not a Script
codesections thanks :)
15:08 stoned75 joined
dakkar (weird that what looks like a colonpair isn't) 15:09
also, what did the parser thought I meant with <:Script{'thing'}> ?
codesections: the official source for unicode stuff is www.unicode.org/Public/14.0.0/ucd/ 15:12
(the Unicode Character Database)
a bit unwieldy, though
15:17 sjaveed left, sjaveed joined 15:21 sjaveed left 15:22 vrurg left
[Coke] dakkar++ 15:24
15:24 DetroitDan joined
[Coke] I still think a..z is more succint. :) 15:24
dakkar oh sure!
[Coke] *succinct
15:25 Altai-man joined
dakkar I wanted to see what the UCD/declarative way looked like 15:25
also, I found another thing in Raku that looks like a pair but really isn't: the property-based character class 15:26
codesections Yeah, if there had been a shorter one (like `:Lb` or something), it would have won out, but given that there isn't, `[:i <[a..z]>]` is probably better
dakkar (the other being the named parameter in a signature)
[Coke] 43 ballots reporting (Average votes per ballot: 4.60)
15:27 sena_kun left
codesections The downside with [a..z] is that it's a common bug for when people *should* be matching unicode, but forgot. Depending on the context, it might need a comment to clarify that it's intentional. :Block('Basic Latin') makes your intention clear 15:29
dakkar "I know there's a billion characters out there, I actually really want just these 52" 15:30
15:43 skids joined
guifa This is where you might want <local-alpha> or similar :-) 15:49
15:54 sjaveed joined
Altreus is there a with except for truth and not definedness? as in X = $_ with Y; 15:58
if doesn't set $_ does it
[Coke] yah, hide it all behind a named rule, there's your documentation. :) 16:00
jdv79 [Coke]: here's a quick and dirty maybe...: nopaste.linux-dev.org/?1323914 16:06
i could fix it up more maybe later but the basics are there
dakkar m: my $x=5;if $x -> $_ { .say } # Altreus 16:10
camelia 5
Altreus yeah a bit more pesky than just repeating x 16:12
no worries tbh
codesections m: my $x = 1; say 'True' with $x || Any 16:18
camelia True
codesections m: my $x = 0; say 'True' with $x || Any
camelia ( no output )
codesections Altreus: ^^^ could work, though it's a little less clear
Altreus clarity is preferred :D 16:19
16:19 DetroitDan left
codesections yeah. It all comes down to what idioms you like/are part of your vocabulary :) 16:20
dakkar macros and slangs are still too complicated / immature to easily create a `wif` statement modifier 16:22
(I tried)
16:23 sjaveed left 16:32 approaching236 joined
Altreus wiv 16:33
:D
[Coke] jdv79: I'll give it a shot later, thank you
jdv79: what does ~/.rel_gen.conf look like? 16:36
{ "github_auth": "user@pass" } ?
after putting what I think is a correct rel_gen.conf in place, and changing foo/bar to "Raku" and "doc", I get: 16:38
16:38 dakkar left
[Coke] Not an ARRAY reference at ./test-coke.pl line 25. 16:38
ah typo. ok. that gives a huge dump of ids. 16:40
I don't understand how you're looping through multiple pages (I see the while loop, but don't understand the logic) 16:44
[Coke] hurls gist.github.com/coke/ae6506a3a80da...6c4ef23731 for jdv79 16:45
based on that list, I'm seeing several misses in the votes so far (voters who do not appear on the list) 16:47
but this reduces the number I have to hand check considerably, thanks. 16:48
jnthn: can you make me an admin on rakudo/rakudo, if you're OK with that? 16:49
tellable6 [Coke], I'll pass your message to jnthn
El_Che nwc10 is twice on the list 16:51
[Coke] I dumped several runs of the script into a file and did a sort. probably needed -u
updated 16:52
m: say 43/240 17:03
camelia 0.179167
17:07 vrurg joined 17:11 MilkmanDan left 17:14 aluaces left 17:15 sjaveed joined 17:22 sjaveed left 17:30 k-man left 17:33 k-man joined 17:37 natrys joined 17:38 MasterDuke left 17:44 aluaces joined, thundergnat joined 17:45 ensamvarg3 left
thundergnat m: say 'camelia »ö« ftw' ~~ m:g/<:ASCII>+/; # <-- codesections; if you haven't already found it 17:45
camelia (「camelia 」 「 ftw」)
17:45 thundergnat left
codesections O.O thundergnat++ I had _not_ found that, thanks 17:46
(I still feel like there *must* a list of unicode properties somewhere that I just haven't found...) 17:47
17:58 sjaveed joined 17:59 Kaiepi left 18:01 sjaveed left 18:02 sjaveed joined 18:08 sjaveed left 18:09 skids left 18:14 domidumont joined 18:15 Kaiepi joined 18:16 ggoebel left, domidumont left 18:25 bocaneri left
[Coke] doesn't look like :ASCII is spec'd. 18:29
Xliff thundergnat: When did <:ASCII> get in? It's not documented here: docs.raku.org/language/regexes#Pre...er_classes 18:30
tellable6 Xliff, I'll pass your message to thundergnat
[Coke] (or in roast) 18:33
(at least not in S05)
there is :ASCIIHexDigit
18:35 stanrifkin joined
[Coke] also see :InASCII 18:36
18:36 approaching236 left, cpan-raku left, Xliff left 18:37 cpan-raku joined, cpan-raku left, cpan-raku joined
stanrifkin How can i lookup ~~ operator with p6doc? Something like perldoc perlop or so... 18:39
18:39 sjaveed joined
stanrifkin ah. I found it. p6doc operators 18:40
18:42 moony left
moritz stanrifkin: also on docs.raku.org you can enter operators into the search box 18:45
and once upon a time you could also put it in the URL, but that feature has been removed some time ago
stanrifkin moritz: is docs.raku.org downloadable? I mean is there a zip or so? 18:48
[Coke] stanrifkin: worst case there's github.com/Raku/doc 18:49
there's some work in progress to restore the single-big-html version also 18:50
18:53 sjaveed left 18:56 moony joined 18:57 ccamel left
codesections [Coke]: Xliff: now I'm a bit confused about what unicode properties Raku *does* support. My previous understanding was that we supported some list of properties defined by the unicode consortium/ICU/some other group. Under that understanding, we didn't need to document specific properties that we support (though it would be nice if we could link to an ICU page listing the current relevant 18:57
properties). Was that understanding wrong?
[Coke] we need to document what we support, even if it's a link. 18:58
codesections Listening to you now, it sounds like we only support a subset of properties, and have to select properties that we want to support (instead of getting them automatically as they're added). If that's the case, then we should be documenting/spec'ing each property as it's added
m: say ['-'] ~~ /<:dash>/ 18:59
camelia 「-」
codesections ^^^ works
m: '☕' ~~ /<:Basic_Emoji>/
camelia ( no output )
[Coke] codesections: ... I'm not speaking in any kind of expert capacity here. :)
codesections ^^^ doesn't work
[Coke] I'm just checking to see if stuff is listed on docs site or in roast, that's it 19:00
codesections and I'm not sure if that's because :dash is in a different category according to ICU, or if that's because we've decided to support :dash but not :Basic_Emoji
[Coke] .seen samcv 19:02
tellable6 [Coke], I saw samcv 2020-08-24T19:18:52Z in #raku-dev: <samcv> lizmat++
[Coke] she did most of the work. think nwc10 also has touched it recently
tobs m: say '☕' ~~ /<:Basic_Emoji>/ 19:03
camelia Nil
tobs (so it *really* does not work...)
codesections haha, fair point :)
m: say '☕'.uniprop('Basic_Emoji') 19:05
camelia 0
codesections I'm assuming those use the same mechanisim
m: say 'a'.uniprop('L'); say 'a'.uniprop('ASCII'); say 'a'.uniprop('Alpha') 19:10
camelia 1
Basic Latin
True
stanrifkin in the book "Learning Perl6" the first example program "find_moth_genera.p6" is stuck executing. There is no output. Does anyone had the same issue?
codesections I don't understand why &uniprop sometimes returns a Str, a Bool, or an Int 19:11
very odd
19:15 camelCaser joined 19:16 Skarsnik joined 19:18 sjaveed joined
lizmat codesections: uniprop is a multi that returns different things for different invocants 19:22
although I would argue that the 'L' case returning 1 is wrong as it should return a Bool 19:23
19:24 sjaveed left
codesections lizmat: yeah, I see that now. I was just looking at the source, but couldn't figure out they rhyme or reason behind when it returns different types. It also **looks** like the source has a list of all unicode properties Raku knows about – but then that list doesn't have :ASCII, which is what got us started on this topic 19:24
github.com/rakudo/rakudo/blob/mast...#L624-L679
19:25 sena_kun joined
lizmat wouldn't know why that would not be in there 19:26
codesections It does have `General_Category`. My (now) current understanding is that :ASCII is a synonym for :Block('Basic Latin'), which looks up a character's `General Category`. But I'm not sure how that's implemented/if that's even correct 19:27
19:27 Altai-man left 19:28 approaching236 joined 19:29 molaf joined
[Coke] stanrifkin: do you have a copy of the program in a gist? 19:33
19:33 approaching236 left
stanrifkin [Coke]: i looked at the source... the program seems fine. There is a misprinting in the book. 19:35
[Coke] oops.
stanrifkin++
19:48 melezhik joined
melezhik how can I server static files with cro? 19:48
tellable6 2020-09-16T20:37:08Z #raku <SmokeMachine> melezhik thanks! I’ll take a look as soon as possible
melezhik serve
19:51 sjaveed joined 19:57 sjaveed left 19:59 skids joined, stoned75 left 20:01 stoned75 joined 20:02 sjaveed joined, natrys left 20:07 sjaveed left 20:18 Black_Ribbon joined
stanrifkin how do you use all the unicode special characters? how do you list... and copy them into a editor? 20:19
timotimo there's a documentation page about different ways 20:20
melezhik looks like the answer on my question is here - cro.services/docs/reference/cro-http-router 20:23
in Serving static content§ section 20:24
[Coke] melezhik: docs.raku.org/language/unicode_entry 20:25
er.
stanrifkin: docs.raku.org/language/unicode_entry
melezhik [Coke] )) 20:26
[Coke] someone should add an os x section to that pag.
stanrifkin os x user which uses raku? :)
melezhik how the things are in general in Raku community? what's up recent reddit are quite quiet ))) ... 20:28
lizmat 2+ posts per day ? 20:30
melezhik oh ... just my personal perception, I might be wrong though ... maybe it's me not that active and so feel that way )))
jdv79 [Coke]: sorry, i took a script at work and butchered it for that. 20:46
anything i can help with? seemed straightforward at the time. 20:47
[Coke] sorry about what now?
I got what I needed, I think.
oh, about the algorithm? no worries 20:48
jdv79 then not sorry
good stuff
so, back to the origin of that. what is the % voting so far?
20:49 melezhik left
lizmat jdv79: not knowing how many people can vote, sorta makes % calculations difficult ? 20:49
I understand there have been 42 ballots cast so far
jdv79 well, i think we now have potential voters
or dont we? 20:50
lizmat jdv79: ah, did I miss something ? 20:52
jdv79 i provided coke with a scriptlet that can get the list from gh, more or less. 20:53
ah, ~18%. i backlogged better. cool. 20:54
lizmat ah, cool! 20:55
20:58 MilkmanDan joined
[Coke] I haven't validated anything, but that's the raw data right now. :) 20:59
jdv79 its like hte US elections - "as it comes in" 21:00
timotimo not enough voter suppression 21:01
21:04 finsternis left 21:07 mowcat joined 21:08 stoned75 left, MasterDuke joined 21:16 ggoebel joined 21:19 rindolf left 21:24 aindilis left 21:28 sjaveed joined 21:33 sjaveed left 21:42 finsternis joined 21:51 Sgeo_ joined 21:54 Sgeo left 21:55 aluaces left 21:56 Sgeo__ joined 21:57 aindilis joined
guifa SmokeMachine++ for the example on webperl, I’m already making good use fo it 21:58
22:00 Sgeo_ left 22:07 Sgeo_ joined 22:11 Sgeo__ left 22:14 Kaeipi joined 22:17 Kaiepi left 22:20 thundergnat joined
thundergnat Sorry I didn't answer earlier, I got sucked into meetings and other RL intervened. 22:21
tellable6 2020-09-17T18:30:56Z #raku <Xliff> thundergnat: When did <:ASCII> get in? It's not documented here: docs.raku.org/language/regexes#Pre...er_classes
22:23 sena_kun left
thundergnat .tell Xliff <:ASCII> isn't a Raku specific thing. It an official Unicode property alias. See unicode.org/Public/UNIDATA/Property...liases.txt - search for ASCII. It's an alias for Block<Basic Latin>. 22:23
tellable6 thundergnat, I'll pass your message to Xliff
22:24 aindilis left
codesections thundergnat: is ASCII an alias for Block<Basic Latin> or for Block? Or both? 22:25
guifa codesections: ASCII is defined here: www.unicode.org/Public/UCD/latest/u...liases.txt
codesections m: say 'a'.uniprop('ASCII'); say 'a'.uniprop('blk') 22:26
camelia Basic Latin
Basic Latin
codesections guifa: so why does ^^^ return "Basic Latin" instead of True or 1? 22:29
also, 'ASCII' has the same unipropcode as 'block', which is what made me think it was an alias for 'Block' rather that Block<Basic Latin> 22:30
m: use nqp; say nqp::unipropcode('ASCII')
camelia 6
codesections m: use nqp; say nqp::unipropcode('Block')
camelia 6
22:31 sjaveed joined
thundergnat I'm not sure how 'a'.uniprop('ASCII'); is parsing. blk (block) is a Unicode property and ASCII is nominally an alias for blk<Basic Latin> 22:31
You may be right though. 22:32
m: say "٣".uniprop(<ASCII>)
camelia Arabic
thundergnat Hmm.
I suspect that that is an accident of parsing rather than a intentional implementation. 22:35
guifa Let’s follow the rabbit hole
uniprop is defined in Cool, and calls the sub uniprop, first arg the string and the rest other args (e.g. ASCII)
codesections yeah, and that eventually gets you to unicode_db.c 22:36
guifa m: use nqp; say nqp::unipropcode(‘AHex’) 22:37
camelia 28
guifa m: use nqp; say nqp::unipropcode(‘Xxasdsefsdf’)
camelia 0
codesections yeah, (at least in MoarVM) all that is from the (very long) table in unicode_db.c, which is auto-generated from MoarVM/tools/ucd2c.pl as part of the MoarVM build 22:39
When built, it contains the Unicode Character Database 22:40
thundergnat My suspicion: Unicode properties are all a single word/phrase (linked by underscores). ASCII is an alias for blk; Basic_Latin. I suspect that it is just grabbing the first "word" of the alias (blk) and using that as the property to search for. (all speculation)
codesections interesting! So, if that's the case, it means that <:ASCII> isn't using the same machinery as &uniprop? I'd kind of been assuming that <:ASCII> was implemented as something like `$str.uniprop('ASCII') eq 'Basic Latin'`, but I guess it must use different machinery if it doesn't have the same issue 22:42
thundergnat see my above snippet 22:43
m: say "٣".uniprop(<ASCII>)
camelia Arabic
thundergnat How is it finding Arabic if it isn't just searching for Block? 22:44
m: say "٣".uniprop(<blk>)
camelia Arabic
codesections m: "٣" ~~ /<:ASCII>/
camelia ( no output )
codesections m: say "٣" ~~ /<:ASCII>/
camelia Nil
thundergnat m: say "٣".uniprop(<blk ASCII>)
camelia Cannot resolve caller uniprop(Int:D, List:D); none of these signatures match:
(Str:D $str, |c)
(Int:D $code)
(Int:D $code, Stringy:D $propname)
in block <unit> at <tmp> line 1
guifa m: say “α”.uniprop(<anything>)
camelia 0
thundergnat m: say "٣".uniprop(<blk;ASCII>)
camelia 0 22:45
thundergnat Hmm
guifa Something weird is definitely going on
thundergnat On the other hand, I may be completely full of it...
22:45 stanrifkin left
SmokeMachine guifa: really? Now I’m curious! 22:48
guifa SmokeMachine: I don’t have it ready yet, but it’s going to make localizing errors SOOOOO much easier 22:49
I just wish for JS there was a way to open a file AND SAVE IT in the same place lol 22:50
guifa also needs to write a ton of fake exception data
SmokeMachine Have you thought of using the file API? You could download the new version generated by the js 22:52
23:01 pecastro left, aindilis joined, Skarsnik left
thundergnat m: say "\c[LATIN CAPITAL LETTER P WITH SQUIRREL TAIL]" # The odd things you stumble across while perusing the Unicode tables 23:07
camelia
guifa I actually used that character in my dissertation 23:10
It’s generally read as "pro"
thundergnat I can't say that I ever consciously saw that particular character before. I may have _seen_ it but didn't particularly notice it. 23:12
guifa Ps and Qs (hence the expression) have all sorts of variations with special readings 23:15
23:32 aindilis left 23:41 epony left 23:42 epony joined, Sgeo joined 23:44 Sgeo__ joined
codesections Aha! I've found the missing piece of the puzzle: &unipvalcode 23:45
m: use nqp; say given '٣' {nqp::matchuniprop(.ord, nqp::unipropcode('ASCII'), nqp::unipvalcode(nqp::unipropcode('ASCII'), 'ASCII'))}
camelia 5===SORRY!5=== Error while compiling <tmp>
Unsupported use of bare "say". In Raku please use: .say if you meant
to call it as a method on $_, or use an explicit invocant or argument,
or use &say to refer to the function as a noun.
at <tmp…
codesections m: use nqp; say do given '٣' {nqp::matchuniprop(.ord, nqp::unipropcode('ASCII'), nqp::unipvalcode(nqp::unipropcode('ASCII'), 'ASCII'))}
camelia 0
codesections m: use nqp; say do given 'a' {nqp::matchuniprop(.ord, nqp::unipropcode('ASCII'), nqp::unipvalcode(nqp::unipropcode('ASCII'), 'ASCII'))}
23:45 Sgeo_ left
camelia 1 23:45
codesections thundergnat: guifa: I'm pretty sure ^^^^ (or something like it) is how ~~ /<:ASCII>/ is implemented 23:46
23:47 Sgeo left
codesections also 23:50
m: use nqp; say nqp::unipvalcode(6, 'BasicLatin'); say nqp::unipvalcode(6, 'ASCII'); say nqp::unipvalcode(6, 'Invalid');
camelia 1
1
0
23:54 stanrifkin joined
stanrifkin When I use an variable which I declared as Int like my Int $n and then assign a string to it. Is this checked only at runtime not compile time? When I run raku with the -c option is says OK. 23:58
23:58 dataangel left 23:59 dataangel joined