»ö« 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.
Geth_ doc: 3d32f6ef08 | (Tobias Boege)++ | doc/Type/Range.pod6
Document WhateverCode end point in Range

A WhateverCode end point to the Range operator creates a new WhateverCode which returns Ranges.
This is covered by roast: github.com/perl6/roast/blob/master...ever.t#L34
04:45
doc: 57641d19e4 | (Tobias Boege)++ | 2 files
Fix infinite range subscript examples

Also elaborate on WhateverCode in Range slices.
Cf. rakudo/rakudo#2872 and perl6/roast#536
doc: 1f8e0da7ca | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | 3 files
Merge pull request #2775 from taboege/subscript-range-whatever

Fix infinite range subscript examples
Geth_ doc: 671eb50c51 | (JJ Merelo)++ | doc/Type/Any.pod6
Reflow while revising #1803
05:19
doc: 91b9f52600 | (JJ Merelo)++ | doc/Type/Any.pod6
Improves the documentation of .serial

According to @lizmat comments in
  stackoverflow.com/questions/560579...-serial-do and
  @jnthn in the #1803 issue. I've finally opted for leaving it there, on
the premises that it might benefit no one if it disappears. I've added all the necessary caveats. This closes #1803
doc: 5a05e66398 | (JJ Merelo)++ | doc/Type/Any.pod6
Adapts definitions
holyghost Apparently he does not want to take me on as a postdoc 07:05
holyghost I sent the prof a mail that I'd like to sollicitate for a postdoc position at campus Jette VUB 07:05
He cannot do it himself however, I misread yesterday 07:06
so I'm not yet in
bummer 07:07
moritz bummy indeed. Which topic(s) do you want to research? 07:21
holyghost AI 07:51
masak ahoj #perl6 09:48
I have a question about box plots. does anyone have a nice-to-look-at bit of Perl 6 code for how to compute the values for the median, the quartiles (the boxes), and one standard deviation above-and-below the mean (the whiskers, or one choice for them, at least) 09:51
and, as usual, how should I think about the standard deviation -- do I subtract one or not? I always forget :( 09:52
holyghost masak : I've written Mathx::Stat, which was followed up by others with Stats
There's no median and quartiles code but may proceed with it 09:53
s/may/you may
masak ok, good to know
masak I'm in a NIH mood, so I'll probably write something short myself which does it. but always good to look at prior art. 09:54
hm, why does a module called Stats not compute median and quartiles...? :)
clarkema Is anyone else having trouble updating zef? I'm not getting any kind of response from ecosystem-api.p6c.org/projects1.json
masak oh, "Bessel's correction" it's called. "curse you, Bessel!" :P 09:55
masak statistics feels to me like a particularly deep black magic. sure, you can make it work, but it's very non-obvious why it works. 09:56
"remember to subtract 1 here!" -- "ok, why?" -- "<mumble> <mumble> degrees of freedom <mumble>"
"sorry, didn't quite catch that" -- *starts crying* "I don't know, OK?" 09:57
holyghost I'm just reading up on hidden markov models to use with Mathx::Stat
in Game::Markov
the statistics aren't that difficult, but I wouldn't know how you proved it thoroughly 09:58
Deep magic as you said :-) 09:59
masak oh wow, this explanation is *great*: en.wikipedia.org/wiki/Bessel%27s_c...ce_of_bias
timotimo masak: i usually use this piece of code: @times .= sort; my @timings = (@times[* div 50], @times[* div 4], @times[* div 2], @times[* * 3 div 4], @times[* - * div 100]);
masak timotimo: neat :)
yes, that looks like a rough version of what I want to do. kudos ;)
masak ok, looks like I ought to subtract 1 10:02
...whenever I have a "sample mean", which I do with these data points 10:03
(by the way, I'm running my test suite over a series of commits to see if there's a progressive slowdown as a result of my refactor)
clarkema nm, I manually brutalized the zef config to make it play ball 10:05
holyghost .tell Xliff the server seems down 10:10
yoleaux holyghost: I'll pass your message to Xliff.
holyghost ok, I understand the HMMs again 10:12
I'll code it into Game::Markov ASAP 10:13
It's easy compared to chaos theory 10:14
I'm going to eat something, then read up for the rest of the statistics packages, the stat chaos package 10:15
holyghost I need to read, "chaos : a statistical perspective" -- Chan, Tong first 10:23
Then I'll try to do some magic by making it useful for games :-)
or the other way round 10:24
food time ! 10:28
masak how do people write something like `assert @values.elems > 0;` in Perl 6? 11:17
masak anyone actually use the PRE {} block? 11:17
(which I guess is the idiomatic way to do it)
holyghost m: @values.Empty
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '@values' is not declared. Did you mean '&values'?
at <tmp>:1
------> 3<BOL>7⏏5@values.Empty
holyghost m: @values == Empty 11:18
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '@values' is not declared. Did you mean '&values'?
at <tmp>:1
------> 3<BOL>7⏏5@values == Empty
masak holyghost: I didn't mean the `@values.elems > 0` part. I'm pretty comfortable with that one, and I know there are alternatives :)
I meant the `assert` part (which is Python, not Perl 6)
holyghost no idea
masak m: sub mean(@values) { PRE { @values.elems > 0 }; ([+] @values) / @values.elems }; say mean(1, 2, 3) 11:19
camelia 5===SORRY!5=== Error while compiling <tmp>
Calling mean(Int, Int, Int) will never work with declared signature (@values)
at <tmp>:1
------> 3}; ([+] @values) / @values.elems }; say 7⏏5mean(1, 2, 3)
masak oh, right :)
m: sub mean(@values) { PRE { @values.elems > 0 }; ([+] @values) / @values.elems }; say mean([1, 2, 3])
camelia 2
masak m: sub mean(@values) { PRE { @values.elems > 0 }; ([+] @values) / @values.elems }; say mean([])
camelia Precondition '{ @values.elems > 0 }' failed
in sub mean at <tmp> line 1
in block <unit> at <tmp> line 1
masak goodenuf for me
holyghost in scheme it's (null? list) 11:20
In perl6 AFAIK it's not fool-proof to check a list for emptyness 11:21
holyghost As it is in other languages 11:22
like your say mean([]) above
lizmat Empty would also have worked
masak holyghost: what in the world are you on about? "not fool-proof"? why not? :)
lizmat m: sub mean(@values) { PRE { @values.elems > 0 }; ([+] @values) / @values.elems }; say mean(Empty)
camelia Precondition '{ @values.elems > 0 }' failed
in sub mean at <tmp> line 1
in block <unit> at <tmp> line 1
lizmat afk& 11:23
masak holyghost: I can't remember having trouble checking a list for emptiness in Perl 6, ever. (and it's not what I asked about.)
holyghost nm, I meant a language feature (not perl6) which checks automatically for Empty list 11:24
masak oh, I don't feel I need anything more implicit than `PRE { @values.elems > 0 }`... 11:25
holyghost It already does probably, I mix up laguages sometimes
masak but if you're into that kind of thing, this works: 11:26
m: sub foo([$v, *@values]) { say [$v, |@values] }; foo([1]); foo([1, 2]); foo([])
camelia [1]
Too few positionals passed to 'foo'; expected at least 1 argument but got only 0 in sub-signature
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1

