🦋 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 Tirifto left 00:15 oddp left 00:16 oneeggeach left 00:18 tony-o_ joined 00:19 Petr37 left 00:43 leont left 00:51 _jrjsmrtn joined 00:52 __jrjsmrtn__ left 00:54 mowcat left 01:07 nebuchadnezzar left 01:42 jdjohnston joined
jdjohnston Why is the docker version of rakudocs different from the online version? Most noticeably, it still says "Perl 6" 01:43
Is there an easy way to update the docs in the container? 01:46
02:02 molaf left 02:03 cooper joined
jdjohnston Gotta go. I'll try again some other time. 02:04
02:04 jdjohnston left 02:05 Manifest0 left 02:06 Manifest0 joined
raku-bridge <勉人> how do i print a combining character as a noncombining character? 02:07
02:09 Jimbolli joined, Jimbolli left
raku-bridge <勉人> my $chars = "가 \x[302E] \x[302F]"; $chars .= split(" "); $chars».uniname».say; this just returns HANGUL SYLLABLE GA instead of all 3 characters that i wanted because the second 2 are combining characters 02:12
02:14 molaf joined
[Coke] guessing we haven't updated the docker container in ages. 02:20
ah, he's gone. 02:21
02:49 gnufr33dom joined 03:04 Xliff joined
Xliff o/ 03:04
03:12 k-man left
[Coke] \o 03:12
03:14 zacts joined 03:15 zacts left 03:38 k-man joined 03:42 melezhik joined
Xliff m: use NativeCall; my bool $a; 03:43
camelia ( no output )
03:44 melezhik left, zacts joined 03:46 zacts left
[Coke] try "uninames" to at least see the extra combining char info 04:00
m: my $chars = "가 \x[302E] \x[302F]"; $chars .= split(" "); $chars».uninames.say 04:01
camelia ((HANGUL SYLLABLE GA SPACE HANGUL SINGLE DOT TONE MARK SPACE HANGUL DOUBLE DOT TONE MARK))
[Coke] m: my $chars = "가 \x[302E] \x[302F]"; $chars .= split(" "); $chars.uninames.say
camelia Cannot resolve caller uninames(Seq:D); none of these signatures match:
(Str:D $str)
in block <unit> at <tmp> line 1
[Coke] m: my $chars = "가 \x[302E] \x[302F]"; $chars.NFC[2].uniname.say # convert it to NFC instead of NFG 04:07
camelia HANGUL SINGLE DOT TONE MARK
04:10 Xliff left 04:12 xelxebar left 04:13 xelxebar joined 04:37 lucasb left
raku-bridge <勉人> thanks 04:38
04:44 andrzejku joined 04:52 nebuchadnezzar joined 05:14 aluaces joined 05:16 xinming left, xinming joined 05:25 bocaneri joined 05:27 zacts joined, xinming left 05:28 xinming joined 05:46 xelxebar left 05:50 xelxebar joined 06:05 zacts left 06:11 zacts joined 06:13 dolmen joined 06:16 hungrydonkey left, hungrydonkey joined 06:20 ufobat joined 06:24 dolmen left 06:36 wamba joined 06:43 gnufr33dom left 06:53 tejr left
Geth_ doc: fa676ce2be | (Daniel Sockwell)++ (committed using GitHub Web editor) | doc/Type/Pod/Block/Code.pod6
Remove documentation for (nonexistent) `allowed` method (#3528)

Thanks!
06:54
linkable6 Link: docs.raku.org/type/Pod::Block::Code
DOC#3528 [closed]: github.com/Raku/doc/pull/3528 Remove documentation for (nonexistent) `allowed` method
07:00 samcv left 07:02 kensanata joined
xinming $ ./rakudo-m -e 'say \() ~~ :(Int :$page)' 07:04
m: ./rakudo-m -e 'say \() ~~ :(Int :$page)'
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed postfix call
at <tmp>:1
------> 3.7⏏5/rakudo-m -e 'say \() ~~ :(Int :$page)'
xinming m: say \() ~~ :(Int :$page)
camelia True
xinming m: say \() ~~ :(Int() :$page)
camelia False
xinming This is a bug, should be reported. ;-)
07:05 aluaces left 07:06 rindolf joined 07:14 JJMerelo joined 07:19 xinming left, xinming joined 07:27 samcv joined 07:33 Sgeo left 07:48 dakkar joined 07:50 pecastro joined 08:00 kensanata left 08:01 leont joined 08:05 reach_satori left, reach_satori joined
cpan-raku New module released to CPAN! Random::Names (0.0.3) by 03ELIZABETH 08:27
08:29 xinming left 08:30 xinming joined 09:01 oddp joined 09:10 zacts left 09:13 markoong joined 09:17 xinming left, xinming joined 09:18 zacts joined 09:22 zacts left 09:31 aluaces joined 09:32 markoong left 09:35 markoong joined 09:36 schlaftier left 09:37 schlaftier joined 09:38 kktt007 joined, hungryd91 joined, hungrydonkey left 09:56 zacts joined, JJMerelo left 10:08 rbt left 10:14 zacts left
holyghost I'm doing ok with AI in scheme for language features (e.g. for raku), I chose several things from C++ STL, Java and Smalltalk 10:20
It's an actor based system
Now I have to learn Ada and Eiffel, still :-)
gnats == Ada on most systems 10:21
or gnat, I don't remember
Earlier, there was such Ada support in gcc
So I am working for raku in scheme, which is nice :-) 10:23
I chose scheme because of for AI, I might do something for raku in its implementation later on 10:25
nqp, AFAIK and raku itself 10:26
That way, we have some AI support, I'm doing several algorithms 10:27
guile extensions for nqp are probably out of the question, but do note it
I use scheme48 and scsh, as it's also a swiss army knife of UNIX, it was made on BSD 10:28
linux has guile more
Thing is, the revised scheme report (below 7) has portable scheme, guile and scsh are incompatible extensioned though 10:29
10:29 yangzq50 joined
holyghost so e.g. there's a vector-ref no list-ref 10:29
and so on :-) 10:30
I started with r3rs in 1995, until r6rs (revised scheme reports) evrything's a pretty good language system 10:31
r7rs is broken by compatibility IIRC
Again, it's based on actors which I can do magically in raku itself 10:35
we probably don't have the money and karma for actors in the nqp base 10:36
10:36 kktt007 left
holyghost in raku it's slower 10:36
Altreus What's the incantation to know if a number is an integer? 10:40
10:40 hungryd91 left
Altreus ~~ Int? 10:41
nar :(
tadzik m: say so 5.0.Int == 5 10:42
camelia True
tadzik does that work for you? I'm not sure if you mean a typecheck, or a logical "does it have something after the dot" 10:43
Altreus the latter - I was trying to avoid using it twice because then I have to get it into a variable
The XY problem is I'm trying to specify "power of 2"
therefore log($_, 2) is an int
tadzik m: subtype EffectivelyInt of Numeric where { $_.Int == $_ }; say so 5.0 ~~ EffectivelyInt; say so 5.1 ~~ EffectivelyInt 10:44
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3subtype EffectivelyInt of Numeric7⏏5 where { $_.Int == $_ }; say so 5.0 ~~ E
expecting any of:
infix
infix stopper
po…
tadzik grr
Altreus subset :D
tadzik oh yes :D 10:45
Altreus I just did the exact same
tadzik m: subset EffectivelyInt of Numeric where { $_.Int == $_ }; say so 5.0 ~~ EffectivelyInt; say so 5.1 ~~ EffectivelyInt
camelia True
False
Altreus yes I could do two and that would be simpler
lizmat use Bits; sub powerof2(Int:D $value) { $value > 1 && bitcnt($value) == 1 }; say powerof2 16 # True 10:46
Altreus 1 is a power of 2 :) 10:47
but 16 is the min for this function anyway apparently
lizmat use Bits; sub powerof2(Int:D $value) { $value > 0 && bitcnt($value) == 1 }; say powerof2 16 # True
10:48 xinming left
lizmat 16? 1 is 10:48
10:48 sena_kun joined
Altreus no I mean the function I'm writing 10:48
lizmat ah, ok *phew* :-)
Altreus to which the constraint is relevant
:)
SmokeMachine m: say 42.WHAT =:= Int 10:49
camelia True
Altreus what is this magic 10:50
m: say so log(4,2).WHAT =:= Int 10:51
camelia False
Altreus :(
10:51 xinming joined 10:52 Xliff joined
SmokeMachine Hum!! you dont what the type! sorry I thought you wanted to differentiate Int from it's specialisations, sorry... 10:52
holyghost m: say so log(4,2).WHAT =:= # ?
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing required term after infix
at <tmp>:1
------> 3say so log(4,2).WHAT =:= # ?7⏏5<EOL>
expecting any of:
prefix
term
SmokeMachine *its 10:53
holyghost m: sy log(4,2).WHAT =:= Float
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
Float used at line 1. Did you mean 'Num'?
Undeclared routine:
sy used at line 1. Did you mean 'so'?
SmokeMachine m: say so log(4,2).WHAT =:= Num
camelia True
holyghost lol
An actor based system :-) 10:56
10:59 Xliff-con joined
Xliff-con \o 11:00
holyghost 'lo Xliff
Xliff-con Hi. I'm slumming from a console, ATM. Attempting to compile Rakudo on a Raspberry Pi. It's tied to my second monitor, which is where my GUI client exists. 11:01
Unfortunately, I can't get the damned thing to switch windows.
:(
I'm assuming someone has attempted this on the latest Pi hardware?
OK. Compiling core.c -- This will be interesting. 11:03
htop 11:04
11:05 wamba left 11:07 xinming left
Xliff-con CORE.c.setting - 273 seconds! 11:08
Opotimize took another 33
11:09 xinming joined
Xliff-con Mast took another 57 seconds 11:09
timotimo woof 11:11
is it swapping at all?
though if it were swapping, the difference would be between 10x and 1000x i guess
Xliff-con No.
Core module install took another 55 seconds. 11:12
I knew I was in for it when the MoarVM compile took perceptibly long. My desktop compiles that in 5-10 seconds.
But build completed no problem!
Probably best, in this situation, to install from binaries. 11:13
Geth_ advent: cd41b55c51 | Altai-man++ (committed using GitHub Web editor) | 20th/README.md
Add an article mention for 20th anniversary advent
11:15
Xliff-con Still...decent enough once it's running. Now to install zef
....and.... we're off! 11:16
timotimo is this a pi 2 or 3? 11:18
Xliff-con Latest. I just bought it in June
Pi 4. 3 cores. 4GB 11:19
timotimo the performance is still a little bit sobering
Xliff-con Yes, it is.
:(
Still, aside from the time it was a hassle free installation.
timotimo :)
Xliff-con Installing rakudo star is probably the recommended thing to do for this platform. 11:20
11:20 markong joined, markoong left
Xliff-con *I* wanted to install from sources because...well... I'm aparantly a masochist. 11:20
timotimo once we have a jit, things will be a little faster, but also there's a little bit of memory overhead to it, too
Xliff-con I thought we already had JIT!
timotimo parts of it 11:21
Xliff-con OK.
Xliff-con goes to install p6-GLibg
timotimo everything except the writing of native machine code on arm
Xliff-con First I need the deps. Oh, that will be fun!
Oh. ARM. Right. LOL
Altreus how do I define a subset that only runs the condition when the value is defined? 11:28
I feel like putting "not defined or" all the time is going to get old
I was kind of expecting only a defined type would be tested in the first place 11:29
er, a defined value
Since the type object ... doesn't have a value to test 11:30
lizmat m: dd 4 ~~ Int:D 11:31
camelia Bool::True
lizmat m: dd Int ~~ Int:D
camelia Bool::False
Altreus I mean that I want to constrain the value passed to the function, IF a value is passed 11:32
requiring that an undefined value passes the type checks of a subset is inconsistent with allowing an undefined value not to contain required properties of a class 11:33
11:38 wamba joined
Altreus In fact it seems all subsets implicitly expect definedness. 11:47
m: subset ReallyInt of Int where { $_.Int == $_ }; say so Int ~~ ReallyInt; say so Int ~~ Int;
camelia Invocant of method 'Bridge' must be an object instance of type 'Int',
not a type object of type 'Int'. Did you forget a '.new'?
in block <unit> at <tmp> line 1
Altreus well 11:48
m: subset ReallyInt of Int where { $_.Int == $_ }; say so Int ~~ Int; say so Int ~~ ReallyInt;
camelia True
Invocant of method 'Bridge' must be an object instance of type 'Int',
not a type object of type 'Int'. Did you forget a '.new'?
in block <unit> at <tmp> line 1
Altreus m: say Int.Int ~~ Int 11:49
camelia True
Altreus The actual condition should survive the test...
timotimo github.com/raku-community-modules/...set-Helper 11:51
11:52 xinming left, xinming joined
timotimo Altreus: did you see this module? 12:08
Altreus no :o
12:12 molaf left 12:13 Altai-man_ joined
holyghost JJMerelo : I would like to upload a package to CPAN, since you blocked my account, just this once 12:13
JJMerelo : It's on github.com/theholyghost2/p6-Random-...-Boltzmann 12:14
Altreus timotimo: hey it covers my use case! 12:15
:D
holyghost JJMerelo, it needs 1 test, the rand function in BoltzmannFunction.pm6, then one can upload, it compiles
.seen JJMerelo
tellable6 holyghost, I saw JJMerelo 2020-07-22T11:38:09Z in #raku-dev: <JJMerelo> Please propose yourself with a PR or directly if you've got the privs.
12:16 sena_kun left
Altreus ah good old zoffix 12:16
holyghost JJMerelo : wait a minute, I dunno where to do a pull request PR
JJMerelo : I cannot login into CPAN 12:18
I don't know where to propose :-)
timotimo why is $.kB rw when it's a constant? 12:19
Altai-man_ holyghost, just leave it at github. 12:20
timotimo holyghost: Int.rand, like it's used in method rand, will give you a warning and return 0, so you're immediately using a division by zero in your code
$!T = 1.227 * 10,* -23; # <- this line from HawkingTemperature.pm6 seems like it has a typo 12:21
holyghost: definitely do write that test before you consider pushing it up to cpan 12:23
holyghost timotimo : a random number in the positive integer range does get close to a 0 in a long time :-) 12:24
Altreus when people start blocking you, that's an opportunity to re-evaluate your home truths
tadzik m: my $a = Int.rand; say $a
camelia Invocant of method 'Bridge' must be an object instance of type 'Int',
not a type object of type 'Int'. Did you forget a '.new'?
in block <unit> at <tmp> line 1
Altreus what is this Bridge that I also saw? 12:25
timotimo m: say Int.rand
camelia Invocant of method 'Bridge' must be an object instance of type 'Int',
not a type object of type 'Int'. Did you forget a '.new'?
in block <unit> at <tmp> line 1
Altreus I feel like Raku has a lot of complexity inside it, and the high-level programmer needs to know it
timotimo Altreus: it's how many types can be made to conform to Real (i think?) for calculation?
holyghost: it would have been good to first confirm if it actually does what you think 12:26
m: say Int.Range.rand
camelia Can not get a random value from an infinite range
in block <unit> at <tmp> line 1
timotimo you can't use this more correct form either
and also, you weren't even asking for the positive range of int, the code would, if it had been correct this way, have given you negative values as well
holyghost Altreus : oy, I'm getting rusty :-) 12:27
12:27 yangzq50 left
holyghost m: say Int.new.rand 12:28
camelia 0
holyghost m: say Int.rand 12:29
camelia Invocant of method 'Bridge' must be an object instance of type 'Int',
not a type object of type 'Int'. Did you forget a '.new'?
in block <unit> at <tmp> line 1
holyghost The above compiled on the server
timotimo of course it compiles
compiling correctly is the absolute bare minimum 12:30
you can write a lot of BS that compiles that's still useless
tadzik yeah, the language is not "static" enough for compilation to mean much 12:31
no language is, really. But especially not something as dynamic as Raku :)
Xliff-con cd..cd .. 12:32
holyghost .tell Xliff, if you'd like to update the perl6 compiler on the server, Int.rand compiles whereas AFAIK it doesn't in raku. It'd be nice to keep the old compiler also by naming the new one raku on the command line, if that's doable *gnolly bows to the priest*"
tellable6 holyghost, I'll pass your message to Xliff
holyghost Int.rand is as clear as my fucking ass in OOP :o| 12:33
Altreus sure it is, means give me a random number between 0 and undefined
tadzik not sure what OOP has to do with it 12:34
holyghost tadzik : class method
tadzik what about it?
Altreus The existence of a class method is not sufficient to determine what it does
holyghost right
tadzik the error tells you exactly that this is *not* a class method
holyghost sure
Altreus So you've said you understand that you can run a class method, but you've not said that you've understood that your example is not one 12:35
holyghost unhails his python code
Altreus Int.rand is python?
tadzik I can imagine an Int.rand meaning "give me something between min- and maxint", but that doesn't make much sense when your ints auto-upgrade to bigints
Altreus I can imagine what it does *with arguments*
absolutely 12:36
tadzik yes, those make it quite a lot clearer :)
moritz Int.rand is a design smell to me
why would an Integer class know how to create a random number?
holyghost *drink! girls!*
Altreus m: say 4.rand
camelia 0.36316631285077294
holyghost father Ted
Altreus roflmao
tadzik m: say 4.Int.rand 12:38
camelia 1.6837977401117348
tadzik *blink*
Altreus m: say 4.rand 12:39
camelia 3.8379443138531912
holyghost m: say Int.Int.0.rand
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed postfix call
at <tmp>:1
------> 3say Int.Int.7⏏050.rand
tadzik that's not something I'd expect out of Int.rand :P
[Coke] m: say 4.rand.Int
camelia 2
Altreus tadzik: you mean not-an-int?
tadzik Altreus: yeah, going back to what moritz++ said
if it's in the context of an Integer I'd expect to roll a random Integer
Altreus Presumably it's inherited
[Coke] docs.raku.org/routine/rand - "Returns a pseudo-random Num" 12:40
Altreus Yeah but how do you know it's in context of an integer?
holyghost moritz : a random number is positive definite between [0+, Inf[
Altreus It's just as likely to be an accident that it was an Int than any other Numeric
holyghost in python you have such a method IIRC also randint(0,10)
[Coke] m: say ^100.pick
camelia Potential difficulties:
Precedence of ^ is looser than method call; please parenthesize
at <tmp>:1
------> 3say ^1007⏏5.pick
^100
holyghost the last is raku one
[Coke] m: say (^100).pick
camelia 35
[Coke] ^^ there's a different way to approach that 12:41
tadzik that smells of just bad Liskov to me
or not
tadzik hurt himself in his confusion
holyghost [Coke] I need a float random [0,Inf[, 1/ Int.new.rand
m: say Int.new.rand
camelia 0
holyghost which is stupid ^^
Altreus random numbers in computing are usually considered to be between 0 and 1, not 0 and inf 12:42
holyghost I don't need interval limits for it
Altreus cos inf is big and 1 is not
tadzik Int narrows down a Numeric, and so the inherited .rand does no longer make much sense, is what I'm trying to say
[Coke] I don't understand your syntax.
moritz IMHO the best design would be:
holyghost Altreus : ANSI C
moritz * a Random class that can be initialied with a seed
holyghost tadzik : right, so I was right too, see Xliffs message 12:43
moritz * the random class can generate random Ints and Nums
Altreus tadzik: but rand uses the number to define the upper bound; this should not affect the type of number returned
rand is always defined as Rat, or whatever
moritz * a dynamic variable $*RANDOM or so that is pre-initialized
holyghost no moritz, again, I'm talking ANSI C : rand, srand
moritz holyghost: yes, that's horrible, because it keeps global state
Altreus Changing method rand(Rat --> Rat) to method rand(Int --> Int) seems ... bad
If you did rand(4.Int) and rand(4.Rat) would you expect the former to return an int? 12:44
holyghost Altreus: AFAIK rand should have no args, srand has a seed
didn't know about Rat
Altreus basically, rand doesn't change its behaviour and that seems more correct to me 12:45
POLA
12:45 aluaces left
holyghost exagerating, if you cannot use libc class wise, some could get confused 12:45
tadzik Altreus: right, I understand. I just don't like it :)
holyghost I'm not saying raku syntax is dumb, but I used a lot of random number generating functions in python 12:46
tadzik I'm with moritz here
holyghost and arc4random() on macs in objc
tadzik it's a different responsibility entirely, and the awkwardness becomes apparent when you consider seeding
Altreus So you want a new language to behave like old languages?
Just use those ones
This one is doing things differently and this is one of those things
holyghost no Altreus, just for fast hacking's sake
moritz if you make PRNGs explicitly instantiatble, you can do very coll things with that 12:47
Altreus just learn the behaviour
moritz like, have different threads with the PRNG seed
or several asynchronnously running simulations with different seeds in the same thread
holyghost arc4random is non-pseudo random for example, and does not take arguments, neither does /dev/urandom or /dev/random 12:48
Altreus but those things don't give you ints, they give you bytes 12:49
they don't even give you numbers
just bytes
typless things
unformatted 12:50
holyghost but as the name says they're randoms
Altreus They're random but they're not structured
holyghost a float modulus and your on (I know it's int based)
Altreus We're talking about structured random
holyghost then shift
moritz holyghost: that's the beauty of putting the generator into a dynamic variable: you can replace it withn one of your choice, as long as it keeps interface compatiblitiy 12:51
Altreus you can't use /dev/urandom without knowing how much you want and waht you want to treat it as
But you *can* use rand(x) without knowing those things
what you actually know is what you want the max to be
And the rest is done for you: you get a Numeric value
This defines how big it is and what its structure is 12:52
It's like you want a high-level language to be a low-level language
holyghost sure, I wrote way too many lines of python 10 years ago, for pygame games and I used randint(X,Y) for a Quest For Glory character sheet system
Altreus but this isn't python
this is raku
holyghost indeed 12:53
Altreus So it works like this, not like that
holyghost randint(X,XX) uses the same things as in raku, so there :o)
problem is mostly the float randoms 12:54
therefor 1 / Int.new.rand(0,1000000), SFY
or something similar which compiles
0,Inf I guess
Altreus why create an object to marshal this routine? 12:55
12:55 |oLa| joined
Altreus m: rand(1,3) 12:55
camelia 5===SORRY!5=== Error while compiling <tmp>
Unsupported use of rand(N). In Raku please use: N.rand for Num or
(^N).pick for Int result.
at <tmp>:1
------> 3rand7⏏5(1,3)
Altreus It even tells you what to do 12:56
holyghost WAM
m: Inf.rand
camelia ( no output )
holyghost m: Int.rand(Inf)
camelia Too many positionals passed; expected 1 argument but got 2
in block <unit> at <tmp> line 1
holyghost m: Inf.new 12:57
camelia ( no output )
holyghost m: rand
camelia ( no output )
holyghost m: rand(Inf)
camelia 5===SORRY!5=== Error while compiling <tmp>
Calling rand(Num) will never work with signature of the proto (*%)
at <tmp>:1
------> 3<BOL>7⏏5rand(Inf)
holyghost botcherous
12:58 kensanata joined
tadzik ....what do you expect rand(Inf) to return? 12:58
m: say Inf.rand
camelia Inf
tadzik looks correct %) 12:59
Altreus I'm pretty sure a random number bounded by Inf runs into the halting problem :P
holyghost rand is a C function for perl5 and raku I guess
Altreus ? 13:00
holyghost TMTOWTDI
Altreus It's a raku function for raku
holyghost ok
Altreus a perl5 function for perl5
a C function for C
there aren't very many names for things ... languages tend to share
holyghost I just need some different things for my random code
right
m: rand(0,Inf) 13:01
camelia 5===SORRY!5=== Error while compiling <tmp>
Unsupported use of rand(N). In Raku please use: N.rand for Num or
(^N).pick for Int result.
at <tmp>:1
------> 3rand7⏏5(0,Inf)
holyghost you see, that was python
use pick, ok
Altreus ok and python has the same chance of picking inf than any other number?
holyghost s/different/several
Altreus as
holyghost I meant randint(0,5) Inf is not in python AFAIK 13:02
Altreus And that wasn't the Inf you input, that was the number just before the Inf that you input, because rand's return value will never equal the upper bound
holyghost indeed
Altreus So don't say it :P
an upper bound of inf is impossible with 2 seconds of thought
[Coke] m: my @a = gather for ^10000 { take Inf.rand} ; @a.unique.say # hey, it... works... 13:04
camelia (Inf)
holyghost if only I didn't have to type 100000000000.rand :-) 13:07
even if it's a Rat
13:09 |oLa| left
timotimo m: say int64.Range.rand 13:10
camelia 8.04785272651649e+18
timotimo m: say int64.Range.rand
camelia -3.398761726145194e+18
timotimo m: say int64.Range.rand
camelia -4.0153277634563707e+18
[Coke] m: 10¹¹.rand
camelia ( no output )
[Coke] m: 10¹¹.rand.say
camelia 96400714556.83554
holyghost m: Int32.Range.rand 13:11
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
Int32 used at line 1. Did you mean 'int32', 'uint32'?
holyghost stupid scheme
m: say In32.Range.rand
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
In32 used at line 1. Did you mean 'int32'?
holyghost m: say Int32.Range.rand
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
Int32 used at line 1. Did you mean 'int32', 'uint32'?
holyghost right 13:12
oddp int32, buddy.
holyghost m: int32.Range.rand
camelia ( no output )
oddp m: say int32.Range.rand
camelia 1100084852.5297184
oddp m: say int32.Range.rand.Int
camelia 835444890
holyghost nice
I use uint32_t in GBA games ;-) 13:13
Altreus Surely Inf.rand is really just an implied upper bound that's really big
holyghost cool
Altreus cos you can't risk rolling a number that doesn't fit in memory and that's basically guaranteed given how many numbers up to inf are bigger than your memory
m: say Inf.rand 13:14
camelia Inf
Altreus or you just alway get inf
not really what was intended I think :D
makes sense though
tadzik it's not wrong :P
perhaps not very useful though 13:15
timotimo there is actually a highest number below Inf that a Num can represent
Altreus Well if a random number between 0 and X is just rand() * X, then all numbers between 0 and inf are either 0 or inf
holyghost y * sin(x) for a nice game AI (throttles upward down on your screen :-) 13:17
going left to right
ok I updated my code to int64.Range.rand instead of Int.rand 13:21
we divide by 48 :-) 13:22
and 1 sometimes :-)
13:23 Xliff left, Xliff-con left 13:27 thundergnat joined
thundergnat m: sub is-po2 ($_ where * > 0) { .msb === .lsb }; say "$_: ", .&is-po2 for 1..8; 13:28
camelia 1: True
2: True
3: False
4: True
5: False
6: False
7: False
8: True
13:28 thundergnat left 13:30 Petr37 joined
Petr37 gday. how can i generate html in Raku? i can't find any module ... 13:31
moritz Petr37: modules.raku.org/search/?q=template
Altreus timotimo: I still get an undef error using subset-is 13:32
:(
Petr37 moritz, thanks!
Altreus Any ideas? github.com/shuppet/p6-api-discord/...38fa8175cb 13:34
Hard to show it usable but the error is: Invocant of method 'Bridge' must be an object instance of type 'Int', not a type object of type 'Int'. Did you forget a '.new'? 13:35
If I call the method with no arguments
13:37 aluaces joined
Altreus oh! 13:40
It's probably the constraint on the method itself, right?
damn
er - in the arguments I mean
timotimo yeah, quite probably 13:43
m: sub test(:$blorp where 16 <= (* // 16) <= 4096) { say "yay" }; test(); test(blorp => 1000); test(blorp => 999999999) 13:44
Altreus This inability to natively use constraints on optional values seems very broken
camelia Cannot resolve caller Real(Whatever:D: ); none of these signatures match:
(Mu:U \v: *%_)
in sub test at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo m: sub test(:$blorp where 16 <= ($_ // 16) <= 4096) { say "yay" }; test(); test(blorp => 1000); test(blorp => 999999999)
camelia yay
Constraint type check failed in binding to parameter '$blorp'; expected anonymous constraint to be met but got Int (999999999)
in sub test at <tmp> line 1
in block <unit> at <tmp> line 1

yay
timotimo stdout and stderr get interleaved wildly, but this works ^ 13:45
not optimal, though
Altreus what does this mean? Type check failed in binding to parameter '&check'; expected Callable but got List ($( ))
I just made another subset for that range :D
13:46 xinming left
timotimo looks like you passed an empty list accidentally? 13:46
what does the code look like?
Altreus sec
13:47 MasterDuke joined
Altreus github.com/shuppet/p6-api-discord/...akumod#L64 13:47
13:47 xinming joined
timotimo ah 13:47
%image-formats{*}:exists is not what you want 13:48
you can * (elem) %image-formats, or possibly just %image-formats
m: my %if = <jpeg .jpeg png .png>; say "png" ~~ %if; say "pnm" ~~ %if
camelia True
False
timotimo just smart-matching will do the exists check i believe
Altreus that seems like a bizarre thing to have to avoid 13:49
gotta say I'm getting a lot of aggro from raku :P
where's my dwim
timotimo some things accept * as an argument
like 1..* for example
Altreus :\ why not other things 13:50
* things seem to pass off as a shortcut to { $_ } but they frequently don't behave that way
timotimo but also putting * inside method calls and such
[Coke] is there a particular case that is confusing for you? 13:51
or a particular place you need * that isn't supported?
timotimo whatever-currying happens when you put operators next to the *, method calls and regular sub calls don't curry
Altreus [Coke]: %image-formats{*}:exists apparently does not function as I expect
[Coke] what do you expect? 13:52
Altreus I expect it to return a boolean indicating whether the argument exists as a key in the hash
I do not understand what actually happened, which is why I asked for help in the first place
But apparently it didn't compile to a callable at all 13:53
dakkar ooh nice 13:54
m: my %a=(a=>1,b=>2);say %a{*}:exists
camelia (True True)
13:54 cpan-raku left
[Coke] what is "subset-is" ? 13:54
Altreus from Subset::Helper 13:55
Now I get: Constraint type check failed in binding to parameter '$format'; expected API::Discord::User::ImageFormat but got Str ("PNG")
13:55 cpan-raku joined, cpan-raku left, cpan-raku joined
Altreus Even though "PNG" ~~ %image-formats is true 13:55
dakkar the WhateverCode goes straight through the subscript operator, so you get a list of True
13:55 codesections joined
Altreus I see 13:55
This is not the sort of thing I expect to have to understand :/
There's a lot of this in raku
dakkar WhateverCode is very magic
Altreus I still don't understand why I was having an error mapping the same array twice
Something to do with Seqs 13:56
dakkar probably because it was a Seq and not an Array
[Coke] is trying to golf this down. there's a lot in your code.
dakkar Seq can be scanned once
Altreus well it was an array before the map
dakkar doesn't have enough context, and should be working
Altreus [Coke]: just this (with raku -MSubset::Helper) gist.github.com/Altreus/f0a2170378...692de8de8b 13:57
in fact 13:58
[Coke] subset ImageFormat of Str where subset-is {%image-formats{$_}:exists}; 13:59
Altreus I've updated it to not use subset-is
let me try that
14:00 aluaces left
[Coke] if I run your example as "a.raku" it outputs PNG 14:00
14:00 maggotbrain left
[Coke] what is your raku version? 14:00
14:00 aluaces joined
Altreus This is Rakudo version 2020.01 built on MoarVM version 2020.01.1 14:00
[Coke] the original {*} doesn't work in 2020.06+, but your gist example did. might be worth updating. 14:01
14:01 maggotbrain joined
Altreus I'll kick it off 14:01
14:06 gnufr33dom joined
kawaii I like how easy it is to download a new version of Rakudo now without needing to compile anything 14:06
tellable6 2020-07-22T22:29:16Z #raku <SmokeMachine> kawaii now this works: www.irccloud.com/pastebin/uVZiQ0Da/
14:10 markong left
timotimo i'm only at the keyboard intermittently, i wonder how the version with %image-formats directly worked 14:14
(or didn't work)
14:14 sena_kun joined 14:16 Altai-man_ left
Voldenet 'without needing to compile anything' – not if someone uses gentoo ;) 14:18
14:18 pi4 joined
codesections Or you count byte-compiling raku code :) 14:18
Voldenet but on gentoo things aren't installed, they just emerge 14:19
codesections »ö« 14:20
14:21 pi62 joined 14:22 Kaiepi left, Kaiepi joined 14:23 Kaiepi left 14:24 Kaiepi joined 14:25 Kaiepi left 14:26 pi62 left
pi4 q 14:27
14:27 andrzejku left 14:31 Geth_ left 14:32 Geth joined 14:37 vrurg left 14:38 vrurg joined 14:44 Petr37 left
tbrowder hi, folks! 14:48
kawaii o/ 14:49
tbrowder i wonder if we have a problem with installing modules with a "bin" entry in their META6.json file? 14:50
kawaii: \o
does zef overwrite an existing bin file of the same name but different module? 14:51
holyghost ambiguity of raku gets better every day 14:54
oh well
tbrowder if so, then that seems to be a future problem unless we do something to at least warn of the problem via zef.
holyghost: how do other langs or distros handle that problem? 14:55
i don't think it's solely a raku problem. 14:56
check out debian for example
codesections tbrowder: many langs don't let you install binary packages via the language package manager
14:57 dre joined
tbrowder i think perl does 14:57
14:58 dre left, gnufr33dom left
tbrowder but i'm not sure 14:58
i have had similar problems with npm
codesections and, for distros, they traditionally solve the problem by being fully in control of their repos and making sure that the packages with the same name refer to the same code 14:59
holyghost it's zef not cpan on the command line
tbrowder yes
holyghost as far as I understand you, zef does not install needed libs (in C for example)
but you knew that I guess
codesections (I think Nix and Guix have a more advanced solution, but I don't fully understand it)
tbrowder but i use perl modules with raku and use cpanm to install perl modules 15:00
15:02 eaterof joined 15:03 eater left
lizmat hmmm... I guess I should give it a less obvious name 15:04
tbrowder let me see if i get a warning from zef... 15:05
cpan-raku New module released to CPAN! Hash2Class (0.0.4) by 03ELIZABETH 15:08
15:11 MasterDuke left
cpan-raku New module released to CPAN! Hash2Class (0.0.5) by 03ELIZABETH 15:16
New module released to CPAN! Hash2Class (0.0.6) by 03ELIZABETH 15:24
15:47 skids joined, KnightLautrec[m] left 15:51 Sgeo joined
holyghost lizmat : so you're hacking some perl6/raku, I see :-) 15:52
lizmat yeah, got bored with working on Raku itself 15:53
holyghost sure, ga
(ga == go ahead, ust to make sure) 15:58
*just
16:00 kensanata left 16:13 Altai-man_ joined 16:16 sena_kun left, abraxxa left 16:36 dakkar left 16:40 jmcgnh left
tbrowder lizmat: see my pr for h2c 16:42
lizmat holyghost: understood :-) 16:43
16:47 ufobat left 16:50 jmcgnh joined 16:53 xinming left 16:54 melezhik joined, xinming joined
melezhik I am impressed how easy it was to install Raku on mac OS using rakubrew, great tool! 16:55
it took me a few seconds to install the latest distribution of Rakudo with zef
and all PATHs are here and everything within my home, pretty neat! 16:56
lizmat :-)
melezhik works as a charm
and Sparrow works on mac os too, it only requires gnu-tar (instead of standard mac bsd tar), which is not big deal with homebrew 16:57
so I am ready for a battle ))))
kawaii the only gripe I have with Raku's module ecosystem is that modules don't tell you what package you're missing when they fail to install, and some guesswork is required to search through apt and figure it out 17:09
IIRC, some work is being done/discussed around this topic
melezhik kawaii do you system dependencies for Raku modules? 17:10
you -> you mean
kawaii yep
melezhik well, it's quite discussed problem ))), let me get you some links 17:11
that could be of interest
kawaii that would make for interesting reading, thanks :)
melezhik github.com/ugexe/zef/issues/356 , github.com/Raku/ecosystem/issues/505 17:12
but if you want my view on this - use could Sparrowdo to manage system dependencies for you raku modules 17:14
if you take a look at this "patches" that are used in RakuDist - github.com/melezhik/RakuDist/tree/...es/patches 17:15
you'll get an idea
basically you may install Raku modules using Sparrow: `package-install "gcc openssl openssl-devel"; zef "Cro::TLS";` 17:18
that is it
at least this is how you can get _repeatable_ deploy scenarios for your Raku code 17:19
SmokeMachine melezhik: does that RakuDist Red test environment still exist? 17:24
melezhik SmokeMachine it does, do you need it? 17:25
17:25 dataangel joined 17:26 skids left
rypervenche kawaii: Do you know if it's possible to send audio (I guess via a buffer using ffmpeg) to a bot in API::Discord? Or would that need to be added to the module? 17:29
SmokeMachine Yes, I'm planing to take a look at those Pg problems this weekend, and try to do a CI schema to test all the tests on PG, if possible 17:30
kawaii rypervenche: not possible at this time, IIRC Raku would need a module to handle the Opus codec (all that Discord supports), and we have no code in the module to handle voice at all yet anyway - also the voice endpoints on Discord's API are ENTIRELY undocumented :D
17:31 skids joined
rypervenche kawaii: And what if the source/file were already in the Opus codec? Would that be possible at this time? 17:32
Oh, I missed the "we have no code" part.
kawaii voice stuff is the very last thing on our roadmap for the module, because it's going to be annoying/difficult 17:33
rypervenche All righty. I was just curious since I'm learning to write a bot. :) 17:34
kawaii rypervenche: there's a link to our Discord server in the README if you have questions and stuff :) 17:39
there's not really many people there, but feel free to ping me if you need help
SmokeMachine kawaii: you are playing with discord bot + Red, maybe you could gimme some help on a old project of a IRC bot + Red: github.com/FCO/RedBot/blob/whateve...in/red-bot :) 17:44
tony-o_ [Coke]: i have a raku nightly building 18:01
tellable6 2020-05-29T17:39:25Z #raku-dev <patrickb> tony-o I'm still interested in your revamp of the ecosystem. Are you still planing on going forward with that?
2020-06-11T10:58:35Z #raku-dev <patrickb> tony-o I'm still interested in creating a more robust p6c ecosystem. But I'm currently kind of blocked by you spearheading a similar effort. Is there anything I can do to speed things up on your side?
tony-o_ .tell patrickb ugexe just told me there's been some pining for it. currently working on it again. 18:02
tellable6 tony-o_, I'll pass your message to patrickb
tony-o_ [Coke]: hub.docker.com/repository/docker/t...do-nightly 18:04
18:04 tony-o_ is now known as tony-o 18:08 skyl4rk left 18:10 ensamvarg3 left, melezhik left 18:11 skyl4rk joined 18:14 MetroMSI joined, wklew joined
tony-o kawaii: nine, ugexe, and i discussed the system deps problem a few years ago at PTS. not sure if we agreed on anything for it 18:14
18:15 sena_kun joined
tony-o kawaii: this was the test for it: github.com/tony-o/p6-warthog 18:15
18:15 wklew left 18:16 wklew joined, Altai-man_ left 18:23 Black_Ribbon joined, bocaneri left
[Coke] tony-o: sorry, what was that in reference to? 18:28
18:30 codesections left
tony-o docker images for raku 18:30
ah, sorry, that might've been from last night - my buffer wasn't scrolling since i rejoined the channel. 18:34
[Coke] i think it was docker images for raku docs that we were discussing. 18:35
but I may have been mistaken.
anyway, thanks. :)
cpan-raku New module released to CPAN! Hash2Class (0.0.7) by 03ELIZABETH 18:36
tony-o [Coke]: i can add a docs image to that nightly if that's interesting. 18:37
18:51 Kaiepi joined
cpan-raku New module released to CPAN! PDF::Tags (0.0.2) by 03WARRINGD 19:02
19:03 codesections joined 19:14 Possum joined
cpan-raku New module released to CPAN! Hash2Class (0.0.8) by 03ELIZABETH 19:24
19:26 xelxebar_ joined, xelxebar left, sena_kun left 19:27 sena_kun joined
[Coke] tony-o: ask jj. 19:40
19:42 skids left 19:46 skids joined
rypervenche What exactly is the expanded equivalent of this? my API::Discord $discord .= new :$token; 19:50
SmokeMachine my API::Discord $discord = API::Discord.new :$token; 19:51
timotimo no need for the colon after new?
SmokeMachine timotimo: yes, sorry: my API::Discord $discord = API::Discord.new: :$token; 19:52
timotimo m: class T { method test(*%a) { .say for a } }; my T $t = T.new :blorp
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
a used at line 1
timotimo oops
m: class T { method test(*%a) { .say for %a } }; my T $t = T.test :blorp
camelia blorp => True
timotimo it does work without the colon!
SmokeMachine odd
timotimo not so surprising
SmokeMachine adverb? 19:53
rypervenche Ahh, I should add the colon I guess.
I originally had "my $discord = API::Discord.new(:$token);", but I thought I should probably add a type constraint. 19:54
19:56 skids left, aborazmeh joined, aborazmeh left, aborazmeh joined, markong joined 19:57 aborazmeh left 19:58 skids joined 20:00 Possum left
guifa rypervenche: I believe named arguments don’t actually have to be indicated as arguments per se with and could even be stacked: 20:01
m: class A { method a(*%a) { say %a } }; A.a :1a:b(2):c<3>:d('4') 20:02
camelia {a => 1, b => 2, c => 3, d => 4}
20:04 Petr37 joined
guifa I think but don’t quote me that named args like that are first given to the operator, and those pass them through if they can’t do anything with them 20:04
oddp Btw., thanks for the july grant report. And have a fun and relaxing vacation! 20:05
20:11 Petr37 left 20:13 Altai-man_ joined
cpan-raku New module released to CPAN! Red (0.1.25) by 03FCO 20:13
20:16 sena_kun left, wklew left 20:20 andrzejku joined 20:27 rindolf left 20:37 Altai-man_ left 20:38 sena_kun joined 20:48 Black_Ribbon left 20:49 xinming left, xinming joined 20:52 andrzejku left 20:55 kensanata joined 20:56 wklew joined 21:14 abraxxa joined 21:18 Black_Ribbon joined
tony-o hey all. a heads up that i submitted a tpf grant request for building out an autonomous raku ecosystem. 21:31
21:35 gordonfish left
kawaii tony-o: are these grant requests publically logged and/or discussed anywhere? 21:35
tony-o kawaii: they are. they're on the TPF site, i just submitted this one so it isn't on there yet (www.perlfoundation.org/) 21:36
21:37 gordonfish joined
tony-o kawaii: here is a gist of the proposal: gist.github.com/tony-o/07fdf8b3a0f...4131ac224b 21:37
kawaii thanks! 21:38
21:43 aluaces left 21:47 wamba left 21:50 abraxxa left 21:55 abraxxa joined 22:00 tejr joined 22:03 squashable6 left 22:04 skids left 22:05 squashable6 joined 22:06 Xliff joined 22:07 markoong joined 22:08 markong left
Xliff Ahhh... I think I just did a nice bit of meta-programming.... 22:10
tellable6 hey Xliff, you have a message: gist.github.com/2ad36d59c036273fbf...8995a429e1
Xliff repl.it/@Xliff/AvariciousRectangul...ng#main.p6
Actually, that's...
repl.it/@Xliff/AvariciousRectangul...#main.raku
Generates method calls from C typing information in POD comments. :) 22:11
22:11 abraxxa left 22:12 abraxxa joined 22:13 Altai-man_ joined 22:15 Petr37 joined 22:16 sena_kun left, aborazmeh joined, aborazmeh left, aborazmeh joined
Petr37 sorry... Cro Services or Bailador for web development? 22:17
Xliff Cro. I don't know if Bailador is still under development.
Petr37 Xliff, thanks 😊 22:19
Xliff yw
oddp Since when are they requiring this clowning around with the google captchas on repl.it? :( 22:27
Xliff oddp: What? When? 22:28
I haven't hit a captcha on repl.it all day...
oddp Solved two and it's still not showing me code.
Xliff Which link? Mine?
oddp Yeah. 22:29
Xliff Huh! Still not getting one and I logged out. Lemme try something else.
oddp: Try this one -- glot.io/snippets/fpkmj1j6d5 22:30
oddp Thanks. All good. 22:31
22:31 Petr37 left
Xliff Yeah. I generally don't like glot.io because it's hard to see the code. 22:31
I wonder if this would make a good blog post....
22:38 marcusr left 22:39 kensanata left, marcusr joined 22:40 marcusr left 22:42 marcusr joined 22:45 leont left 23:01 aborazmeh left 23:02 tejr left 23:05 OpenZen joined 23:09 tejr joined 23:17 tejr left 23:22 tejr joined
cpan-raku New module released to CPAN! Red (0.1.26) by 03FCO 23:33
23:41 markoong left 23:44 pecastro left 23:54 Maylay left 23:57 Maylay joined 23:59 DarthGandalf left, schlaftier9 joined, schlaftier left, schlaftier9 is now known as schlaftier