»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
buggable New CPAN upload: AttrX-Mooish-v0.2.6.tar.gz by VRURG modules.perl6.org/dist/AttrX::Mooish:cpan:VRURG 00:12
Hotkeys I have a question to which the answer is probably no, but I figured I'd ask: is there a nice way (or a way at all) to hot reload modules for eg. live plugin reloading for an IRC bot 00:38
lookatme_q I think we not have one 00:41
epsilonphase Do classes in Perl6 have destructors(Or something else that's essentially a cleanup method)? 00:49
Hotkeys iirc DESTROY submethod is called when something is garbage collected 00:52
lookatme_q But should not depend on the GC 00:53
epsilonphase From what I understand, classes aren't guaranteed to be collected when the program exits?
lookatme_q there is no DESTRUCT currently 00:54
epsilonphase Too bad, that'd have been perfect for that temporary file cleanup. 00:55
lookatme_q you maybe put them in LEAVE or others block 00:56
geekosaur but there should be a phaser for the main file?
Hotkeys you might be able to make use of the END phaser 00:56
lookatme_q epsilonphase, docs.perl6.org/language/phasers#___top 00:57
epsilonphase Well, with weak references, if those exist, I think that could definitely work. 00:58
timotimo we do not currently have weak reference support 00:59
epsilonphase Oh. I guess that trying to make concessions to the language in order to handle it like C++ is probably not productive then. :S 01:06
Hotkeys what're you trying to do? 01:08
timotimo fwiw, things you eval will not stick around forever 01:09
so maybe that can help
will just probably have to work around some built-in caching maybe?
epsilonphase More or less RAII style cleanup.
masak so, the perl6/nqp repository has a vulnerability warning... 08:07
github.com/perl6/nqp
(guess it's only visible if you're logged in, and maybe a contributor)
I'm curious about this comment left in nqp's regex grammar by Mouq in 2013: "XXX Eventually squish termseq and termish and get < || && | & > infixes using by EXPR in nibbler" 08:14
I *think* this means that the regexes could be written using an operator precedence parser, like Perl 6 itself is, but right now it's done more recdescent-y
Geth doc/master: 4 commits pushed by (JJ Merelo)++ 08:39
lookatme_q Seems like we not support tail recursive optimization, right ? 08:47
sub f(int \n, int \r) { return r if v == 0; f n - 1, r + n; }; 08:48
masak lookatme_q: no, and that's not in the books either, at least not without explicit opt-in
lookatme_q oh, this will cause a lot of memory using 08:50
lookatme_q masak, is this exists in the dev scheduler ? 08:54
I mean is it will support in the future ?
I think this is quite important for the functional style programming 08:55
Though I am not the fans of functional style :) 08:56
I just saw some question in the website about the tail recursive, and wonder is Perl 6 support that :) 08:57
masak lookatme_q: TCO is one of those things that are a definitive "nice to have" in a language, but it's also typically not something that's added after the fact. (cf JavaScript implementations) 09:15
lookatme_q: for starters, how will this interact with (a) giving truthful stack traces, and (b) JIT/on-stack replacement? 09:16
my point: it's a neat feature, but it ain't for free, nor does it have zero repercussions on the rest of the language 09:17
masak wow, inheriting for re-use is so stupid 10:07
masak I'm reading an old Smalltalk tutorial, and it uses an example where Timestamp is a subclass of Date 10:08
so it has Date's year, month, dayOfMonth, but it also adds hour, minute, second
apparently there used to be a time where this was considered a good idea
Ulti not just reuse, also generalisation you can treat a timestamp as a date directly, thats an example of where I see it working well actually because all the methods for a date apply equally well to a datetime but not the other way around 10:23
also everyone forgets that composition is totally a thing you did with traditional class heirarchy type OO you just had attributes and proxies to achieve the same thing with none of the advantage of types 10:26
like Java really only fixed the typeness of that paradigm with interfaces, it didnt really make it more convenient like roles/mixins do 10:29
Ulti its more worrying lisp is 1958 and smalltalk a decade later, thats a surprisingly long time ago in compsci years 10:34
given how much head space those two languages cover given modern languages
cool new edgy feature in X in 2018 was probably something in a lisp in the 70s 10:35
mascots have gotten better though en.wikipedia.org/wiki/Hy 10:37
samcv m: my $one = Q|\|; say $one; say $one.trans($one => "$one$one") 10:44
camelia \
\
samcv not sure why it doesn't change it to two backslashes?
m: my $one = Q|\|; say $one; say $one.trans($one => "aa")
camelia \
a
samcv maybe it can't replace with more than one?
docs says "Replaces one or many characters with one or many characters." 10:45
jnthn m: my $one = Q|\|; say $one; say $one.trans([$one] => ["$one$one"]) 10:46
camelia \
\\
AlexDaniel where was my voice?
jnthn I think it's that form that does the multiple
samcv ah ok 10:47
AlexDaniel :S p6bannerbot should learn to op itself
AlexDaniel damn 10:53
it could be that somebody asked a question, or something
and nobody could see it because the user had no +v 10:54
it's “fixed” now, but eh :S
masak: yeah there's even a ticket from a few months ago, only affects js backend as far as I understand github.com/perl6/nqp/issues/437 10:55
samcv jnthn: opened a docs issue
thanks for the help
Summertime you should be able to give the bot a +O (capital) flag in /cs flags, which will cause it to auto-op? 10:56
AlexDaniel riiight
jmerelo samcv: I'm on it 10:57
samcv great!
it seems i may be making a perl6 module that lets you get the git log
jmerelo samcv: as in, without using the git command? 10:58
samcv well it uses the git command. but it will probably return a perl6 data structure
jmerelo samcv++ 10:59
samcv it doesn't seem to exist yet. i was going to use from-json to make it a perl 6 structure after processing the input to escape things. but i might not do that now hmm 11:00
jmerelo samcv: I did some ad-hoc stuff for my TPF grant, mostly to analyze commits, not exactly log.
samcv yeah. i need the log's text and the files modified 11:01
jmerelo samcv: was thinking about turning it into a Repo::Mining module, but if you start, I can always later add what's not in there.
AlexDaniel Summertime: right, and I can't do that 11:02
jmerelo samcv: right. It would be a great thing in the ecosystem :-) Good luck and I know you don't need help, but will check it out and/or star it when you release it 11:03
samcv: keep us informed
AlexDaniel Summertime: it's probably better to fix the bot itself 11:04
Summertime: github.com/zoffixznet/perl6-banbot...ter/bot.p6
Summertime dang, and yeah thats better practice, just was thinking of a quick fix if possible
man sometimes I feel like I have a handle on perl6 and then I see more to learn 11:08
samcv what is the best way to create key/value pairs from one array that's keys and one that's values 11:11
i know there's an operator or sub but i can't remember
AlexDaniel Summertime: it should be something like: multi method irc-join ($e where .nick eq $nick) { .send: :where<ChanServ>, text => “op {.channel}” } 11:12
sena_kun samcv, Z=>?
samcv that sounds like it
sena_kun m: say <one two three> Z=> (1, 2, 3)
camelia (one => 1 two => 2 three => 3)
samcv perfect 11:13
sena_kun `zip (=>) foo bar` looks a bit more familliar for me, on the other hand `Z=>` is less to type. :)
m: say <one two three> >>=><< (1, 2, 3) 11:14
camelia (one => 1 two => 2 three => 3)
sena_kun m: say <one two three four> >>=><< (1, 2, 3)
camelia Lists on either side of non-dwimmy hyperop of infix:«=>» are not of the same length
left: 4 elements, right: 3 elements
in block <unit> at <tmp> line 1
sena_kun will give you nice exception when lists have different length, where Z will just omit elements I think.
AlexDaniel Hotkeys: hello :) long time no see 11:17
ah, and now they left!
Summertime ok, PRed a autoop method 11:21
jmerelo sena_kun: that combination of > and = starts to look a bit like brainf*ck :-) 11:24
Summertime: there's always something to learn. And relearn. And document... 11:25
masak re github.com/perl6/nqp/blob/master/s...#L164-L165 -- does the p6 regex slang have a "juxtaposition"/"empty infix" operator for concatenation? 11:26
(it was in order to answer that question I was looking at the grammar in the first place)
sena_kun jmerelo, well, in Haskell you have nice >=>, >>>, >>= kind of ops, so... And I am too lazy for nice Unicode `»«` symbols.
masak clearly you're not :P 11:27
sena_kun I copy-pasted those from channel topic. :P
masak haha
moritz masak: I don't quite understand the question. If the question is "does no infix imply concatenation?" then yes
but I think you know that, so that'll hardly be your question :-) 11:28
Geth doc: 6381a9d51d | (JJ Merelo)++ | doc/Type/Str.pod6
Clarifies trans behavior, closes #2272
doc: 049ba7cd1c | (JJ Merelo)++ | doc/Type/Str.pod6
Fixes space after comma
synopsebot_ Link: doc.perl6.org/type/Str
masak moritz: my question can be rendered as "if we were to take Mouq's suggestion and turn that bit of the grammar into an EXPR, would we need to define an _empty infix operator_ (or something similar) as a result?"
benjikun sena_kun: The `Z=>` is a zip operator 11:29
if no one responded to you
masak as in, how could you do it as EXPR without doing an empty infix
moritz I think you'd need a specialized EXPR 11:30
sena_kun benjikun, mm, sorry? samcv asked how to zip lists above, I've answered with a couple of methods I know. :) Thanks anyway. 11:31
benjikun ah, whoops :P
misread
sena_kun np
samcv ${:AuthorDate("2018-06-24 18:08:09 -0700"), :AuthorEmail("samantham\@posteo.net"), :AuthorName("Samantha McVey"), :Body(""), :Subject("Add expression template to .editorconfig (use 2 spaces)"), :changes($[{:added(1), :filename(".editorconfig"), :removed(1)},]), :commit("a651be890232f25e7bc325d33598d2ab6ef02d92")} 12:07
nice, this is super helpful now i can actually do stuff with the data 12:08
Geth doc: MorayJ++ created pull request #2273:
Anchor case
12:53
ecosystem: 7c5a7cfb6a | dagurval++ (committed using GitHub Web editor) | META.list
Remove Webservice::Justcoin

