»ö« 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. |
|||
00:02
Manifest0 left,
cpan-p6 left
00:03
cpan-p6 joined,
cpan-p6 left,
cpan-p6 joined
00:07
Manifest0 joined
00:13
mowcat left
00:31
kst left
00:43
Manifest0 left
00:47
Manifest0 joined
00:51
netrino left
01:01
Manifest0 left
01:06
Manifest0 joined,
zacts joined
01:10
Manifest0 left
01:15
Manifest0 joined
01:25
Manifest0 left
01:31
Manifest0 joined
01:39
Manifest0 left
01:45
Manifest0 joined
01:46
MidCheck joined
01:49
zacts left
01:51
Manifest0 left
01:56
Manifest0 joined
02:01
Manifest0 left
02:06
Manifest0 joined
02:07
reach_satori_ joined
02:10
reach_satori left
02:25
Manifest0 left
02:30
Manifest0 joined
02:57
Manifest0 left
03:01
gregf_ left
03:04
Manifest0 joined
03:06
choes joined
03:10
choes left
03:17
zacts joined
03:22
cono left,
kaare__ left
03:23
kaare__ joined
03:34
zacts left
03:36
Manifest0 left
03:41
Manifest0 joined
03:48
Manifest0 left
03:53
Manifest0 joined
03:55
sauvin joined
03:58
MidCheck left
04:08
Manifest0 left
04:13
Manifest0 joined
04:15
veesh left
04:16
veesh joined
04:23
khisanth_ left
04:29
molaf joined
04:36
khisanth_ joined
04:40
reach_satori_ left
|
|||
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 |
|||
04:49
jmerelo joined
05:03
vrurg left
05:05
molaf left
05:09
antoniogamiz joined
05:12
cpan-p6 left
05:13
cpan-p6 joined,
cpan-p6 left,
cpan-p6 joined
05:16
molaf joined,
antoniogamiz left
|
|||
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 |
|||
05:27
molaf left
05:29
Manifest0 left
05:36
Manifest0 joined
05:39
adu joined
05:51
Manifest0 left
05:52
abraxxa joined
05:53
abraxxa left,
abraxxa joined
05:55
kjk left
05:58
abraxxa left,
abraxxa joined
05:59
Manifest0 joined
06:12
reach_satori_ joined,
domidumont joined
06:37
Manifest0 left
06:43
Manifest0 joined
06:47
Manifest0 left
06:49
robertle joined,
jmerelo left
06:53
ayerhart left
06:54
Manifest0 joined
06:58
kurahaupo left,
Manifest0 left
06:59
kurahaupo joined
|
|||
holyghost | Apparently he does not want to take me on as a postdoc | 07:05 | |
07:05
Manifest0 joined
|
|||
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 | ||
07:10
ayerhart joined,
patrickb joined
07:13
ayerhart left
07:14
MidCheck joined,
ayerhart joined
|
|||
moritz | bummy indeed. Which topic(s) do you want to research? | 07:21 | |
07:25
cosimo joined
07:37
rindolf joined
|
|||
holyghost | AI | 07:51 | |
08:16
aindilis left
08:18
aindilis joined,
holyghost left
08:19
holyghost joined,
zakharyas joined
08:37
Manifest0 left
08:42
Manifest0 joined
08:59
Manifest0 left
09:05
Manifest0 joined
09:10
espadrine joined
09:14
rindolf left
09:22
rindolf joined
09:23
clarkema joined,
MidCheck left,
_jrjsmrtn joined
09:24
Manifest0 left
09:25
__jrjsmrtn__ left
09:31
Manifest0 joined
09:35
mowcat joined
09:41
scimon joined
09:46
kini left
|
|||
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 | ||
09:54
aindilis left
|
|||
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 | |
09:55
aindilis joined
09:56
domidumont left
|
|||
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 ;) | |||
10:02
kini joined
|
|||
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) | |||
10:05
aindilis left
|
|||
clarkema | nm, I manually brutalized the zef config to make it play ball | 10:05 | |
10:07
kini left
|
|||
holyghost | .tell Xliff the server seems down | 10:10 | |
yoleaux | holyghost: I'll pass your message to Xliff. | ||
10:11
aindilis joined
|
|||
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 | ||
10:19
kini joined
10:20
espadrine_ joined
10:21
espadrine left
|
|||
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 | ||
10:41
kini left
10:49
kurahaupo left
10:50
jhill left
10:51
jhill joined
10:53
kini joined
10:58
lumin left,
kini left,
jhill left
10:59
jhill joined,
lumin joined
11:05
kini joined
11:06
netrino joined
11:12
Manifest0 left
|
|||
masak | how do people write something like `assert @values.elems > 0;` in Perl 6? | 11:17 | |
11:17
Manifest0 joined
|
|||
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 | ||
11:21
Guest55475 left
|
|||
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 | |
11:34
zakharyas left
11:35
Manifest0 left
|
|||
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. | ||
11:40
Manifest0 joined
|
|||
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. | |||
11:41
kurahaupo joined
|
|||
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 | ||
11:49
Manifest0 left
|
|||
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 | ||
11:54
Manifest0 joined
|
|||
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 ) | ||
12:00
domidumont joined,
kini left
|
|||
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 | |
12:03
espadrine_ left
|
|||
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 | |||
12:07
kini joined
|
|||
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 | |
12:16
kini left
|
|||
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: | ||
12:18
espadrine_ joined
|
|||
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 | |
12:24
kini joined
|
|||
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 | ||
12:30
kini left
|
|||
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 | |||
12:36
mowcat left,
abraxxa left
|
|||
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 :) | ||
12:39
lucasb joined
|
|||
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 | ||
12:40
kini joined
|
|||
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" | ||
12:57
Manifest0 left
13:02
Manifest0 joined
|
|||
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 | |||
13:04
zakharyas joined
|
|||
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 | ||
13:15
natrys joined
|
|||
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 | |
13:23
domidumont1 joined
13:24
vrurg joined
13:25
domidumont left,
domidumont joined
|
|||
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 | ||
13:28
domidumont1 left
|
|||
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 | |
13:35
adu left
|
|||
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 | |
13:42
ravenousmoose left
13:44
Manifest0 left
|
|||
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 | |||
13:48
Manifest0 joined
|
|||
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 | ||
14:00
yuriii left
14:03
domidumont1 joined
14:07
domidumont left
14:11
Manifest0 left
14:13
pmurias joined
14:14
Actualeyes joined
|
|||
pmurias | masak: what will the 000 language be then? | 14:17 | |
14:17
Manifest0 joined
|
|||
moritz | the Perl 6 kernel language! | 14:21 | |
14:21
Manifest0 left
14:22
domidumont joined
|
|||
timotimo | KIR, the kernel intermediate representation. and also KIRre, the kernel internal representation regular expression engine | 14:25 | |
14:26
domidumont1 left,
Manifest0 joined
14:31
Manifest0 left
|
|||
nine | masak: action classes let you have this: github.com/niner/Grammar-Highlighter | 14:36 | |
14:37
espadrine_ left
|
|||
timotimo | nine: would be great if action classes could be composed, though | 14:37 | |
14:37
Manifest0 joined
|
|||
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 | ||
15:02
domidumont1 joined,
pmurias left
15:04
espadrine_ joined,
domidumont left
15:09
domidumont1 left
|
|||
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 | ||
15:19
dolmen joined,
dolmen is now known as dolmen_
|
|||
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 | |||
15:24
Manifest0 left,
patrickb left
|
|||
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 | |||
15:29
Manifest0 joined
15:30
mowcat joined
15:37
Manifest0 left
15:38
zakharyas left
15:42
robertle left
15:43
Manifest0 joined
15:48
andrzejku joined
|
|||
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 | |||
16:07
dolmen_ left
16:08
Manifest0 left
|
|||
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 | |
16:14
Manifest0 joined
16:15
scimon left
|
|||
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? | |||
16:20
Manifest0 left
|
|||
ugexe | unless i misunderstand it, it seems to imply "autothreading" means it might be run on multiple thrads | 16:21 | |
16:25
Manifest0 joined
16:26
netrino left
|
|||
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 | ||
16:34
jmerelo joined
|
|||
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? | ||
16:44
robertle joined
|
|||
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. | ||
16:57
Manifest0 left
|
|||
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. | |||
17:02
Manifest0 joined
|
|||
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 | |
17:07
molaf joined
17:13
[particle]1 joined
17:17
[particle] left,
ufobat joined,
MidCheck joined
17:28
reach_satori_ left
17:29
Manifest0 left
17:32
domidumont joined,
patrickb joined
17:34
Manifest0 joined
17:37
raschipi joined
17:38
domidumont left,
domidumont joined
17:39
Manifest0 left
17:43
Manifest0 joined
17:49
dolmen joined
|
|||
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 |
||
17:53
dolmen is now known as dolmen_
|
|||
timotimo | so the default in subsignatures is Any, too | 17:53 | |
m: my &blorp = -> ($arg) { say $arg.perl }; blorp([Mu]) | |||
camelia | Mu | ||
17:53
cpan-p6 left
|
|||
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 | |
17:54
dolmen_ left,
cpan-p6 joined,
cpan-p6 left,
cpan-p6 joined
17:57
johnjohn101 joined
18:04
domidumont1 joined
18:06
domidumont left
|
|||
mst | query tyldis | 18:09 | |
bah | |||
18:24
skids joined
18:25
Manifest0 left
|
|||
patrickb | tadzik: Can you have a look at github.com/tadzik/rakudobrew/pull/136 ? | 18:27 | |
18:28
sauvin left
18:30
Manifest0 joined
|
|||
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. |
|||
18:37
jmerelo left
18:42
pecastro joined,
mowcat left
18:43
ufobat left
18:49
sena_kun joined
|
|||
masak | nine: cool! | 18:53 | |
18:54
mowcat joined
|
|||
masak | nine: I'm happy to gripe about things and be proven that actions classes do have a use ;) | 18:54 | |
18:56
chee left
18:58
kst joined
19:06
domidumont1 left
19:08
Manifest0 left
19:09
chee joined
19:13
Manifest0 joined
19:15
johnjohn101 left
19:23
MidCheck left
|
|||
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 | |
19:31
natrys left
19:43
raschipi left
19:58
johnjohn101 joined,
reach_satori joined
20:03
Manifest0 left
|
|||
Geth_ | doc: 786ca5a0f9 | (Elizabeth Mattijsen)++ | doc/Type/CompUnit/Repository/FileSystem.pod6 Improve CUR::FileSystem example Fixes #2766 |
20:07 | |
20:09
Manifest0 joined
20:11
kybr left
20:15
Manifest0 left
20:21
|oLa| joined
20:23
Manifest0 joined
|
|||
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. | ||
20:34
pmurias joined
20:48
|oLa| left
|
|||
nine | Xliff: err....maybe? :D | 20:51 | |
20:52
johnjohn101 left
|
|||
Xliff | nine: :) | 21:00 | |
nine: Have you tried it with a failing grammar? | 21:01 | ||
21:12
radaikon joined
21:14
skids left,
dolmen joined
21:17
radaikon left
21:24
Manifest0 left
21:29
Manifest0 joined
21:33
DrForr joined
21:38
andrzejku left
21:39
Manifest0 left
21:47
Manifest0 joined
22:03
Manifest0 left
22:08
Manifest0 joined
22:09
rindolf left
22:17
Manifest0 left
22:22
Manifest0 joined
22:24
ayerhart left
22:25
ayerhart joined
22:31
Manifest0 left
22:36
Manifest0 joined
22:41
patrickb left
22:42
Manifest0 left
22:47
Manifest0 joined,
dolmen left
22:48
dolmen joined,
dolmen left
22:55
mowcat left
22:57
pecastro left
23:18
pmurias left
23:25
sena_kun left
23:31
Manifest0 left
23:36
Manifest0 joined
23:39
clarkema left
23:52
Manifest0 left
23:57
Manifest0 joined
|