🦋 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:03 lizmat joined 00:10 pecastro left 00:11 hungrydonkey joined
lizmat weekly: www.flickr.com/photos/wendyga/albu...2960601066 00:20
notable6 lizmat, Noted! (weekly)
00:24 hungrydonkey left, mahmudov left, hungrydonkey joined
rypervenche I'm thinking of going to the Perl and Raku conference in Houston, although I'm not sure if there will be enough Raku stuff. I'm not learning Perl and I imagine it will be mostly Perl. 00:26
00:27 hungrydonkey left
SmokeMachine foo222: but that’s not raku code... that’s a kind of configuration to define how to recognise patterns on stream of events... 00:32
foo222: just to enrich it with new higher level events... 00:34
(Sorry my battery had finished... and now, the cellphone’s battery is almost finishing either...) 00:37
00:46 sena_kun left
foo222 SmokeMachine: Sounds like you're saying you can't have Rakudo as a dependency. Anyhoo, I've got to turn in for the night. o/ 00:47
00:51 Kaiepi left 00:52 Kaiepi joined 01:01 hungrydonkey joined, sena_kun joined 01:06 hungryd73 joined 01:08 hungrydonkey left
timotimo RFC: give both ceiling and floor an optional positional parameter that works very much like the parameter round takes 01:13
guifa Given I was the one who asked for the round parameter … I’ll ++ the RFC 01:27
01:28 aborazmeh left 01:35 wildtrees left
rypervenche I've got two variables that contain strings. If I want them to be concatenated together and be a new variable name and then interpolate it, is this the correct syntax to use? gist.github.com/rypervenche/5c9590...216d17cd3d 01:38
discord6 <theangryepicbanana> looks good 01:39
rypervenche Nice. I never figured out how to do that in Bash. Good to know I can do it in Raku. 01:42
02:01 ensamvarg joined
guifa When I first saw FALLBACK I didn’t see much use to it 02:07
Now that I’m redoing CLDR’s backend, it’s super useful
I can enable both hash and attribute based access (which actually avoids the ::($foo) if trying to access things from a variable because .{$foo} ). Elements that are known in advance (e.g. that I’ve explicitly proivded support for) can be set as attributes with faster access. 02:11
02:11 molaf left
guifa Anything that I haven’t gotten support for yet (or newly add stuff) can be caught by FALLBACK that reads from a hash. From the user’s perspective, you can use both atributes or hash access, with no difference in programming, albeit with a speed increase for using attributes that I’ve defined 02:11
02:12 ufobat_ joined 02:15 ufobat left 02:17 guifa2 joined 02:23 molaf joined 02:38 Kaiepi left 02:39 Kaiepi joined 02:45 Maylay left 02:46 sena_kun left 03:01 Geth joined 03:02 sena_kun joined 03:06 Maylay joined
rypervenche I've created a subset for my MAIN (subset EightUInt of UInt where 1 .. 8), and 03:09
03:09 foo222 left
rypervenche oops. And my parameter is optional. It errors out if I don't put in an argument for that parameter. 03:09
It gives "Use of uninitialized value of type Int in string context." 03:10
03:15 leont left
guifa2 code? you're probably trying to print out an object 03:32
03:38 Sgeo__ joined 03:41 hungrydonkey joined, Sgeo_ left
rypervenche $*USAGE maybe? 03:42
One sec
03:45 hungryd73 left
rypervenche guifa2: gist.github.com/rypervenche/38c938...57774c0d54 03:47
guifa2 aha it has to do with the subset which is expecting it to be defined 03:50
change it to subset EightUInt of UInt where !.defined || 1 .. 8;
You've said, effectively, that EightUInt can only be the values 1, 2, 3, 4, 5, 6, 7, 8. And undefined value, by definition, can't be any of those 03:51
rypervenche: I can see how that's a bit unexpected at first though 03:53
rypervenche Ahhh, that makes sense.
I guess I was thinking that if I didn't pass any option for that parameter it would be undefined, but it's actually an (Int). 03:54
Ahh, undefined would be (Any), or in this case (Int), since I set its type. Is that right? 03:56
guifa2 rypervenche: It will be (Int) yes 03:58
rypervenche Ok, I understand. Thank you for your help. 03:59
guifa2 In fact actually
If you look at the definition for UInt, you'll see the same trick I had to do:
subset UInt of Int where {not .defined or $_ >= 0};
04:00 Doc_Holliwood left
rypervenche Oh! I've seen that before. 04:00
I'll have to keep working on this tomorrow. It's getting late here. Thanks again for your help. 04:02
guifa2 Since you're only doing 1..8, there's no need to make it a subset of UInt. Subset checking has to be done at run time, and I believe it will first check that $generation is a UInt, and *then* check that it's your EightUInt
So just make it a subset of Int and be done :-)
Sleep well! 04:03
04:15 cpan-raku left, cpan-raku joined, cpan-raku left, cpan-raku joined 04:17 gabiruh left, gabiruh joined 04:18 guifa2 left 04:33 molaf left 04:45 sena_kun left 04:59 sena_kun joined 05:18 Doc_Holliwood joined 05:46 Actualeyes left, Actualeyes joined 05:53 rindolf joined 06:13 [Sno] left 06:26 nt80 left, nt80 joined 06:31 Sgeo_ joined 06:35 Sgeo__ left
holyghost I've added another MAP learner to github.com/theholyghost2/p6-Game-Bayes 06:39
MAP = max a posteriori
It uses midpoints of intervals and is called the grid method
Now where it gets interesting you can use complex intervals by rotating complex to real numbers and then real to complex and so on 06:41
You extrapolate, interpolate and so on 06:42
So you have an extra dimension for probabilities which are potentials by using the complex number circle 06:43
then you can transform/surrogate your data by any way
06:44 stoned75 left, sena_kun left 06:49 ambs left 06:58 nebuchadnezzar joined 07:00 aluaces joined 07:02 sena_kun joined 07:04 NODE left, NODE joined 07:06 squashable6 left, ensamvarg left, squashable6 joined 07:19 ambs joined
holyghost .tell Xliff thanks for updating the raku/perl6 compiler :-) 07:21
tellable6 holyghost, I'll pass your message to Xliff
07:33 Doc_Holliwood left 07:47 domidumont joined 07:49 Actualeyes left 07:53 hacktortu left 08:00 kensanata joined 08:06 hacktortu joined 08:12 NODE left 08:13 NODE joined 08:14 NODE left 08:15 NODE joined
SmokeMachine foo222: no, that’s not what I’m saying… I’m saying that I want the user to write a simple set of rules instead of writing a program. And I want to hide the complexity of handeling the events away from the user. 08:23
tellable6 SmokeMachine, I'll pass your message to foo222
SmokeMachine foo222: I mean, I’m writing a service and not a module... 08:24
tellable6 SmokeMachine, I'll pass your message to foo222
08:30 Actualeyes joined 08:40 Doc_Holliwood joined 08:46 sena_kun left 09:02 sena_kun joined 09:08 dakkar joined 09:15 zakharyas joined 09:23 Doc_Holliwood left 09:27 zakharyas left 09:28 pecastro joined 09:29 zakharyas joined
SmokeMachine foo222: now, my “event parsing language” looks more a mix of classes and grammar: gist.github.com/FCO/82b48d1eb3e212...78752281a4 09:46
tellable6 SmokeMachine, I'll pass your message to foo222
09:51 veesh left 09:53 wamba joined 10:03 veesh joined 10:10 foo222 joined 10:12 abraxxa1 left, abraxxa joined
SmokeMachine does any one have any advice about that ^^? 10:19
foo222 SmokeMachine: I again acknowledge your "user ... simple ... rules instead of ... program. And ... hide ... handeling the events" comment. I'm also mulling your new "event parsing language". I acknowledge possibilities inherent in grammar paradigm. And in use of $/ matching behavior & syntax. In return, I would appreciate *non-dismissive* 10:20
recognition of this: tinyurl.com/rnxxztd
tellable6 2020-02-05T08:23:53Z #raku <SmokeMachine> foo222: no, that’s not what I’m saying… I’m saying that I want the user to write a simple set of rules instead of writing a program. And I want to hide the complexity of handeling the events away from the user.
2020-02-05T08:24:43Z #raku <SmokeMachine> foo222: I mean, I’m writing a service and not a module...
2020-02-05T09:46:22Z #raku <SmokeMachine> foo222: now, my “event parsing language” looks more a mix of classes and grammar: gist.github.com/FCO/82b48d1eb3e212...78752281a4
SmokeMachine foo222: using multi functions for that is very good… I use it a lot on Red translators (github.com/FCO/Red/blob/master/lib....pm6#L202) but the idea here is kinda new language, I mean a DSL, a language to recognise event patterns and create new events... 10:28
lizmat weekly: video.fosdem.org/2020/AW1.125/rakulang.mp4 10:37
notable6 lizmat, Noted! (weekly)
lizmat alas, no actual video :-( 10:38
foo222 SmokeMachine: I recognize what you say about your idea and am not at all dismissing it; but, first, I'm requesting that you take a step back and *give proper attention*, for more than half a message, on clarify why the "good" isn't good *enough* for "that", given that "that" is (arguably) sufficiently flexible and (unarguably) relatively high 10:40
performance matching in an *existing* DSL (sig based pattern matching) that's arguably fairly well suited to the task (recognizing event patterns and creating new events, even if there's scope for wrapping it in extra syntax sugar for novice users)
10:41 nt80 left, nt80 joined
SmokeMachine foo222: are you asking why I think I should not do that as a module? (I think my english isn’t good enough, sorry) 10:43
10:47 sena_kun left, Doc_Holliwood joined
SmokeMachine foo222: but if that’s what you are asking, that’s the answer: because I want it to be a “product” that will be running, and when it receive a new set of rules, it start processing the new events… without downtime and without the user having to implement it. It should connect into different streams: log files, kinesis, Kafka, logstash, etc. and process it’s events without the user knowing how they work. it 10:48
should be not a single point of failure, it should scale horizontally and the user shouldn’t be worried about that.
foo222: I’m planing of writing an event processor instead of something that can be used on other people programs as a lib to process events it receives... 10:50
foo222: please, let me know if I haven’t understood your question… or if I couldn’t express my self on my answer... 10:51
foo222: and other reason is that I don’t want the user to know raku to use that 10:53
10:54 vike joined
foo222 SmokeMachine: I believe I understand what you've said. What *I* am saying is that I happen to know of an *existing* product that I believe handles the examples you've provided thus far, with an *existing* simple DSL well suited to the task, that, with a light sprinkling of sugar, wouldn't require a user to know Raku; and I'm dwelling on that 10:54
product so you might explain how the product *you* envisage is fundamentally better in some ways than that existing product.
SmokeMachine foo222: now I think I understood you! Sorry! what’s that product you know? 10:56
foo222 SmokeMachine: Before I reveal that, would you agree that it would make sense for you to properly consider aspects like its UX, performance, tech stack, community, possibilities for growth, sustainability, etc.? 10:58
SmokeMachine sure 10:59
foo222: ^^ 11:01
11:02 sena_kun joined
foo222 SmokeMachine: So, the product I'm suggesting is Rakudo, with a suitable sprinkling of sugar so the user doesn't know that the underlying syntax and mechanism is Raku and Rakudo function binding and object generation. 11:02
SmokeMachine: And that, given sufficient motivation, it would be easy enough to port it to be a non Raku/Rakudo product. 11:03
11:04 wamba left
SmokeMachine foo222: I agree that’s a good idea… but I think the final way the users would use it would be better with a specific DSL for that... 11:05
foo222: for example, `multi event($ (:type<request>, :params{ :path</login>, :method<GET>, | }, |)) {}` is much worse than `<request path=“/login” method=“GET”>`, imho 11:09
11:09 hacktortu left
foo222 SmokeMachine: Sure. But signatures *are* a DSL, and you can add sugar to create a specific DSL atop it if need be. I guess it boils down to both Raku's signature driven multiple dispatch and its grammars being pattern matching + reaction protocols, and considering both of them as plausibly appropriate conceptual models, and their respective 11:09
*conceptual* strengths and weaknesses for the task at hand.
SmokeMachine foo222: could you, please, show me an example of how do you think my example should be written? 11:13
foo222 SmokeMachine: `multi event($ (:type<request>, :params{ :path</login>, :method<GET>, | }, |)) {}` is *raw Raku*. `<request path=“/login” method=“GET”>` is an as-yet non-existent DSL. There's no reason I yet see why it this new DSL could not map to the former Raku code. There would be no reason for the user of the new DSL to know that but, 11:15
there again, it *is* worth considering because A) performance, B) *some* users *might* know Raku, and C) spike-to-sustainabilty.
11:17 nt80 left, xelxebar left
foo222 SmokeMachine: Your example might, perhaps, be written `<request path=“/login” method=“GET”>`. There are all sorts of possibilities. 11:17
11:18 xelxebar joined 11:23 hacktortu joined 11:24 [Sno] joined, xelxebar left 11:25 xelxebar joined, Black_Ribbon left, El_Che left
foo222 SmokeMachine: And, maybe I'm wrong, but I'm thinking that A], and B] and, especially, C], are important. 11:28
SmokeMachine foo222: but I think the biggest problem is that do not match my algorithm… (at least not the one I’m thinking of writing...)
foo222: for example, if I have 1 rule loke this: 11:29
foo222 SmokeMachine: And *that* is why I brought this up *first*, before dwelling on syntax
SmokeMachine: (where *that* is the algo thing you just mentioned)
SmokeMachine foo222: www.irccloud.com/pastebin/w9xmcLaG/ 11:30
11:33 nt80 joined
SmokeMachine foo222: Im planning on adding on my storage an key: `type:request method:GET path:/login` and if I find on the stream something like: Event.new: :type<request>, :method<GET>, :path</login>, :request-id<123>` I’ll ask my storage if anything stored there matches that… if it does, so I’ll add on the storage: `type:response request-id:123` 11:35
foo222: Im planning on adding on my storage an key: `type:request method:GET path:/login` and if I find on the stream something like: `Event.new: :type<request>, :method<GET>, :path</login>, :request-id<123>` I’ll ask my storage if anything stored there matches that… if it does, so I’ll add on the storage: `type:response request-id:123`
foo222 SmokeMachine: Good. Now we're getting to what matters. :) Have you heard of Linda? 11:36
en.wikipedia.org/wiki/Linda_(coord..._language) 11:37
11:37 kensanata left
SmokeMachine No… what’s Linda (it should be difficult to search… Linda means beautiful in portuguese...) 11:37
11:37 cpan-raku left 11:38 El_Che joined, cpan-raku joined, cpan-raku left, cpan-raku joined
foo222 SmokeMachine: I added a link to it ^^ 11:40
SmokeMachine foo222: yes, reading it… thanks 11:41
11:42 leont joined
foo222 SmokeMachine: It's more general than event streams, but embodies the principle of matching tuples, removing them from memory if matched, and putting new ones back in; it's well matched to distributed processing; and these two aspects directly map to cro's focus (distributed processing) and tuple matching (sig binding); i see more than a glimmer of 11:48
scope for cro becoming increasingly linda-ish post its 1.0; and see a hint of possibilities of synergy between what u describe for events and where cro is headed (again, cro is, overall, a distributed systems toolkit -- a natural fit for event streams processing -- not a web framework)
(not *just* a web framework; though clearly an excellent toolkit for that domain too) 11:50
jnthn I'd somewhat expect supply/whenever to be looked to for event processing, because a Supply *is* an event stream. 11:53
11:55 Doc_Holliwood left
SmokeMachine jnthn: I was planing of each remove stream my service connect to create a supply and I’d get the events by that supply... 11:58
foo222: are you suggesting to use the tuplespace as my storage?
11:59 aborazmeh joined, aborazmeh left, aborazmeh joined 12:05 SQuoll joined 12:09 kensanata joined 12:11 xinming_ left
foo222 SmokeMachine: It's first and foremost a general and conceptual point. "event streams" strike me as ultimately being a subset of "distributed processing". And matching (unstructured) streams of (structured) data and inserting new such data as a subset of "Linda-like systems" (en.wikipedia.org/wiki/Linda-like_systems). Conceptually. And, 12:12
perhaps, for appropriate use cases, technically and perhaps tech-stack wise.
12:13 xinming_ joined 12:20 zakharyas left 12:33 squashable6 left 12:35 squashable6 joined 12:46 aborazmeh left, sena_kun left 13:01 sena_kun joined 13:29 Doc_Holliwood joined 13:38 telex joined 13:43 foo222 left 13:48 lucasb joined 13:57 wamba joined 14:04 Doc_Holliwood left, molaf joined 14:09 zakharyas joined 14:46 sena_kun left
uzl[m] .tell lizmat I really liked all the FOSDEM promotional material for both Perl and Raku, especially for the latter one ;-)! Larry's posters and stickers reminded me of this one: comic.browserling.com/95 14:50
tellable6 uzl[m], I'll pass your message to lizmat
14:52 jhill left
uzl[m] I have `module A { sub hi { say "Hi" } }` in a .raku file and I'm trying to invoke `hi`. Quite embarrasing but how do I do it ;-)? 14:52
jnthn uzl[m]: You need to declare it `our sub` instead, so it's visible. Then just A::hi(). 14:53
14:53 jhill joined
uzl[m] jnthn: I always forget about the `our` declarator and never seem to remember that `sub` is short for `my sub`. Thanks! 14:55
15:00 sena_kun joined 15:10 rypervenche joined 15:12 SmokeMachine joined 15:19 aluaces left 15:37 molaf left 15:45 Doc_Holliwood joined 16:06 abraxxa left 16:07 El_Che left
jjatria Am I fundamentally misunderstanding private attributes here? 16:14
m: class A { has $!secret is required }; A.new: secret => 42 16:15
evalable6 (exit code 1) The attribute '$!secret' is required, but you did not provide a value for it.
in block <unit> at /tmp/ZTqP_7Bd_Q line 1
jjatria If I am, then at least it looks like I'm not the only one: raku.guide/#_encapsulation 16:17
leont It appears I can not define an infix ! operator 16:18
Getting a "Negation metaoperator not followed by valid infix" error when I try
jnthn jjatria: That code can never succeed 16:20
jjatria: Private attrs cannot be initialized from the outside; one would need a BUILD/TWEAK submethod to arrange for that
jjatria So the code in raku.guide is also wrong? 16:21
jnthn Where exactly? 16:22
16:22 El_Che joined
sena_kun `my $john = Human.new(name => 'John', age => 23, sex => 'M', nationality => 'American');`, I think 16:22
jnthn But hwere does it use `is required`?
It could be more clear that the constructor arguments are useless, I guess
But it doesn't claim that anything useful happens until they are turned into `$.foo` 16:23
jjatria Hm, I don't think that _trying_ to be an example of useless constructor arguments
Reading that section the implication is that the constructor will set those attributes, even if they don't have accessors 16:24
jnthn Yeah, that could be clarified. Perhaps contact the author. 16:25
rypervenche leont: I think something similar to this may be why: perl6advent.wordpress.com/2009/12/...erloading/
sena_kun jjatria: you can file an issue at github.com/hankache/rakuguide/issues which will be appreciated! Thanks for noting this. 16:26
jjatria 👍
jnthn sena_kun++ # knowing where to file it :)
rypervenche leont: I think it would be better to make something custom, however, so as not to cause issues later on in your code. 16:28
leont It's not all that important, just trying to emulate erlang's send operator in my actor library 16:29
16:30 domidumont left, domidumont joined 16:31 Guest47772 left 16:43 patrickb joined 16:45 rindolf left 16:47 sena_kun left 16:53 rindolf joined 17:01 sena_kun joined, cooper left 17:06 aluaces joined 17:07 NODE left, NODE joined 17:10 kensanata left 17:16 wildtrees joined
jjatria I tried using `BUILD` to set that private attribute, and although it works, I seem to have broken something about the other attributes 17:20
m: class A { has $!x; has $.a; method BUILD (:$x) { $!x = $x } }; say A.new( x => 42, a => 24 ).a 17:21
evalable6 (Any)
17:22 NODE left
uzl[m] m: class A { has $!x; has $.a; method BUILD (:$x, :$a) { $!x = $x } }; say A.new( x => 42, a => 24 ).a 17:22
evalable6 (Any)
uzl[m] m: class A { has $!x; has $.a; method BUILD (:$x, :$!a) { $!x = $x } }; say A.new( x => 42, a => 24 ).a
evalable6 24
17:22 NODE joined
uzl[m] jjatria: By defining BUILD, you've to take care of the attributes as well. 17:23
If you only want to set the attributes, you can do right in the BUILD method's signature 17:24
m: class A { has $!x; has $.a; method BUILD (:$!x, :$!a) { } }; say A.new( x => 42, a => 24 ).a; 17:25
evalable6 24
17:25 NODE left, NODE joined
uzl[m] *you've to take care of any other attributes you want to be set during object construction, including those with automatically-created accessors. 17:26
As far as I know, the chain goes like this: constructor (by default, new) -> bless -> BUILD -> TWEAK 17:27
jjatria So that's why when I used TWEAK rather than BUILD I was fine: because the default BUILD was dealing with the other attributes. Makes sense 17:29
And I guess traits like `is required` get checked after BUILD but before TWEAK? 17:30
17:30 dakkar left
Doc_Holliwood jjatria: stackoverflow.com/questions/595680...ng-methods 17:31
might be helpful
17:38 chloekek joined 17:41 nt80 left 17:42 domidumont left, domidumont joined 17:49 iviv joined 18:03 hungrydonkey left, ufobat_ left 18:15 skaji_ left 18:16 skaji_ joined
patrickb jmerelo: I have cleaned up the the GSoC loads. If you could have a look that'd be great. 18:16
tellable6 patrickb, I'll pass your message to jmerelo
18:18 zakharyas left 18:21 nightfrog joined 18:28 mensvaga left 18:33 Sgeo__ joined 18:36 Sgeo_ left 18:37 Actualeyes left 18:40 [Sno] left 18:46 sena_kun left 18:54 mahmudov joined
TreyHarris I just ran `raku` (no args for the REPL) from a brand-new (well, actually, Jan 29) rakudo build in my home directory. It took a rather long time to start, so I hooked lsof to it, and it appeared to be scanning nearly every file in my home directory. Like, at one point it had /home/trey/src/emacs/etc/refcards open 19:01
19:01 sena_kun joined
TreyHarris It's not a one-time precomp thing, either, I just tried again 19:03
I have to cd into an more-empty directory for raku to quickly start
oops, wrong channel, sorry
19:09 Actualeyes joined 19:19 [Sno] joined 19:22 wamba left 19:25 jjatria joined, jjatria left 19:27 Sauvin left 19:28 CIAvash joined
CIAvash I created a new website for Raku, I want to know if the community is interested. It's created with Hugo, it's multilingual and it has a blog. Here is a demo: raku-demo-temp.ciavash.name/ 19:28
Other blogs can be created as well, for example a community blog, or maybe even advent and weekly blogs.
19:30 xelxebar left, xelxebar joined
TreyHarris CIAvash: nice 19:31
CIAvash: is te Hugo source published somewhere? 19:32
rypervenche I do like Hugo.
tadzik CIAvash: it looks very nice! The nested scrolling is a bit confusing though 19:33
TreyHarris tadzik++
Geth hasn't sent any commit messages to this channel in a couple days--anyone know why? 19:34
CIAvash TreyHarris: no, but I plan to, I wanted to know if I should put the website somewhere, or the community is interested in having it as the main website!!
19:35 nine left
MasterDuke TreyHarris: tyil runs Geth now 19:35
TreyHarris CIAvash: hmm, like a perl6.party replacement? 19:36
tyil o/
19:36 MasterDuke left
tyil geth seems to have reported in #raku-dev within the last two hours, TreyHarris 19:36
CIAvash I meant raku.org
TreyHarris tyil: I know 19:37
19:37 nine joined
CIAvash But I can just put it anywhere 19:37
19:37 skaji_ left, SmokeMachine left
TreyHarris tyil: But it last reported a doc commit on Feb 3 19:38
tyil I'll have to have access to the doc repo to check if the settings are correct and to send a test message to debug anything, I think 19:39
19:39 camelia joined, iviv left 19:40 jhill left
TreyHarris tyil: There has been activity on #raku-dev but not on #raku since its last message (¦ doc: review: github.com/Raku/doc/commit/21b3e04eb5), but there's been subsequent `doc` activity that's gone unreported 19:41
so it does seem to lack access or something
19:42 aborazmeh joined, aborazmeh left, aborazmeh joined
TreyHarris CIAvash: sorry, didn't realize you were working on a raku.org refresh--is that described in a problem-solving issue? 19:43
tyil: sorry, dumb q here, but what does the 'o/' emoticon mean? I'm not familiar with it and it isn't googling up 19:46
tadzik it's waving :) o is the head, / is the arm
CIAvash TreyHarris: no. not your fault. I didn't mention it anywhere. Becasue having it on raku.org was just one option
[Coke] head with an arm raised, in greeting
guifa TreyHarris: the o is a head, and the / is an arm
so heeeeeyo
TreyHarris ah-hah
guifa (common to respond to o/ with \o ) 19:47
TreyHarris or in this case like an "<--" to indicate "that's me"
guifa (also when you log on it’s like a quick way to check if the bots are saving any messages for you) 19:48
.tell guifa2 Can you upload Carp to CPAN already?
tellable6 guifa, I'll pass your message to guifa
guifa o/
19:49 guifa2 joined
guifa2 \o 19:49
guifa thinks tellable is fubar 19:50
.tell tellable6 do as I command you!
tellable6 guifa, Thanks for the message
TreyHarris tyil: here's the last day of messages Geth sent to #raku for reference: gist.github.com/treyharris/9972203...24ac7bb21a 19:51
19:52 domidumont left 19:58 wamba joined 20:00 natrys joined 20:01 stoned75 joined
Geth doc/disambiguate-perl6lib: 0aa3fe09dc | Altai-man++ | 2 files
Disambiguate PERL6LIB in search with categories
doc/disambiguate-perl6lib: c54f821575 | Altai-man++ | doc/Language/5to6-nutshell.pod6
Remove wrong category
doc: Altai-man++ created pull request #3200:
Disambiguate PERL6LIB in search with categories
20:09 Voldenet left
TreyHarris hope you had a nice nap, Geth :-) 20:09
"doc/disambiguate-perl6lib" though? that's new 20:11
AlexDaniel` guifa: tellable actually worked correctly in this case 20:14
guifa: don't overthink it :)
guifa: it knew that you saw the message, so it didn't deliver it
it knows because you were on the channel when the message was sent and you replied within 5 or 10 minutes
20:15 Voldenet joined, Voldenet left, Voldenet joined
TreyHarris AlexDaniel`: 5 or 10? is that because you don't remember (from Tellable.p6, `my $heard-timeout = 60 × 10;`) or because there's extra logic in there I didn't notice? 20:17
AlexDaniel` TreyHarris: didn't remember and didn't bother to look at the source. It's 10 then :) 20:18
TreyHarris cool, just making sure :-)
AlexDaniel` with 20 bots there's barely anything I remember
they're surprisingly maintainable though 20:19
guifa2 AlexDaniel: guifa2 wasn't on the channel ;-)
AlexDaniel` guifa2: yeah but guifa was, it knows it's the same person :D
guifa2 AlexDaniel`: you know, maybe I sometimes just want to tell myself on the other computer as a reminded hahaha 20:20
AlexDaniel` guifa2: notice how when you did `.tell guifa2` it replied “I'll pass your message to guifa”
guifa2 Right, that's why I considered it semifubar :-)
But yeah TreyHarris: just do a nice little o/ when you log on next time. Either tellable will tell you something or someone will probbaly wave back ^_^ 20:21
AlexDaniel` tellable is an interesting bot, everyone says that it's weird and potentially broken, yet it never misfired or failed to deliver correctly
you software developers love to poke holes in things :)
guifa2 pokes tellable6 20:22
TreyHarris AlexDaniel`: I ran one of the first two Eggdrops; everyone complains about every bot "being weird and potentially broken", always :-)
AlexDaniel` thank you for your work, tellable6
tellable6 AlexDaniel`, Anytime!
guifa2 daw that's cute 20:23
20:25 Black_Ribbon joined 20:30 rindolf left 20:44 kensanata joined 20:47 sena_kun left 20:53 wamba left 21:01 sena_kun joined 21:06 xinming_ left 21:08 xinming_ joined 21:20 molaf joined 21:27 melezhik left 21:28 aborazmeh left 21:39 melezhik joined 21:43 patrickb left 21:46 Kaeipi joined 21:47 Kaiepi left, kensanata left, lucasb left
cpan-raku New module released to CPAN! Sparrowdo (0.1.4) by 03MELEZHIK 21:49
wildtrees is most code in raku expressions? or are their statements as well? 21:51
timotimo there are statements, but every statement can be used as an expression with the "do" prefix 21:57
chloekek p6: say do use NativeCall; 21:58
camelia Nil
wildtrees p6: %h = %( a => 1) ; say %h<a> 22:01
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '%h' is not declared
at <tmp>:1
------> 3<BOL>7⏏5%h = %( a => 1) ; say %h<a>
wildtrees p6: my %h = %( a => 1) ; say %h<a>
camelia 1
wildtrees p6: my $h = %( a => 1) ; say $h<a>
camelia 1
wildtrees how are both of those working?
22:03 Sgeo_ joined
timotimo the postfix:«< >» thing behaves very much like a method call here 22:05
so it just goes through the scalar container
guifa2 In both cases you've assigned a hash to the variable, and <> is compiled (more or less) to $h.AT-KEY("a") or %h.AT-KEY("a")
22:06 Sgeo__ left
TreyHarris using the $ sigil vs. the @ sigil for a list makes a bigger difference in more places than $ vs. %--for $hashes vs. %hashes, i think in practice the difference comes up primarily in passing the hash as a parameter, and even then not that often since there are coercions and multis for most associative operations 22:11
leont I'm looking for ideas for a good interface for my actor module, in particular the receiving end. 22:14
In my similar p5 module I'm using «when» for this, but it seems I can't create my own given-like construct in raku 22:15
Currently I offer a receive function that will receive without filtering, but that feels suboptimal as well
I'm considering making it a Supply, but I suspect that won't DWIM in a lot of cases 22:16
Matching against pointy blocks might work though… 22:17
22:21 natrys left
timotimo leont:have you checked out jnthn's actors model yet? 22:25
leont OO::Actors? Yes. Completely different from mine 22:26
timotimo OK 22:27
just thought there might be some inspiration in there
jnthn supply blocks pretty much already are actors 22:28
I think `when` will be happy being in any block that binds $_ 22:29
m: sub receive(&block) { block(42); block(4.2) }; receive { when Int { say 1 }; when Rat { say 2 } } 22:30
camelia 1
22:34 natrys joined, natrys left
leont But can receive know if any of the when's was successful? 22:37
wildtrees couldn't you set something in each receive, say increment a counter or something and check for it at the end? 22:41
er in each when I meant 22:42
leont That sort of manual work is exactly what I'm trying to prevent 22:46
22:46 sena_kun left
k-man i'm a novice at raku. and I'm just trying out a few exercises on exercism. the first few i had to make a function return something for the tests to work. this current one requires a method to return something. i'm not sure what I'm supposed to do here. ix.io/2aRH 22:49
wildtrees k-man, what's the test want from the method? 22:52
22:58 SmokeMachine joined, jhill joined
[Coke] goes to find the tests, but exercism requires you install a command line client first. 22:59
23:00 iviv joined, skaji_ joined
[Coke] (a binary, even) 23:01
23:01 sena_kun joined
leont I think I found an interface that I actually like, even if the previous one was a bit faster 23:01
23:01 chloekek left
leont paste? 23:01
[Coke] k-man: if you can provide the test, we can help. the problem you posted doesn't really ask a question. 23:02
TreyHarris [Coke]: worse than that, the last time I tried, you can't download a test suite until you've completed the prereq exercises, so having the binary wouldn't be sufficient unless you want to spend the time finishing all the prior exercises 23:11
23:12 melezhik left
leont An example script (based on chameneos-redux from the debian language shootout) is paste.scsys.co.uk/587789 23:22
23:22 NODE left 23:24 Benett left
k-man thanks wildtrees and [Coke], test suite: ix.io/2aRN 23:24
yes it's a bit annoying how you can't easily share an exercise from exercism 23:25
maybe there is an alternative to exercism for practicing raku? 23:26
this is the exercise anyway: ix.io/2aRO
23:31 Benett joined, pecastro left
[Coke] wonders who the three mentors that signed on for raku are. 23:32
for the first several, looks like your "hey" method should return different strings based on input. 23:34
[Coke] would try the first "expected" output, see if you pass one more test. 23:35
k-man [Coke]: does that mean something like.... return "some string"; ?
[Coke] you can either explicitly return out, or have the last line be a literal value that will get returned.
k-man: aye
k-man [Coke]: ok, thanks. I'll give that ago
23:36 Benett left, Benett joined 23:41 NODE joined 23:44 NODE left 23:45 NODE joined
TreyHarris The only prompt given is the test suite? That's bizarre--it's like if you were given a test suite telling you that if you pass [1, 2, 3, 4] you'll get (13.463535756926344 14.548758829210907 2.2579201289578754 -12.108839924926851) back. It's an exercise in pattern recognition, not coding 23:49
k-man TreyHarris: they do give you a word description. see ix.io/2aRO 23:50
TreyHarris Oh, I missed that. oops, your question would have made a lot more sense if I saw that :-) 23:51
k-man TreyHarris: no worries 23:52