Remove unmaintained module
12:55
doc/master: 4 commits pushed by MorayJ++, Altai-man++ 13:01
masak moritz: re "you need a specialized EXPR", yes -- I think so too 13:11
moritz: I think it comes down to every language/slang choosing what TTIAR should mean. should it be an error, or should it be a juxtaposition operator? 13:12
crucially, if it's the latter, then you cannot also have things like `if 2 + 2 == 4 {`, where the TTIAR between the `4` and the `{` signals that the EXPR is over 13:13
moritz also, tokenization can be very dependent on TTIAR behavior 13:16
masak "tokenization"? :) 13:17
masak you mean that thing that shows up at the beginning of every textbook about compilers, but which I never use because I use Perl 6 grammars? :P 13:18
moritz well, if you detect two terms in a row, you've identified two substrings as terms 13:20
which lies firmly withing tokenization, even if you don't explicitly think about it that way
and / <term>+ % <infix> / is a quite different tokenization than / <term>+ / 13:21
masak aye
what the p6regex grammar does currently is basically / <termish>+ /
I dunno, I was tickled about what's basically a TODO comment from 2013 left in the source :) 13:22
especially since it suggested migrating things to EXPR when I was out hunting for a juxtaposition operator
moritz
.oO( <termish> is so TimToadyish :D )
masak it is
I strongly suspect you know this, but it means "term, cushioned in zero or more prefixes and postfixes" 13:23
there's also "infixish", which ISTR includes metaop things
masak .oO( masaksplaining ) 13:24
moritz I knew it once, at least :-) 13:25
masak m: sub infix:< >($l, $r) { "lol, I'm zero-width" }; "OH " "HAI" 13:28
camelia 5===SORRY!5=== Error while compiling <tmp>
Null operator is not allowed
at <tmp>:1
------> 3sub infix:< >7⏏5($l, $r) { "lol, I'm zero-width" }; "OH
masak thought so
m: sub infix:<null>($l, $r) { ":P" }; "not allowed," null " HUH?" 13:29
camelia ( no output )
masak m: sub infix:<null>($l, $r) { ":P" }; say "not allowed," null " HUH?"
camelia :P
candr Is there a way to validate if a string is an acceptable path without attemping to create a new file/dir or using a regex? I want to check if a path input by the user is valid, but it may or may not actually create it at a later time. 13:41
moritz candr: on Linux, any string that doesn't contain the zero byte is an acceptable path 13:42
(possibly with a length limitation) 13:43
candr moritz: What if I need it to be OS agnostic? Like on windows it must start with a drive letter etc... 13:44
moritz candr: what does it mean to be OS agnostic?
moritz candr: does it need to be valid on all OS? or on the current OS? or something else? 13:45
candr moritz: must validate path if on unix or windows or... this program in particular is mainly being used on a windows machine. 13:46
moritz candr: the proper solution to whatever problem you are actually having is probably to come up with a set of rules that are stricter than windows and linux, but present a reasonable subset for the user
also, strings like "../../etc/hostname" are valid paths, but should usually not be treated as acceptable inputs 13:48
the answer is "it's complicated" :(
candr moritz: so I am trying to validate user input for a project directory.... we were initially thinking of using a regex to validate the input, but was wondereing if there was a built in method to avoid the added complexity of a regex. 13:49
moritz the complexity is not in the regex, but in deciding what to allow and what not 13:50
tyil candr: you can try to create an empty file at the location, if that succeeds, the path is OK and you can remove the file again 13:53
tyil if you need to create dirs to create the file, dont forget to remove those as well 13:54
tyil as moritz says, most strings are acceptable paths (at least on GNU+Linux) 13:54
moritz you can perfectly legally create directories that contain an RTL marker, but it's most likely not a good idea
AlexDaniel m: say "hello\0world".IO 13:55
camelia Cannot use null character (U+0000) as part of the path
in block <unit> at <tmp> line 1
tyil even something like `touch '+[+&][){+&)\'` is ok, and will create a valid file
AlexDaniel sure, because it *is* a valid filename
I don't see a problem
tyil does IO::Path.new check for validity on windows? 13:56
moritz m: say IO::Path.new('con')
camelia IO::Path is disallowed in restricted setting
in sub restricted at src/RESTRICTED.setting line 1
in method new at src/RESTRICTED.setting line 32
in block <unit> at <tmp> line 1
tyil interesting 13:57
AlexDaniel stupid restricted setting
e: say IO::Path.new('con')
evalable6 "con".IO
moritz it does that just fine, even though "con" is a reserved name on windows
along with nul and some others
tyil so I guess just make an IO::Path of the string, and if you want to be super sure, try to create an empty file
moritz PRN, AUX, COM1, LPT1 etc.
candr Thank you all for the help. There are definitely some things I did not think about... The problem is both more simple and more complicated that I thought =) 14:01
AlexDaniel another thing to consider is path length
for example 14:02
e: say (‘sandbox/’ ~ "h" x 9999).IO
evalable6 "sandbox/hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh…
AlexDaniel, Full output: gist.github.com/3c30193270ac9f9fe0...44026cc7ab
AlexDaniel so it created a Path object just fine 14:02
but 14:03
e: spurt (‘sandbox/’ ~ "h" x 9999).IO, ‘blahblah’
evalable6 (exit code 1) Failed to open file /home/bisectable/git/whateverable/sandbox/hhhhhhhhhhhhhh…
AlexDaniel, Full output: gist.github.com/ff6c083e93e79324be...0c8ce2de6c
AlexDaniel candr: so I'm thinking, if it's some sort of a script or a tool for a user, then perhaps there's no need to validate it that much 14:05
i.e. you asked the user for a path, they gave something. Just trust them and take it, that's totally fine locally
but if that's a webservice or something like that, you shouldn't be using user-submitted strings in paths *at all* 14:06
moritz ... or use whitelisting
AlexDaniel or that, yes
candr :AlexDaniel Thanks. It is a small application that runs some lab equipment, but it might not be worth validating to that point.... all of the input fields are saved so a crash in the rare case of a path that is too long would't be the end of the world...
AlexDaniel but then the answer is simple and you just have a..z in the whitelist :)
AlexDaniel moritz: ok now that I'm thinking about it, it's actually not that simple 14:08
also have to make sure that it's not too long and not too short (i.e. not empty) 14:09
so maybe just taking a hash of the input will avoid the need to list all these cases 14:10
though now you have unreadable filenames :)
moritz well, validiating that it 1) doesn't exist yet and 2) matches / ^ <[a..z A..Z>]**3..63 $ / isn't too bad :-) 14:11
AlexDaniel moritz: and then the application is installed on windows… :) 14:18
or even better, *moved* :)
though maybe the file manager will complain when moving the files 🤷 14:19
never tried that
candr This was an interesting discussion. I think I know why a lot of windows GUI applications have you create _then_ select something like a project directory now =) 14:20
moritz AlexDaniel: try cloning a git repo on windows if it contains the same file with two different casings 14:21
AlexDaniel I don't have a windows machine to try… though that reminds me of the .git folder vulnerability :) 14:24
moritz what I want to say is: it's a mess :-) 14:25
AlexDaniel speaking of which, can anybody try rakudo-jvm on windows? R#1976
synopsebot_ R#1976 [open]: github.com/rakudo/rakudo/issues/1976 [Windows][⚠ blocker ⚠] 2018.06 build for JVM fail
moritz it's even worse if you have to deal with all the options like UNC paths
Geth doc: 37ec58708e | (Brad Gilbert)++ (committed using GitHub Web editor) | doc/Type/Str.pod6
Don't use a substring in .trans() example