[1 2]
holyghost masak : what I also meant is that it's a huge syntax for checking an empty list
masak no, not really a huge syntax
also, see the alternative I just posted
which uses signature matching 11:27
holyghost ok
I'm going to buy a beer now, I'm too tired to continue, if I may say so
masak :) 11:29
masak fwiw, here's the code I ended up with: gist.github.com/masak/30d37a594964...6281535084 11:36
gonna spend some time generating that as an SVG box plot diagram later tonight
holyghost SVG is cool 11:37
fractals :-) 11:38
masak no fractals this time, though. only boxes and axes.
holyghost I have worked a few months on inkscape in 2004 11:39
it comes from sodipodi, which was made obsolete, in those times a nice gome program
*gnome 11:40
masak aye. I remember that.
xinming m: my %x; %x.defined.say; 11:41
camelia True
masak some sodipodi attributes are still left in the modern Inkscape files, last time I looked.
xinming Anyone here would clarify this? why is an Empty hash defined?
masak xinming: there was a discussion about that one about a decade ago.
xinming: I was on the side of "it should be undefined". pmichaud argued the side that won, IIRC.
xinming masak: Can we have conversation log for this? 11:42
If it's not the bug, I'd like to see the reason we choose this behavoir. :-)
masak I'm looking (googling RT), but no luck so far 11:44
Woodi hallo today :) 11:48
holyghost hey Woodi !
tobs m: my %x; %x.say
camelia {}
tobs I guess that's why this doesn't print "(Hash)"
holyghost ah I see, it comes from perl5 undef
timotimo masak: i'm looking forward for you to box some plots 11:52
masak I'm here to box some plots and chew gum, and I'm all out of gum. 11:53
Woodi I have some general, inter-language dizzines with assert()... it stops program. it is put when some invalid condition occurs, that realy never should happen. I gues it's like emmergency stoppin engines in launching rocket... so: a) they don't teach very much about how to use assert, usually just small paragraph in books; b) should assert() be used in writing server/daemon code ? it's like works-as-expected
masak tobs: not sure that's an explanation...?
Woodi self-asking DoS...
masak Woodi: there's no shame/harm in halting a program when a routine gets sent illegal inputs. 11:54
holyghost Woodi : assert is a last resort for a hacker, your program should be fool-proof
Woodi masak: but why not put healing code instead ? especially in servers 11:55
masak holyghost: eh? again, what's this about "fool-proof"? someone might totally send in wrong inputs.
Woodi: of course no-one wants that to happen in production... which is why you'd have an *extensive* test suite which covers enough cases, including sad paths that trigger the `assert`
Woodi: why not "healing code"? because sometimes wrong is just wrong.
there's no recovery from trying to take the mean of []
Woodi maybe I just didn't see positive use-case :) 11:56
masak as a user of that program, I would much rather like to be made aware of the error, than for the program to "heal" and hide it
the positive use case is that your program doesn't have a bug
tobs masak: not in the way xinming asks for, but not showing me a Hash typeobject but an empty hash literal instead when I .say it is consistent with .defined being True
Woodi hide - no... heal is recovery
masak tobs: ah, got it. well yes, it's an empty-but-defined hash. 11:57
tobs: the million-dollar question is why, though :) and I still haven't found that old discussion
Woodi: how would you recover in the case of `mean([])`?
holyghost Woodi : AFAIK, exceptions give you more freedom instead of exiting your program
tobs I'd be interested in that too, so ++masak :P
Woodi masak: return error from the function ? 11:58
depends how "module" is constructed
masak ah! found it! :D
rt.perl.org/Public/Bug/Display.html?id=64928 11:59
enjoy, all of you who are interested ;)
(I haven't re-read it, and it's been years)
tadzik . o O ( masakbot submits rakudobug )
Woodi masak: I asked about deamonised servers but I'm realy mean 'systemD' :) 12:01
masak tadzik: those were the days. on average one rakudobug a day o.O
Woodi, holyghost: I bring it up in Perl courses quite a bit -- robustness in programs comes from the fact that those programs have already _failed_ a lot, and those failures have been hammered out and fixed. 12:02
holyghost I understand 12:03
masak I see early Perl as committing the mistake of DWIM sometimes: "this doesn't make sense, so let's fix it" 12:03
holyghost I'm going to give you an example then, devision by zero should be errored but not asserted
masak Python has always been much more strict/uptight about things -- "you're sending me a str as a list index? it's a str full of digits -- do I look like I care?" 12:04
holyghost s/errored/catched in your program
masak holyghost: notice that in all the places in my script where there *could* be a division by zero, I already had a `PRE` block that excluded that case
holyghost ok 12:05
masak so in some sense, my script can't divide by 0 :)
holyghost lol
tadzik masak: heh, more strict where it feels like it :P There's always this one student that says "it printed each line in a file, but one character at a time" ;)
masak tadzik: oh, I know what they did :P
tadzik :D
masak tadzik: I didn't say "more strict everywhere" :) 12:06
Python is still hopelessly dynamic
tadzik every time I consider just not even telling them about readline() and readlines(), just "you can do a for loop over a file"
masak my (least) favorite is `del my_var` -- you did *WHAT* to a lexically declared variable!?
tadzik and delattr(). Ugh
masak right 12:07
guess what 007 doesn't do
tadzik "Special cases aren't special enough to break the rules."
right, Tim Peters, right
masak haha 12:08
tobs as an aside, a friend of mine is named Tim Peters, too 12:09
imagine my eyes when I learned about Timsort and its inventor in a lecture
but it was a different Tim Peters
masak holyghost, Woodi: AFAIK the ideas behind PRE and POST come from Eiffel and its Design-by-Contract ideas. think of `sub mean` as a "component". the `PRE { @values.elems > 0 }` says "if you called me with an empty Array, there's a bug -- in _your_ (the caller's) code" 12:10
moritz Eiffel inherits these conditions. A subclass can only weaken PRE-conditions and only strengthen POST-conditions 12:11
masak we had such plans for Perl 6 too
but someone (me, unfortunately) shot them down as unimplementable in a long email to p6l
and TheDamian grudgingly agreed
it's too bad, they were nice ideas 12:12
holyghost now that I remember, Woodi there's a daemon class in the perl6 docs online, it uses CATCH
moritz yes, the concept doesn't play well with the ideas of lexical scoping and method signature freedom
masak right
you can't have the cake and eat it -- in the end, Perl 6 is a very late-bound language with not-much-strictness statically 12:13
timotimo moritz: can i get your assistance on a grammars thing? :) 12:15
timotimo or maybe you've got a minute or two, masak? 12:18
masak yeah. don't ask to ask -- what's ailing you? :)
timotimo OK, here's the short of it:
timotimo i have a proto regex expression, and one one_expression - because the language isn't meant to be super nice to use, i say "no operator precedence parser for you!" 12:19
there's expression:<one> which is just <one_expression> and there's expression:<comparison> which is <one_expression> \s* <compop> \s* <one_expression> 12:20
and there's one_expression:<parenthesized> which is '(' \s* <expression> \s/ ')'
jnthn masak: Well, the lexical parts of Perl 6 are relatively static-friendly, it's the object dispatch that's the main source of late binding :)
timotimo the trouble is, with something like (foo) and (bar) it tries to parse expression:<one> -> one_expression:<parenthesized>, that fails when the EOF isn't where it hopes to find it, and then just fails immediately instead of trying expression:<comparison> 12:21
SmokeMachine m: sub mean(@values ($, |)) { ([+] @values) / @values.elems }; say mean([1, 2, 3])
camelia 2
moritz timotimo: "and" is a <compop>, right? 12:22
timotimo when i put a <!before '('> in expression:<one> it will parse correctly, but of course then "superstitious parenthesis" are an actual syntax error
that's right
i only use "regex" and "proto regex" everywhere, so no "rule" and non-declarative <ws> anywhere
i assume you'd want to have the code so you can have a closer look?
moritz timotimo: can you paste a grammar (or a piece thereof) anywhere?
timotimo i'll paste the whole program
well, only the parsing part, i can throw some unneeded stuff out 12:23
OK, tio.run doesn't have Grammar::Tracer
that's fine
moritz a gist works as well 12:24
timotimo wow that's a long url 12:24
we need a perl6.org url shortener :-) :-)
masak jnthn: yes, no argument there. which (I guess) is why we ended up having PRE/POST for the blocks and routines, but not for class hierarchies... 12:25
rba timotimo: ok will add it the infra requirement list
timotimo ha! i'll paste the tio.run link into a gist. i'm a genious
moritz facepalms 12:26
timotimo gist.github.com/timo/b66d080aca39b...f36e373969 - the tio.run link is at the bottom, the code at the top. good compromise?
moritz timotimo: and what's the problem now? the grammar matches the example that's in your example code 12:29
the look-ahead in expression:<one> ? 12:30
moritz I don't understand why it refuses to match without the look-ahead, but I do know that it's not optimal to structure your proto regexes the way you do 12:34
regex expression { <one_expression> [ \s* <compop> \s* <rhs=.one_expression> ]? } 12:35
would make more sense to me
masak moritz: now I'm interested. not optimal to structure proto regexes how, exactly? 12:37
moritz I guess the problem is that expression -> one_expression:<parenthesized> -> expression is a recursion, and thus terminates LTM
lizmat weekly: medium.com/@jcoterhals/perl-6-smal...33dcd2b45b
notable6 lizmat, Noted!
masak yes, recursion terminating LTM is indeed tricky
it makes sense though if you think of LTM's "calls" as actually being copying. any recursion, direct or indirect, would lead to an infinitely big rule. 12:38
moritz masak: proto (or in general, disjunction) paths with a large common prefix tend to be problematic IME
masak interesting. 12:39
moritz basically, you rely *very* hard on LTM, and LTM is sometimes tricky
masak I'm not disagreeing, I'm just not sure how to weigh that opinion :)
moritz it is basically token a:<b> { <big> }; token a:<c> { <big> more stuff here } 12:39
masak I think I agree on principle that a declarative prefix should be as short as possible
moritz it's simply the opinion/exerience of somebody who still struggles with grammars, after having spent significant time with them 12:40
masak for example `while` should be something like `while>> {} <xblock>`, with the `{}` terminating the declarative prefix
timotimo oh, recursion terminates LTM, i see
masak timotimo: I independently re-discovered this fact here: github.com/masak/007/issues/485#is...-475999894 12:41
moritz which you can totally see as a disqualifying statement, since I haven't reached grammar enlightenment yet
masak (since I'm in the process of re-inventing parsing)
moritz: you only wrote the book about it :P
timotimo also, sorry i was just required to pay attention to a cat-related cuddlemergency
oh, what is 001? the first prototype of 007? :) 12:42
moritz masak: I hoped that would push me over the enlightment edge. Didn't quite work out :D 12:43
masak timotimo: 001 is the smallest possible language I can think of to experiment with language extension
timotimo books were already being written before the enlightenment, and it still took a long time :)
ah, ok!
masak moritz: sorry-not-sorry ;)
moritz timotimo: lol
timotimo anyway, this language is now far enough that i can most probably start generating actual bytecode 12:44
masak I'm currently in a mood where I'm thinking about the LTM parser and the procedural parser a lot. they're... intertwined.
moritz that they certainly are
masak basically, the procedural parser handles everything "stateful", including "where are we in the rule call stack?"
interestingly the LTM parser doesn't/can't care about those things, but it's "complicit" in feeding the right info to the procedural parser 12:45
basically, the LTM parser acts as the dispatch mechanism (and, um, return mechanism) for the procedural parser
it's a weird funhouse mirror variant of MMD
moritz a branch predictor 12:46
masak heh, yes :)
lucs .
masak lucs: it's lucky we're not doing point-free programming
timotimo hm. how come "use MAST::Ops:from<NQP>" doesn't find my installprefix/share/nqp/lib/MAST/Ops.nqp? it's apparently only looking for a MAST/Ops.moarvm 12:50
lucs masak: :) 12:51
timotimo oooh, it's MASTOps that i have to "use"
kawaii is there any way I can quickly (and recursively) check the encoding of files to make sure they're all UTF-8 without BOM in p6? :) 13:03
lizmat releasable6: status 13:04
releasable6 lizmat, Next release will happen when it's ready. 1 blocker. 132 out of 310 commits logged (⚠ 2 warnings)
lizmat, Details: gist.github.com/c45aa6cbcb26ab2d57...3a90855043
timotimo kawaii: are the files sometimes huge? 13:06
kawaii timotimo: no they're all less than 1MB each but nested in various directories
timotimo if not, you can always slurp the file to test if the utf8 is valid (otherwise it will throw an exception) and if it is valid, .IO.open.read(2) should give you 0xFE, 0xFF or 0xFF, 0xEF if there's a BOM 13:07
if i'm not mistaken
kawaii oooo I didn't know that about slurp
thanks!
timotimo there's probably a good example for recursive and multithreaded filesystem ops somewhere :) 13:08
but if single-threaded is okay, you can literally just recurse using dir, or use a queue of IO objects to not have a stack that grows potentially very big
timotimo downloads an album with 1.9 gigs worth of bad music for maximizing work productivity 13:11
clarkema The sooner you finish the work the sooner you can stop listening to the bad music? 13:12
kawaii usercontent.irccloud-cdn.com/file/...141317.jpg 13:13
usercontent.irccloud-cdn.com/file/...141321.jpg
I found this coin at home last night
any idea where this came from?
oh, maybe london perl workshop 13:14
lizmat kawaii: it's not a coin, it's a tyuit 13:15
*tuit
timotimo yes! a round tuit!
kawaii en.wiktionary.org/wiki/round_tuit 13:16
:D
masak those are in quite short supply, and hence valuable 13:17
I often find myself wishing I had more of them
hm, can anyone with better google-fu than me find the archived conversation (on, I'm pretty sure, perl6-language) about DbC/PRE and POST/methods with Damian Conway? 13:18
oh, nvm. found it. 13:19
timotimo thingsfittingperfectlyintothings.t...t-found-by
timotimo did important PR work there 13:20
masak DbC discussion: www.nntp.perl.org/group/perl.perl6...34803.html
timotimo clarkema: actually i like this bad music :) 13:21
timotimo masak: i've got a bag full of round tuits, but somehow they don't seem to have an effect on my productivity :( 13:27
clearly i'm doing *something* wrong 13:28
masak maybe they've become de-magnetized. I had that happen to my tuits more than once. 13:28
timotimo oh no! 13:29
that could totally be it
masak man, Damian is one of the nicest prominent people in the Perl community. I just re-read that thread, and it turned out he replied to me privately to say that he'd read my email, but didn't find anything useful to add to it. <3
it's little things like that. 13:30
I do remember being a little bit apprehensive writing those emails, though
timotimo =?ISO-8859-1?Q?Carl_M=E4sak?= is one of my favourite people 13:33
timotimo masak: "a macro that activates inside a "actions Bloop { [...] }" block that gives any method that doesn't have an explicit one the implicit signature ($/)" is a use case for macros that i just realized i had 13:36
masak that should be possible, yes. 13:44
over the years, I've become less and less keen on actions classes
timotimo not sure if you have a master document for use cases from the wild or something :)
oh, is that so?
masak the last couple grammars I wrote, I just inlined the behavior instead 13:45
yeah, actions classes are weird
timotimo i don't want to do that because LTM and declarative prefixes :)
masak shouldn't matter if you put them at the end
how many times have you ever used the flexibility afforded by them, and substituted another actions class for the same grammar?
timotimo but yeah, i think often the grammar and its action class are a bit too tightly intertwined to be sensibly elided or replaced
masak I'm much more likely to _forget_ to tie in the actions class, which happens at .parse call time, for some reason 13:46
timotimo <foo> <bar> <baz> will have a different LTM prefix if <bar> has a { make blah } at its end
masak I think they're being way overused for the little benefit they provide
timotimo: hm
jnthn "Navigate to action"/"Navigate to grammar rule" is on my Comma wishlist, to ease moving between them (and maybe even stubbing the action if it's missing) :) 13:51
timotimo jnthn: doesn't intellij also have a "show the code of something else in-line in the same editor" feature? 13:52
googling intensifies 13:53
www.jetbrains.com/help/img/idea/20...Lookup.png - not exactly this 13:54
i must hvae been hallucinating it 13:56
code.visualstudio.com/docs/editor/...lved#_peek - this looks a bit more like what i mean 13:58
pmurias masak: what will the 000 language be then? 14:17
moritz the Perl 6 kernel language! 14:21
timotimo KIR, the kernel intermediate representation. and also KIRre, the kernel internal representation regular expression engine 14:25
nine masak: action classes let you have this: github.com/niner/Grammar-Highlighter 14:36
timotimo nine: would be great if action classes could be composed, though 14:37
timotimo some grammars rely on the actions to set up some stuff so that further parsing can continue, like "add this variable to a list of declared variables" plus "check if this variable that's just been used was defined" 14:37
though perhaps that should be put directly into the grammar if it's so tightly coupled 14:38
nine sounds like yes
Grammar and action may also share an object where such information is gathered 14:39
timotimo like $*W :)
nine Kinda *g* Obviously someone had this problem before ;) 14:40
Wouldn't have to be a dynamic variable though was my point
timotimo true
holyghost I just watched "The darkest minds", good movie 15:16
I'll work tomorrow o some more code
s/o/on
I'm going to sleep in a few hours 15:18
As I didn't get the postdoc position, I can do more for perl6 15:19
dolmen_ P6 newbie here. Trying to install Cro with zen from a fresh "brew install rakudo-star". But ecosystem-api.p6c.org/projects1.json seems to be unavailable... 15:22
s/zen/zef/
timotimo yes, we've had some trouble with our servers; you can wait for it to time out, but that will take some time 15:23
i believe you can "git clone" zef and "perl6 -I . bin/zef install ." to get an up-to-date zef that handles the situation a lot better
dolmen_ Even curl times out. Will an updated zef switch to another server? 15:27
timotimo yes 15:28
raw.githubusercontent.com/ugexe/Pe.../p6c1.json and raw.githubusercontent.com/ugexe/Pe...cpan1.json
dolmen_ Looking for help with Cro::HTTP::Client... 15:55
How can I initialize a Cro::HTTP::Client::CookieJar with known values? modules.perl6.org/dist/Cro::HTTP:c...kieJar.pm6 15:56
timotimo doesn't look like you can, without going via Cro::Response (which you probably can construct manually) 16:00
Cro::HTTP::Response i mean
btw #cro exists on this server, too
jnthn Yeah, you'd need to do it by constructing a Cro::HTTP::Response for now, though there's no reason we can't provide a method that lets one do it by passing in a `Cro::HTTP::Cookie` object 16:07
Feel free to add an issue to request that
clarkema speaking of Cro, does it support digest auth? I couldn't find a dial to tweak to persuade it to make client requests using anything other than basic 16:10
jnthn clarkema: Not yet, no 16:15
ugexe "Note that all hyper operators are candidates for autothreading and will cause tears if the methods have side effects" 16:19
this description of hyperoperators is incorrect, yes?
ugexe unless i misunderstand it, it seems to imply "autothreading" means it might be run on multiple thrads 16:21
xinming m: my Code &t; &t = -> () { }; &t.perl.say; 16:26
camelia Type check failed in assignment to &t; expected Callable[Code] but got Block (-> $ () { #`(Block|77...)
in block <unit> at <tmp> line 1
xinming m: my &t; &t = -> () { }; &t.perl.say;
camelia -> $ () { #`(Block|66520744) ... }
jnthn xinming: You're there declaring that &t returns something of type Code 16:27
xinming m: my Code &t; &t = sub () { }; &t.perl.say;
camelia Type check failed in assignment to &t; expected Callable[Code] but got Sub (sub { #`(Sub|63557472...)
in block <unit> at <tmp> line 1
xinming jnthn: Thanks, I didn't even ask the question yet. ;-)
jnthn Same as `my Int @t` would mean that the elements are Int :)
xinming jnthn: What I was going to ask is, what does 'my Code &t' exactly do, And you answered that already. 16:28
jnthn ugexe: I think the description is correct; we don't yet do it, but @foo>>.bar would certainly parallelize
um, *could certainly
clarkema I'm back package building again. I'm trying to build rakudo from the current Star tarball, with moar and nqp both built and installed @2019.03 16:29
timotimo is that in the docs? perhaps it should point out that "rakudo doesn't do it yet, but if you want it now, use .hyper.map(...)
.o( Starball )
clarkema Which I try to build rakudo itself I get:
Stage parse : Cannot find method 'instructions' on object of type MAST::InstructionList at src/vm/moar/Perl6/Ops.nqp:512 (blib/Perl6/Ops.moarvm:push_ilist)
timotimo that sounds like a version mismatch
ugexe jnthn: does autothread mean parallelize? i thought it was related to junctions (which short-circuit)
xinming jnthn: Another questions is, can await $promises, and with $promises, we also do await? 16:30
timotimo an older rakudo trying to use the newer nqp that doesn't have MAST any more, or a newer rakudo using an older nqp that doesn't have the new MAST-replacement yet?
please verify that it's actually using the versions of nqp and moarvm that you're expecting it to
perhaps the --prefix=foo is either not the same for all, or has some leftovers from an earlier attempt?
xinming I think I meet a bug, which is nested await calls, and I may get error, I forgot the error. After I changed to use >>. It works fine. 16:31
clarkema I originally suspected something like that, but on my main machine I'm running a pure Star build, which has the same versions of nqp and moar
I'll double check I don't have any left-overs though
xinming So, I'd think it's a bug, But I don't have time to get where there problem is actually. But I believe it's Promise related.
because the error is some kind of, "already awaited" something
timotimo "already awaited" should be just fine. perhaps you get "this seq has already been consumed" or something? 16:32
xinming I'll later change to old code and get the error.
ugexe docs.perl6.org/language/glossary#Autothreading defines it as "This process of separating junction arguments into multiple calls to a function is called autothreading." 16:33
maybe that should be changed? 16:34
timotimo yeah, the word is overloaded in the docs unfortunately 16:35
it's more an "multiinvoking" %)
invokespreading
multi-eval?
clarkema I can't find any trace of bad versions -- this is a new VM and if i remove the nqp and moarvm RPMs it's clean 16:38
jnthn ugexe: Ah, yeah, auto-threading is probably not a good word to ue their indeed, I'd just say "candiates for parallelism"
jmerelo Can someone please raise a RFE issue?
jnthn xinming: What is $promises? In principle if you have a Promise that resolves to another Promise then you could await the nested one though; there's no automatic Promise "flattening" or anything 16:39
timotimo clarkema: that's certainly odd already; can you give the output of --version? just to be extra sure? 16:41
clarkema timotimo: actually, I think I might have a confused version of the star tarball 16:43
just a sec, let me try a refresh
timotimo where did you get it from if i may ask?
clarkema I've lost track now -- i tried all sorts of things last night 16:44
the version on the main website is ok though, I've just checked
bah 16:46
All that time assuming I'd built nqp and moar incorrectly, and it was actually rakduo 2018.10
Thanks timotimo
The package still isn't building correctly, but at least it's failing later, which feels like progress 16:47
Geth_ doc: f5c079db2b | (Nick Logan)++ (committed using GitHub Web editor) | doc/Language/operators.pod6
Clarify parallelism of hyper operators
timotimo phew 16:48
jmerelo Um
I would really have preferred an issue.
timotimo you wanted a discussion? 16:49
jmerelo First, because it might not be the only reference.
Second, using parallelism is, well, arguable. Concurrency would be another option. Concurrency does not assume that things are happening at the same time.
Concurrency says "this has a high level interface that, when available, will use different threads". Parallelism... Well, I don't know. 16:50
At any rate, we would still need the issue if only to unify the terminology across all the documentation, (maybe) add a test and (maybe) add something to the glossary. 16:51
ugexe it is the only incorrect reference. i checked.
jmerelo timotimo: Reading through the logs now. We don't like things like "we don't do this now", because that's hell to maintain. You simply have to check every time if we're doing it or not. 16:57
timotimo ah 16:58
jmerelo Reading through the log before I arrived, if you're not happy with an issue, a link to this discussion in the commit message would have also been a good thing.
timotimo you can still put a comment on the commit 16:59
jmerelo You can't imagine how difficult is to maintain the documentation if you don't have the context of why a change has ocurred. It's difficult enough as it is, having to dig through Rakudo and roast commit logs and issues, not to mention source.
I'll create an issue and link to the commit. 17:00
not ideal, because the right thing would have been the commit linking the issue, but what's done is done.
xinming jnthn: I do waited the nested promises. I'll change my code to use promise to repeat it. so I can get the error. 17:04
xinming m: my @x = sub ($arg) { }, sub (($arg)) {}, -> ($arg) { }, -> $arg { }; @x.map: *.perl.say; 17:49
camelia sub ($arg) { #`(Sub|77151064) ... }
sub ($ (Any $arg)) { #`(Sub|78724208) ... }
-> $ ($arg) { #`(Block|78858056) ... }
-> $arg { #`(Block|78858128) ... }
xinming anyone here knows, what is the different between sub (($arg)) { } vs -> ($arg) { }? 17:50
sub ($ (Any $arg)) { #`(Sub|78724208) vs -> $ ($arg) { #`(Block|78858056)
I know code is different from block, But I found, that with -> ($arg) { } the signature is $ ($arg) But with sub (($arg)) { } It beceoms the Any $arg. 17:51
Is it because sub signatures are more "detailed"?
timotimo the default type for sub arguments is Any, the default for pointy blocks is Mu, but i don't think that's why 17:52
m: sub blorp(($arg)) { say $arg.perl }; blorp([Mu]) 17:53
camelia Type check failed in binding to parameter '$arg'; expected Any but got Mu (Mu)
in sub blorp at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo so the default in subsignatures is Any, too 17:53
m: my &blorp = -> ($arg) { say $arg.perl }; blorp([Mu])
camelia Mu
timotimo interesting, here it's Mu, too 17:53
dolmen_ jnthn, For my CookieJar request it looks like a PR already exists: github.com/croservices/cro-http/pull/39
timotimo so that could be the resaon why it looks different 17:54
mst query tyldis 18:09
bah
patrickb tadzik: Can you have a look at github.com/tadzik/rakudobrew/pull/136 ? 18:27
Geth_ doc: 2b770d5173 | Coke++ | xt/words.pws
learn new words
18:32
doc: c9b99f30de | Coke++ | doc/Type/Range.pod6
Avoid .WHAT where possible, use name instead

  ... But, because WhateverCode's ^name is funky, show .WHAT after
showing the funky name result.
masak nine: cool! 18:53
masak nine: I'm happy to gripe about things and be proven that actions classes do have a use ;) 18:54
timotimo oh hey tyil i just noticed synopsebot hasn't turned up yet; anything i can help you with? 19:24
tyil I havent had the time to look at it, sorry :( 19:26
I'll be on the train to Eindhoven tomorrow, which is like an hour
I should be able to get something going then
timotimo cool. don't worry about it until then :) 19:27
Geth_ doc: 786ca5a0f9 | (Elizabeth Mattijsen)++ | doc/Type/CompUnit/Repository/FileSystem.pod6
Improve CUR::FileSystem example

Fixes #2766
20:07
Xliff nine: Nice! Does Grammar::Highlighter handle the fail case? 20:33
yoleaux 10:10Z <holyghost> Xliff: the server seems down
Xliff .tell holyghost It seems to be up, now.
yoleaux Xliff: I'll pass your message to holyghost.
nine Xliff: err....maybe? :D 20:51
Xliff nine: :) 21:00
nine: Have you tried it with a failing grammar? 21:01