Someone could conclude that the entirety of `"ab"` is matched instead of the individual characters.
14:30
synopsebot_ Link: doc.perl6.org/type/Str
candr wished my place of work used more linux machines. I have a work linux desktop and work mac laptop, but all our lab equipment runs on windows machines because that is what is the "norm" I guess... 14:41
b2gills I think it would be better to use a BSD on lab equipment, as you can better control exactly what gets installed. (Do you really need Solitaire on a piece of lab equipment?) 14:57
timotimo um, yes 15:02
timotimo why is this even a question 15:02
some of the best science is just waiting
SmokeMachine hi guys! i have a "definition" question to you: Im writing an ORM (Red) for perl6 , but I don't want just map tables/columns to classes/objects... I want to make perl6 "operations" on sql queries, for example: `Customer.all.grep({ .orders.map( *.price ).sum > 1000 })` would be the equivalent of the query of this page: ponyorm.com . So, Im not sure it should be called an ORM... I was thinking on LSRM (Language Syntax 15:22
Relational Mapper). Does that make any sense? Or do I need to tae some rest and do not think on Red for some time? :P
uzl Hey, #perl6! I'm wondering what's the preferred or recommended way of validating arguments passed to a constructor. 15:31
jnthn Depends how complex the needs are. If the validation is per attribute, consider defining subset types and typing the attributes with them 15:32
timotimo very complex validation can go into TWEAK
TimToady intermediately, type the named arguments to TWEAK
uzl However, any validation with TWEAK won't be inherited by the child class, right? 15:33
TimToady it will for those particular arguments
timotimo TWEAKs from all classes will be run
TimToady since all the TWEAKs are called
jnthn Just make sure to write it as submethod TWEAK 15:34
TimToady if you're writing a custom constructor that takes a bunch of similar positionals, then the constructor itself could validate all the elements
in short, TMTOWTDI :)
TimToady is back home from TPC, btw, so it massive backlog mode :) 15:35
*in
uzl I guess I'd also create a private method to delegate the arguments validation to it and then use it in a modified new constructor?
TimToady if you want to do it post-bless, sure, you could do that 15:36
timotimo is post-bless a bit like post-haste? 15:37
TimToady but if your subclasses are depending on the validation, it might go better into BUILD or TWEAK
(or on the individual attribute type)
a subset declaration can call out to random code as well 15:38
just depends on how often you wanna enforce the invariant
uzl Wow, so much information! #perl6 truly rocks! 15:40
I'll used your suggestions and see what I can come up with. Thanks to all!
s/used/use/
uzl I know this is the #perl6, but has anyone read (or come across with) 'Elements of Programming with Perl' (for Perl 5) by Andrew L. Johnson? 15:44
Luneburg Is bailador.net down? 15:52
sena_kun seems so. 15:54
benjikun same for me 15:54
ufobat the website is by gabor szabo, i can't help, sorry Luneburg 15:55
Luneburg ufobat: It's cool, thanks anyway :) 15:55
pmurias SmokeMachine: I would still call it an ORM 15:59
mst SmokeMachine: that's an ORM whose query system is an internal DSL 16:02
jmerelo Hi 16:12
uzl Hello, jmerelo! 16:14
AlexDaniel jmerelo: o/
jmerelo How's everything going? 16:16
Luneburg ;) 16:18
scimon Zzzzz 16:22
jmerelo scimon: here, have a cupa tea
scimon But I tweaked my code from yesterday. Bools will now except env vars set to "true" or "false" 16:23
jmerelo scimon: yay!
scimon (I think that will be useful)
I'm about done with that now.
I've been poking react blocks trying to understand them...
jmerelo scimon: and? Will you be able to answer AlexDaniel's issue :-) ? 16:24
releasable6: status 16:25
releasable6 jmerelo, Next release will happen when it's ready. 3 blockers. 446 out of 470 commits logged (⚠ 1 warnings)
jmerelo, Details: gist.github.com/1afede79b89b2ac952...040d43dc5b 16:26
jmerelo Almost there! Yay!
scimon jmerelo: Is that the "WTF are react / whenever blocks?" I'm hoping so. 16:28
jmerelo scimon: correct 16:29
AlexDaniel jmerelo: status
oops
releasable6: status
scimon I'm trying to make sense of them at the moment.
releasable6 AlexDaniel, Next release will happen when it's ready. 2 blockers. 446 out of 470 commits logged (⚠ 1 warnings)
AlexDaniel, Details: gist.github.com/ecff71af41a8d7e228...38bfeeffb2
AlexDaniel jmerelo: -1 blocker in ≈3 minutes! In ≈6 minutes we should have no blockers!
jmerelo AlexDaniel: hi, this is your friendly jmerelo bot. I'm out now for my 1-week long siesta. Will be back to my usual non-productive state a bit after that. 16:30
scimon I need one of them.
I'm still shattered after last week.
Anyhoo. Home time.
AlexDaniel jmerelo: commit-frequency*=2
jmerelo AlexDaniel: yep, pretty much. 16:31
jmerelo Actually, I'm leaving on real holidays tomorrow evening. And I can't access the chat from my laptop because I don't have the password, so... (OK, yes, I'm taking the laptop... ) 16:32
buggable New CPAN upload: Trait-Env-0.1.0.tar.gz by SCIMON modules.perl6.org/dist/Trait::Env:cpan:SCIMON 16:32
jmerelo scimon++
Cool!
AlexDaniel jmerelo: wait, why do you need a password?
jmerelo AlexDaniel: don't we all need a password to be able to use the nick in this channel? Is there any other way? Oh, there's other way... 16:33
There must be some other way. Using another nick initially and then changing it? 16:34
REally, no idea.
AlexDaniel jmerelo: no, you are not forced to identify
jmerelo OK. I'll try to get in from time to time, then.
AlexDaniel jmerelo: there's also perl6.org/irc 16:35
jmerelo AlexDaniel: I'll try that. Thanks! 16:35
jmerelo_ test test
AlexDaniel ↑ it works 16:35
jmerelo jmerelo_: hey, that's my bot. Go back to the siesta! 16:35
SmokeMachine pmurias: thanks 16:37
mst: that makes sense... 16:38
mst: thanks
mst SmokeMachine: note that that's really shiny and I hope eventually to be able to do something similar in perl5 16:41
benjikun What are the grammars in P6 inspired by?
anyone know some other similar features in other languages
mst SmokeMachine: my big issue has been "you can't overload and/&& in perl5 because short-circuit" 16:42
SmokeMachine mst: thanks! :)
mst benjikun: PEG grammars have been around for a long time, and I*think* the remaining features are inspired by, well, reading up on everything else and stealing the good parts
benjikun mst: I see 16:44
mst somebody more involved in the design process could probably give a more detailed answer, of course 16:46
benjikun what's the difference between a PEG and a parser generator 16:47
s/generator/combinator/
Luneburg I just want to say, the ThinkPerl6 book is amazing. Thanks to the author. 16:59
jmerelo Luneburg: he's around here from time to time, you can thank him yourself 17:17
jmerelo .seen lrosenfeld 17:18
yoleaux I haven't seen lrosenfeld around.
jmerelo Wait, it's lolosomething... Anyway.
SmokeMachine mst: neither you can in perl6... :( 17:32
mst SmokeMachine: my plan is to use my Babble grammar rewriting stuff to turn it into query_and(<excpr1>, <expr2>) 17:34
one would imagine that if anything that would be easier in perl6 land
SmokeMachine rt.perl.org/Public/Bug/Display.html?id=130540
SmokeMachine Yes, I’m planning to do a slang for that... 17:35
SmokeMachine But I’m not sure if it’s possible... 17:37
ufobat is anyone intersted in sereal for perl6? i am looking for someone that wants to join working on it 18:21
timotimo .seen laurent 18:34
yoleaux I haven't seen laurent around.
timotimo hmm
avuserow ufobat, I was vaguely interested in that quite a while and that's why I started work on Compress::Snappy
I don't have a current need for Sereal but hopefully the snappy bindings can help 18:35
that is, unless Sereal in p6 turns out to be super fast
jmerelo ufobat: say more 18:36
Geth doc: be42eb0edf | (JJ Merelo)++ | doc/Type/Str.pod6
Fixes formatting problems
18:38
synopsebot_ Link: doc.perl6.org/type/Str
samcv wondering if anybody wants to check my command line arguments for Git::Log i'm going to create 18:42
gist.github.com/dabc73a4a0a93d8005...85c4ca2802
samcv atm this works fine standalone as it has a MAIN, but that's mostly just for testing atm. so people can see the output it does 18:42
if needed. but i thought just a git-log sub would make sense
ufobat avuserow, yeah i use the compress::snappy for that :) 18:45
avuserow, i think pure perl6 for sereal wont be fast :)
jmerelo, like what? :-)
avuserow well, "fast" for me is "faster than JSON::Tiny", at least for now :) 18:46
ufobat avuserow, my decoder seems so work already, you can try :p
github.com/ufobat/p6-Sereal
moritz masak: you might like jelv.is/blog/Generating-Mazes-with-...ve-Graphs/ 18:51
jmerelo ufobat: what one would need to do and such... 18:53
ufobat jmerelo, the decoder is.. well, working.. the encoder is missing at all. compress::zstd would be missing. i dont understand the p5 sereal testscases, so some more tests would be awesome as well 18:56
jmerelo, in fact if someone else would like to work on it my motivation to work on it would be higher :-) 18:57
SmokeMachine knows how ufobat feels 18:59
ufobat SmokeMachine, what are you doing right now? :-) 19:01
SmokeMachine ufobat: Im working on Red (github.com/FCO/Red) and about that I cannot complain... I think it is the most "popular" of my projects... 19:03
jmerelo ufobat: I can lend you a hand, starting the second week of 19:07
September...
ufobat SmokeMachine, oh cool, i did the dbic workshop in glasgow :) 19:08
SmokeMachine ufobat: great! would you like to do any feature request? pull request? or something? :) 19:10
ufobat the reason why i am not using dbic in perl5 is, i have a single process app and i do everything async there with AnyEvent::DBI 19:13
but with perl6 and its threads my scenario would look differently i guess 19:14
SmokeMachine, ill have a look at your code when i have time :) 19:20
SmokeMachine ufobat: thanks! but I think now the issues/wiki is more important than the code... 19:21
SmokeMachine ufobat: if you could take a look on that... :) 19:22
ufobat okay :)
masak moritz: cute. reading it now. 19:34
masak moritz: it's not _immediately_ clear to me that a randomized DFS would create an unbiased maze. 19:34
masak (not that it matters all that much, but author did emphasize "perfect") 19:35
masak hm, I've encountered inductive graphs before. the premise seems to be "inductive data types aren't a really good fit for graphs, but here's how it'd look if we do it anyway" :) 19:37
masak in fact, pretty sure any DFS will favor Very Long mazo corridors, as in the first picture. 19:41
masak moritz: finished -- thanks. the implementation didn't come across as simple, though. :) 19:43
masak I wonder if the Union-Find data structure has a decent representation in Haskel... 19:44
masak ooh: hackage.haskell.org/package/union-find -- because of course it does! 19:45
"Useful, for example, to implement unification in a type inference system." -- and for building mazes!
masak Haskell* 19:45
moritz masak: the "perfect" refers to reachability (every square is reachable from any other square), not statistical properties like balancing 19:48
buggable New CPAN upload: Sparrowdo-VSTS-YAML-Cordova-0.0.8.tar.gz by MELEZHIK modules.perl6.org/dist/Sparrowdo::V...n:MELEZHIK 20:12
New CPAN upload: Sparrowdo-Cordova-OSx-Build-0.0.3.tar.gz by MELEZHIK modules.perl6.org/dist/Sparrowdo::C...n:MELEZHIK
masak moritz: aww. yes, that makes sense. 20:17
uzl Does the placement of the feed operator matter in some circumstances? 20:19
uzl Example: tio.run/##hZJdS8MwFIbv8yteug072Lp1...3ujbUotcrS 20:19
y@wXsz0hRfEO
uzl Surprisingly long url. Here's a more manageable version: tinyurl.com/yb2gx4ll 20:22
masak uzl: yes. I believe you're running up against the "}\n" rule 20:27
masak m: say "OH HAI" 20:28
camelia OH HAI
masak m: my %h; %h.keys ==> map { $_ }␤==> sort { $^a <=> $^b } 20:29
camelia 5===SORRY!5=== Error while compiling <tmp>
Bogus statement
at <tmp>:2
------> 3my %h; %h.keys ==> map { $_ }7⏏5<EOL>
expecting any of:
postfix
prefix
statement end
term
masak "Bogus statement" after the "}\n" 20:29
uzl masak: Can you point to it in the example? I have no knowledge of such rule. 20:31
masak uzl: the camelia response is pointing to it 20:32
uzl Oh, I think I got it. So the "\n" gets caught between the } and ==>?
masak there's a newline between the } and ==>
and that causes -- essentially -- a semicolon insertion
because of a rule in Perl 6 syntax 20:33
it's very unfortunate for the ==> operator; I've observed this before myself
uzl It makes sense. It's truly unfortunate as you say. 20:35
Thanks!
pmurias masak: you have seen the "Purely functional data structures" book?
pmurias masak: never mind the using the IO monad seems better, it's too late for me and I don't make sense anymore 20:38
masak pmurias: I have seen that book. haven't read it, though. 20:44
masak is suddenly reminded -- out of the blue -- of the early Rakudo bug that involved a unicode snowman and a unicode comet
some of those early moments can't be relived :)
xinming Which language is the idea of multi dispatch borrow from? haskell? 21:00
pmurias xinming: common lisp is the most well known multi dispatch language 21:04
xinming Got it. I just feel the multi idea is really amazing, once you have it, You can never live without it. 21:05
Altreus I don't suppose anyone has a vim fold expression for pod6? I cargo-culted my perl5 one literally 10 years ago and so I have no idea what I'm doing 21:48
yoleaux 16 Aug 2018 22:05Z <tbrowder_> Altreus: can you please file a rakudo issue on the pod6 problem,
17 Aug 2018 22:11Z <tbrowder_> Altreus: do you have a pod problem other than the declarator/attribute issue? 21:49
Altreus oh
yoleaux: tell tbrowder_ No, except I don't think it's as helpful as pod5
is that how I do that?
hmm 21:50
maybe they'll see it anyway
avuserow Altreus, it's ".tell nick some message here" 21:51
geekosaur it's .tell
SmokeMachine Altreus: to ast to yoleaux to tell something to someone, just say: ' .tell someone something
SmokeMachine Altreus: to ast to yoleaux to tell something to someone, just say: `.tell someone something` 21:52
.tell Altreus thats how you do it
yoleaux SmokeMachine: I'll pass your message to Altreus.
tbrowder_ Altreus: if you can file an issue giving an example of pod6 input as you understand it, what you get, and what you would like to see, we may be able to do something about your perception, 21:54
tbrowder_ Altreus: Damian Conway has a giant vim resource file that has p6 stuff in it. i think it’s publicly available but i don’t have a link handy. 21:56
MasterDuke moritz: it looks like perl6-all-modules hasn't been updated recently? 22:33