»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
00:03
skids joined
00:16
Sgeo__ joined
00:18
Sgeo_ left
00:19
Sgeo joined
00:21
Sgeo__ left
00:29
cdg left
00:30
BenGoldberg joined
00:33
ab6tract left
00:34
evalable6 left,
benchable6 left,
committable6 left,
bisectable6 left
00:41
pierre_ joined
00:42
mohae left
00:44
mohae joined
00:48
pierre_ left,
committable6 joined,
ChanServ sets mode: +v committable6,
evalable6 joined,
benchable6 joined
00:49
bisectable6 joined,
ChanServ sets mode: +v bisectable6
00:55
pierre_ joined
00:58
aborazmeh joined,
aborazmeh left,
aborazmeh joined
01:00
pierre_ left
01:03
pierre_ joined
01:07
stanley left
01:09
stanley joined
01:10
sftp left,
Sgeo left,
sftp joined
01:12
wamba left,
Sgeo joined
01:15
Sgeo_ joined
01:16
mephinet joined
01:18
Sgeo left
|
|||
BenGoldberg | m: say Inf; | 01:22 | |
camelia | rakudo-moar a1347c: OUTPUT«Inf» | ||
BenGoldberg | m: say [max]; | ||
camelia | rakudo-moar a1347c: OUTPUT«-Inf» | ||
01:27
pierre_ left
01:33
pierre_ joined,
aborazmeh left
01:36
aborazmeh joined,
aborazmeh left,
aborazmeh joined
01:37
pierre_ left
01:40
pierre_ joined
01:43
Xliff joined,
Xliff left
|
|||
AlexDaniel | BenGoldberg: irclog.perlgeek.de/perl6/2016-02-10#i_12017010 | 01:44 | |
and if you read that long enough, you'll see a mention of #127506 | 01:46 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127506 | ||
AlexDaniel | m: sub min(*@a) { return ‘Oh no, NaNs!’ if NaN === any(@a); max @a }; say min NaN, 5 | 01:47 | |
camelia | rakudo-moar a1347c: OUTPUT«Oh no, NaNs!» | ||
AlexDaniel | m: sub min(*@a) { return ‘Oh no, NaNs!’ if NaN === any(@a); max @a }; say min Inf, 5 | ||
camelia | rakudo-moar a1347c: OUTPUT«Inf» | ||
BenGoldberg | m: say [max] NaN; | 01:50 | |
camelia | rakudo-moar a1347c: OUTPUT«NaN» | ||
BenGoldberg | m: dd (NaN <=> NaN); | 01:51 | |
camelia | rakudo-moar a1347c: OUTPUT«Nil» | ||
BenGoldberg | m: so (NaN <=> NaN); | ||
camelia | rakudo-moar a1347c: OUTPUT«WARNINGS for <tmp>:Useless use of "so " in expression "so (NaN <=> NaN)" in sink context (line 1)» | ||
BenGoldberg | m: say so (NaN <=> NaN); | ||
camelia | rakudo-moar a1347c: OUTPUT«False» | ||
BenGoldberg thinks comparisons on NaNs should return failures. | 01:53 | ||
01:55
Xliff joined
|
|||
Xliff | \o | 01:55 | |
Hey there, can you use Perl6 subs as C handlers via NativeCall? | 01:58 | ||
01:59
rodrigok joined
|
|||
Xliff | I don't think that's covered in the docs, anywhere. But I will admit it has been a while since I've looked. | 01:59 | |
02:00
pierre_ left
|
|||
Xliff | Also, here's a thought... is there any possibility that libxslt would be used without libxml2? | 02:02 | |
02:03
Actualeyes1 joined,
Actualeyes left
|
|||
BenGoldberg | m: say 4 == 1E12.log10 div 3 | 02:08 | |
camelia | rakudo-moar a1347c: OUTPUT«Cannot resolve caller infix:<div>(Num, Int); none of these signatures match: (Int:D \a, Int:D \b) (int $a, int $b --> int) in block <unit> at <tmp> line 1» | ||
02:09
pierre_ joined
02:10
Xliff left
02:15
Xliff joined
02:25
FROGGS_ joined
02:26
Rawriful left
02:29
FROGGS left
02:33
canopus left
02:39
canopus joined
|
|||
Xliff | m: say 4 == 1E12.log10.Int div 3 | 02:44 | |
camelia | rakudo-moar a1347c: OUTPUT«False» | ||
Xliff | m: 1E12.log10.say | 02:45 | |
camelia | rakudo-moar a1347c: OUTPUT«12» | ||
Xliff | m: (1E12.log10 div 3).say | ||
camelia | rakudo-moar a1347c: OUTPUT«Cannot resolve caller infix:<div>(Num, Int); none of these signatures match: (Int:D \a, Int:D \b) (int $a, int $b --> int) in block <unit> at <tmp> line 1» | ||
Xliff | m: (1E12.log10.Int div 3).say | ||
camelia | rakudo-moar a1347c: OUTPUT«3» | ||
timotimo | m: (1E12.log10.round div 3).say | ||
camelia | rakudo-moar a1347c: OUTPUT«4» | ||
Xliff | Figures. | 02:46 | |
timotimo | m: (1E12.log10 - 12).say | ||
Xliff | timotimo: Do you know if perl6 subs can be passed as handlers to C code via NativeCall? | ||
camelia | rakudo-moar a1347c: OUTPUT«-1.77635683940025e-15» | ||
timotimo | they can | ||
though i don't know what you mean by "handlers"s | |||
Xliff | kk | ||
timotimo: Basically -- function pointers | |||
timotimo | ah, yes | 02:47 | |
that's what you get when you pass a sub as a &foo param | |||
Xliff | Now I feel dirty for saying "pointers" in this channel. Thanks for that. | ||
So if I have a sub f(int, int, int) that returns a class A, how would I set that up? | 02:48 | ||
timotimo | it returns a class? :) | ||
Xliff | I'm being complex for a reason. ;) | ||
so... | |||
timotimo | you can put --> A inside the parenthesis | ||
though C doesn't care what the function looks like | 02:49 | ||
Xliff | sub myNativeCode(&foo(int, int, int) --> A) | ||
timotimo | as long as the code that's compiled to work with the argument uses it correctly | ||
no, not like that | |||
Xliff | (although generally handlers are void) | ||
(not always, though) | |||
timotimo | first off, you don't have to give any signature for that at all | ||
there's no signaling or difference, really, for the C side which will be receiving that "function" | 02:50 | ||
Xliff | Maybe look into nativecall examples in roast again... ;P | ||
timotimo | the only difference is what perl6 will allow you to put in there | 02:51 | |
Xliff | Also, can you see any possibility of libxslt being used without libxml2? | ||
timotimo | i have no clue about either of these libraries | ||
Xliff | Oh, so it's the "these are not the droids you are looking for" excuse? ;) | ||
timotimo | don't forget that the "signature" you declare in C only changes how the compiled code grabs its arguments from registers and the stack | 02:53 | |
Xliff | OK. Confirms what I suspected. Thanks. | 02:54 | |
02:54
eliasr left
|
|||
timotimo | when you receive a function pointer from C, that's when you'll have to give it the right signature in perl6-land | 02:54 | |
so that perl6 knows what registers and stack positions to fill how | |||
Xliff | Yes, yes. | 02:58 | |
02:58
baest left
|
|||
Xliff | I've done the getting-functs-from-C-to-p6 dance, already. It was the other way that I hadn't done. | 02:59 | |
It's one thing to be able to run C-code in perl. It's another for C to accept P6 code. Although I guess that would just be a pointer to MoarVM byte-code? | 03:00 | ||
timotimo | nope | ||
that would be insane | |||
Xliff | i'll shut up now, then. | ||
"It's magic!" | |||
timotimo | we don't have a cpu that runs moarvm byte code yet | ||
Xliff | Nope. Now I'll shut up. | ||
timotimo | we just create a tiny piece of runnable code that grabs the arguments it's configured to take and invokes a sub-interpreter | ||
gfldex | leave him be, he is scared! :-> | 03:01 | |
Xliff | Well. I meant a function pointer to a piece of moar VM that does the actual execution. | ||
timotimo | right | ||
sadly, having a piece of C stack in the middle makes us really inflexible to what we can do | |||
Xliff | ((gfldex++)--) ^^ 0.314159 | ||
timotimo | for example, we can't route exceptions through from the sub-interpreter to the main interpreter :( | 03:02 | |
that's what "unwound entire stack and missed the exception handler" means | |||
Xliff | Aha! | ||
timotimo | because who the F knows what was going on inside that moarvm sandwich | ||
for all we know, it could have spawned a thread that constantly writes new values into the stack region that belongs to that piece of C code | |||
03:03
baest joined
|
|||
timotimo | and when we just say "well, we're done with this stack, now that we've got an exception through" | 03:03 | |
we're screwed bigtime :) | |||
sadly, i know nothing about how C++ exceptions work. we could potentially cooperate with those | 03:04 | ||
Xliff | Ah! The joys (and hair-pulling-complexity) of language internals. | ||
timotimo | :) | ||
Xliff | (gfldex was right...) | ||
timotimo | this first article that showed up when searching for "c++ exception internals" suggests how exceptions are compiled/run depends on the compiler | 03:07 | |
fun! | |||
but that can't be right | 03:08 | ||
03:08
kurahaupo__ joined
|
|||
timotimo | huh. so maybe it puts a symbol named "cxxabisomethingsomething" into the object file | 03:11 | |
maybe that's how they manage interoperability | |||
03:13
atweiden left
03:14
pierre_ left
03:23
pierre_ joined
03:27
rodrigok left,
rodrigok joined,
pierre_ left
03:31
kst` left
03:32
kst` joined
03:33
pierre_ joined
|
|||
timotimo | how hard can it be to register a catch handler that just catches everything and uses some kind of introspection to figure out what the thrown exception class is called and build an X::Cpp::AdHoc with the name in it? :D | 03:33 | |
03:35
perlawhirl left,
perlawhirl joined
03:37
wtwt5237 joined
|
|||
geekosaur | "some kind of introspection" may not be a thing | 03:39 | |
(or rather, possibly exists but different for every c++ compiler or even version thereof) | |||
03:41
kurahaupo_ joined
|
|||
wtwt5237 | hi guys, I am an enthusiastic perl5 user. But I have to admit not many people are using perl now. Do you guys think perl6 will revive the glory of perl one day? Just curious what other people think | 03:43 | |
03:43
kurahaupo__ left
03:44
kurahaupo__ joined
|
|||
timotimo | geekosaur: we're already crazy enough to support name mangling of a few different c++ compilers | 03:45 | |
03:45
kurahaupo_ left
|
|||
timotimo | wtwt5237: i've seen people say "perl usage is declining" and other people say "perl usage is staying strong"; i have no way to figure out which is accurate :( | 03:46 | |
seatek | wtwt5237: ha! personally doesn't matter to me what other people are getting glorified on. this is working great for me. | ||
timotimo | but we're pretty certain that perl6 is a fantastic programming language and i'm certain its charm reaches more than just perl5 programmers | ||
gfldex | wtwt5237: so far all folk who spend time with Perl 6 and spoke up here where all very happy with Perl 6 and didn't want to look back. | ||
wtwt5237: my personal view is, that given good performance will be had, Perl 6 will replace all dynamic languages. (this is a hopeful exaggeration) | 03:48 | ||
seatek | i'm one of those recent "crossovers" and it's been hard adjusting to something things, but every little struggle has been well worth it in unexpected payoffs so far | ||
MasterDuke | timotimo: did you happen to see my question in -dev? do you know anything about Perl6::World? | ||
wtwt5237 | good to meet all perl6 supporters here! | 03:49 | |
timotimo | let me see | ||
what is "the settings"? | |||
well, i shall answer in -dev | |||
MasterDuke | m-CORE.setting | ||
gfldex | wtwt5237: making it easy to use of those cores will become more important and Perl 6 is shining in that area. There are a few bugs left tho. Given the current rate they should be gone in halve a year or so. | 03:51 | |
timotimo | hopefully a bit earlier :) | 03:52 | |
03:57
noganex_ joined
04:00
kurahaupo_ joined,
noganex left,
synopsebot6 left
04:01
synopsebot6 joined,
synopsebot6 left,
synopsebot6 joined,
synopsebot6 left,
synopsebot6 joined
04:03
kurahaupo__ left
04:04
LeCamarade left
04:07
pierre_ left
04:12
skids left
04:16
rodrigok left
|
|||
seatek | I've noticed that most of the documentation is reference-y. Some that go into more depth with examples. But I don't notice much in the way of tutorial-ish stuff. Is that not meant to be there, or has it just not been done much? I ask because I'm finding myself going overboard a bit on this grammars introduction, which honestly is seeming more like a tutorial now. | 04:16 | |
04:17
wtwt5237 left
|
|||
timotimo | doc.perl6.org is indeed a reference. there's other documents for other purposes | 04:18 | |
perl6.org/resources/ - links to a bunch of them | |||
seatek | gotcha | ||
timotimo | though the language/ pages of the doc are supposed to be a bit less referency and a bit more tutorialy | 04:19 | |
seatek | yeah that's the "advanced" intro to grammars in there. | 04:20 | |
timotimo | are you refering to the regexes page or actually the grammars page? | 04:21 | |
seatek | the grammars | ||
it doesn't even say what they are, and drops people straight into protoregexes | 04:22 | ||
timotimo | yeah, that document is pretty short | ||
"Grammar is the superclass that classes automatically get when they are declared with the grammar keyword instead of class." | 04:23 | ||
seatek | yeah so far i've got a bout 1500 words worth of intro to grammars and i'm probably half way through | ||
yes that's very helpful | |||
timotimo | the sentence should probably be made less dense | ||
but it contains everything that needs to be known: if you use "grammar", you're defining a class. it gets the default superclass Grammar. | |||
seatek | no because it's still not telling you want grammars are. anything could be a superclass | ||
timotimo | a grammar is really just a class. it's almost that simple. | 04:24 | |
seatek | you guys can't see it because you're too used to it | ||
timotimo | probably | ||
seatek | yeah it was a 2 day struggle for me to get the lightbulb to go off fully including actions | ||
and the docs are circular. make makes as ast. ast is a tree. made returns what you make | 04:25 | ||
timotimo | mh, yes | ||
a little picture should be put in to clarify | |||
seatek | it's all dependent upon having specialized knowledge or insight | 04:26 | |
timotimo | (plus a good description for people who don't have vision) | ||
04:26
khw left,
mohae_ joined
|
|||
seatek | yeah that's what i've been working on -- one little step at a time so it just makes sense the whole way | 04:26 | |
and then they can go to the advanced gammar page :) | |||
grammar | |||
timotimo | it doesn't seem like the grammars page mentions that regexes, rules, tokens are extremely method-like | 04:27 | |
seatek | yes, but i do ;) | ||
timotimo | that's good | ||
in case that wasn't obvious, i appreciate that you're improving this part of the docs | |||
seatek | and i'm explaining about TOP and bubbling up | ||
timotimo | i haven't looked at this part much in the past, but i now see it's clearly deficient | ||
do you already mention that the name "TOP" is only a convention? | 04:28 | ||
seatek | yes i said "by default" | ||
timotimo | good | ||
i wonder if there should be a section for "under the hood" people: how to build a grammar without mentioning "grammar", "regex", "rule", or "token" in your code | 04:29 | ||
seatek | and i keep using method interchangeably with regex token and rule, keeping them all together in people's heads | ||
04:29
mohae left
|
|||
seatek | i think in the advanced stuff maybe | 04:29 | |
but grammars are weird at first. i'd let them get used to the conventional way first. that's the path i'm taking at least | 04:30 | ||
timotimo | sounds good | ||
seatek | but i want to write this while the wounds and suffering are still fresh in my mind | ||
timotimo | when you realize a grammar is "just" a class, it helps to get a little nudge in the "derive a grammar from another" and "mix in a role into a grammar" | ||
good idea | |||
seatek | yes they're quite weird conceptually still to me.. and with their automated/hidden piping going on too ;) | 04:31 | |
timotimo | piping? | 04:32 | |
seatek | metaphoric piping. yes, like in actions especially -- how the token names can popage from the class into the TOP you make there, or optionally the method names in your actions | 04:33 | |
propagate | |||
timotimo | ah | ||
seatek | you guys don't think about that stuff | ||
but it's a confusing mess to anyone new to it | 04:34 | ||
timotimo | hm | ||
04:34
labster joined
|
|||
seatek | it's beautiful -- and it's so helpful | 04:34 | |
timotimo | <foo> is "just" an invocation to regex foo, which also (because it captures) puts the result of regex foo into $/<foo>, and when some rule or regex finishes matching with success, it'll look if there's a foo method in the current action object | 04:35 | |
that's what you mean? | |||
04:35
MasterDuke left
|
|||
seatek | after that even -- when you're making the TOP for the action to return with your .made in the match | 04:36 | |
labster | m: say Inf.new == 0; | ||
camelia | rakudo-moar a1347c: OUTPUT«True» | ||
timotimo | i couldn't parse that sentence, seatek | ||
m: say "Hello!".new eq "" | |||
camelia | rakudo-moar a1347c: OUTPUT«True» | ||
seatek | TOP is built in the action as well, with make | ||
labster | yeah, I know, Inf is a Num. | 04:37 | |
timotimo | um, i don't understand | ||
seatek | $m = GRAM.parse('stingy thing'); $m.made returns what your TOP in the action had | ||
timotimo | ah, i see what you mean | 04:38 | |
seatek | even that is not made clear | ||
timotimo | because you never explicitly invoked TOP anywhere | ||
but it still gets called, and its action method also gets called | |||
labster | m: say "Hello world".new.chars == Inf.new; # and we can combine them! | ||
camelia | rakudo-moar a1347c: OUTPUT«True» | ||
seatek | and how to you put your "make" 'stuff in there? what does it even mean to "make" something? ;) | 04:39 | |
look that up in the docs ;) | |||
Sets the AST to $ast, and returns it. | |||
so i'm trying to fill in all the gaping holes that exist for someone coming in fresh and new to these grammar beasties | 04:40 | ||
timotimo | right | ||
well, the return value of Grammar.parse is just the $/ that's in your TOP | |||
04:42
perlawhirl left
|
|||
seatek | yeah... to my mind, if you're bothering to use actions, and you're making stuff in your actions, you might as well make your own tidy TOP | 04:42 | |
so that when you call $m.made it's exactly the structure you expect | |||
timotimo | right | 04:43 | |
04:44
bitmap joined
|
|||
seatek | i swear this gave me flashbacks to the feeling i had when i first realized what recursion was | 04:45 | |
timotimo | :D | 04:46 | |
04:56
pierre_ joined
05:00
aborazmeh left
05:05
Sgeo_ left
05:06
pierre_ left
05:11
pierre_ joined,
wamba joined
05:16
pierre_ left,
CIAvash joined
|
|||
dalek | c: 4f7b5a5 | timotimo++ | doc/Type/IO/Handle.pod6: long explanation about getc and keyboard input warn of buffering terminals and potential combining characters |
05:16 | |
timotimo | ^- how do you feel about this? | ||
05:19
pierre_ joined
05:30
Sgeo joined
05:34
sftp left,
sftp joined,
Cabanossi left
|
|||
seatek | timotimo: i really like it, at least. those are the kinds of details that can make all the difference | 05:36 | |
it could save someone hours of frustration | 05:37 | ||
timotimo | mhm | 05:38 | |
05:38
Cabanossi joined
05:43
sftp left,
sftp joined
05:46
pierre_ left
05:54
pierre_ joined
05:58
pierre_ left
06:00
pierre_ joined
06:03
silug left
|
|||
samcv | timotimo, sounds good. maybe make `a` in quotes like "a" it reads weird. maybe could change a to be a letter that isn't an actual work? | 06:03 | |
like z or x? | |||
06:04
AlexDaniel left
|
|||
timotimo | ah | 06:04 | |
samcv | a probably the worst letter to you :P 'i' coming in second | ||
*use | |||
but i think it's great having info like that. those are the kinds of things that make me happy to read | 06:05 | ||
timotimo | so what quotes should i be using? | ||
06:05
cognominal joined
|
|||
samcv | well you use "a" later on, and i think that's fine | 06:05 | |
just change it to another letter preferably not a vowel | 06:06 | ||
dalek | c: d2da116 | timotimo++ | doc/Type/IO/Handle.pod6: use e instead of a for less confusion |
||
timotimo | there we go | ||
i think i used =item wrong here | |||
samcv | e is fine as well | 06:07 | |
dalek | c: ae7ab1a | timotimo++ | doc/Type/IO/Handle.pod6: indent prose text for items |
||
samcv | also | ||
<3 for everyone working on the perl 6 docs | |||
timotimo | that's mostly not me :) | 06:08 | |
samcv | you count though! | ||
also curious. how useful are the perl 6 design docs for things that docs.perl6.org don't cover? | 06:09 | ||
at least for object orientation is concerned | |||
timotimo | they haven't been updated to cover the latest changes for half a year or a whole year now | ||
samcv | docs or design docs? | ||
timotimo | design docs | ||
06:09
wamba left
|
|||
timotimo | they have been changed from being called "the specification" to "the design docs" | 06:10 | |
samcv | hah | ||
seatek | timotimo: are protoregexes basically roles with arguments? | ||
timotimo | no, they are basically proto methods | 06:11 | |
all regexes may take arguments | |||
proto is about multiness | |||
seatek | ok .. oh yes. that makes much more sense | 06:12 | |
06:13
BenGoldberg left,
labster left
|
|||
seatek | ok i'm filing that away for later study. it's enough to be able to start the car and drive at this point, rather than disassembing the transmission | 06:15 | |
timotimo | :) | ||
06:18
silug joined,
dataf3l joined
|
|||
dataf3l | hey guys | 06:18 | |
06:18
FROGGS_ left
|
|||
dataf3l | I have a small CGI problem | 06:18 | |
timotimo | greetings dataf3l | ||
06:18
labster joined
|
|||
timotimo | CGI is already a problem in itself, but let's hear what's wrong in your specific case | 06:18 | |
dataf3l | Yeah I know CGI sucks but I want to use it temporarily until HTTP::Simple starts supporting concurrent requests | 06:19 | |
timotimo | mhm | ||
dataf3l | this is my script: | 06:20 | |
#!/usr/local/bin/perl6 | |||
print("Content-Type: text/html\r\n\r\n"); | |||
print("nice\n"); | |||
I did chmod 755 | |||
when I run it I get a 500 | |||
timotimo | what does your error.log say? | ||
dataf3l | Error message: | ||
End of script output before headers: mine3.cgi | |||
[Wed Nov 02 00:24:43.809494 2016] [cgi:error] [pid 70545] [client ::1:55190] AH01215: (8)Exec format error: exec of '/Applications/XAMPP/xamp | 06:21 | ||
pfiles/htdocs/mine3.cgi' failed: /Applications/XAMPP/xamppfiles/htdocs/mine3.cgi | |||
timotimo | what does it look like when you /usr/local/bin/perl6 yourscript.p6? | ||
dataf3l | [Wed Nov 02 00:24:43.809788 2016] [cgi:error] [pid 70545] [client ::1:55190] End of script output before headers: mine3.cgi | ||
timotimo | looks like the path may be wrong | ||
dataf3l | Felipes-MacBook-Pro:htdocs a$ /usr/local/bin/perl6 mine3.cgi | ||
Content-Type: text/html | |||
nice | |||
Felipes-MacBook-Pro:htdocs a$ | |||
timotimo | and just ./mine3.cgi gives the same thing probably? | 06:22 | |
did you make sure cgi is allowed outside your cgi-bin folder? | |||
dataf3l | I have a bash file with a simple cgi script on the same folder with the same permissions | 06:24 | |
it works | |||
Felipes-MacBook-Pro:htdocs a$ cat mine.cgi | |||
#!/bin/bash | |||
echo "Content-Type: text/html" | |||
echo "" | |||
echo "HelloWorld" | |||
timotimo | ah, i think i know what's happening | 06:25 | |
your \r\n may be getting translated to something else | |||
try running your script through xxd to see what exactly it outputs | 06:26 | ||
dataf3l | good idea! | 06:27 | |
timotimo | on mac, newlines are actually \r, aren't they? | ||
dataf3l | you were right! | 06:28 | |
I’m on a mac | 06:29 | ||
Felipes-MacBook-Pro:htdocs a$ perl6 mine3.cgi|xxd | |||
0000000: 436f 6e74 656e 742d 5479 7065 3a20 7465 Content-Type: te | |||
0000010: 7874 2f68 746d 6c0d 0a0d 0a0a 6e69 6365 xt/html.....nice | |||
0000020: 0a0a .. | |||
I can see it shoud be 0a0d 0a0d but it reads 0a0a instead. | |||
timotimo | it seems like it's actually 0d0a0d0a0a | ||
dataf3l | why did \r\n\r\n get interpreted as such? | ||
utf8? | |||
timotimo | it tries to get your platform's newlines right when you write \n | 06:30 | |
we translate on the way out of the program | |||
seatek | both a thank you and a grrr ;) | ||
timotimo | it looks like it can be configured on a per-stream basis | 06:31 | |
dataf3l | wait | ||
so the solution is? | |||
how do I tell perl6 to just output the bytes I wrote in the source code verbatim instead of trying to do weird stuff? | 06:32 | ||
also, you guys have been helpful | |||
timotimo | you're not telling it bytes to output | 06:33 | |
you're giving it a unicode string | |||
you can output bytes with .write and a Buf | |||
well, write in this case | |||
since you want it to be a sub instead of a method | |||
m: say $*OUT.perl | 06:34 | ||
camelia | rakudo-moar a1347c: OUTPUT«IO::Handle.new(:path(IO::Special.new(what => "<STDOUT>")),:chomp)» | ||
timotimo | you can change the .out-nl in any case | 06:35 | |
m: say $*OUT.out-nl | |||
camelia | rakudo-moar a1347c: OUTPUT«No such method 'out-nl' for invocant of type 'IO::Handle' in block <unit> at <tmp> line 1» | ||
timotimo | m: say $*OUT.nl | ||
camelia | rakudo-moar a1347c: OUTPUT«No such method 'nl' for invocant of type 'IO::Handle' in block <unit> at <tmp> line 1» | ||
timotimo | ho-hum? | ||
m: $*OUT.print-nl | |||
camelia | rakudo-moar a1347c: OUTPUT«» | ||
timotimo | m: $*OUT.nl-out | 06:36 | |
camelia | ( no output ) | ||
timotimo | m: $*OUT.nl-out.perl.say | ||
camelia | rakudo-moar a1347c: OUTPUT«"\n"» | ||
timotimo | that's how. | ||
dataf3l | m: say $*OUT.^methods | ||
camelia | rakudo-moar a1347c: OUTPUT«(open nl-in close eof get getc comb words lines read readchars Supply seek tell write opened t lock unlock print put print-nl slurp-rest chmod IO path flush encoding DESTROY e d f s l r w x modified accessed changed mode watch native-descriptor umask split…» | ||
dataf3l | > say $*OUT.nl-out.perl | ||
"\n" | |||
timotimo | that's the thing you get when you use things that'll put a newline at the end | ||
like "say" | |||
dataf3l | ah | ||
does print add an nl? | 06:37 | ||
timotimo | still not sure how to influence the automatic translation | ||
it does not | |||
dataf3l | this works on the command line but the CGI doesn’t like it stll | 06:39 | |
$*OUT.write("Content-Type: text/html\r\n\r\ntest".encode); | |||
xxd looks good | 06:40 | ||
testFelipes-MacBook-Pro:htdocs a$ perl6 ./mine3.cgi|xxd | |||
0000000: 436f 6e74 656e 742d 5479 7065 3a20 7465 Content-Type: te | |||
0000010: 7874 2f68 746d 6c0d 0a0d 0a74 6573 74 xt/html....test | |||
but still no workie on apache | |||
timotimo | that's strange. same error as before? | ||
dataf3l | pretty much | 06:41 | |
End of script output before headers: mine3.cgi | |||
timotimo | can you try outputting the same thing you're writing to $*ERR, too? | 06:42 | |
i think that ought to output it into the errors.log | |||
oh, i mean: output .encode.perl | |||
m: "Content-Type: text/html\r\n\r\ntest".encode.perl.say | |||
camelia | rakudo-moar a1347c: OUTPUT«utf8.new(67,111,110,116,101,110,116,45,84,121,112,101,58,32,116,101,120,116,47,104,116,109,108,13,10,13,10,116,101,115,116)» | ||
dataf3l | ok | 06:43 | |
utf8.new(67,111,110,116,101,110,116,45,84,121,112,101,58,32,116,101,120,116,47,104,116,109,108,13,10,13,10,116,101,115,116) | |||
timotimo | 13 10 13 10, that looks correct | 06:44 | |
hm. is it having trouble with not having a newline at the very end? shouldn't, though. | |||
dataf3l | End of script output before headers: mine4.cgi | 06:45 | |
how could I see what apache is seeing | |||
timotimo | good question | ||
dataf3l | maybe apache sees an error isntead of the output | 06:46 | |
and the error has no new lines or anything, jsut error lines | |||
maybe this daemon user doesn’t have a good-looking perl6 install | |||
seatek | i have had trouble with some programs being able to kick off perl6 programs | 06:47 | |
timotimo | perhaps, but you were able to get the error output from $*ERR.write | ||
06:47
wamba joined
06:51
RabidGravy joined,
synopsebot6 left
|
|||
dataf3l | what do you mean by het the error output | 06:51 | |
06:51
synopsebot6 joined
|
|||
dataf3l | how can I get said output | 06:51 | |
timotimo | well, you put something in $*ERR and it landed in errors.log | ||
so the script was clearly being run | 06:52 | ||
dataf3l | AH I see what you mean | ||
seatek | yeah | ||
dataf3l | let me try | ||
ok now I have a new error :) | 06:53 | ||
[Wed Nov 02 01:52:51.676830 2016] [cgi:error] [pid 91925] [client ::1:58640] AH01215: (13)Permission denied: exec of '/Applications/XAMPP /xamppfiles/htdocs/mine4.cgi' failed: /Applications/XAMPP/xamppfiles/htdocs/mine4.cgi | |||
but this is my fault | |||
timotimo | fantastic | ||
so ... forgot to +x? :) | 06:54 | ||
06:54
darutoko joined
|
|||
timotimo | i just gave synopsebot6 a little piece of code that'll hopefully build doc.perl6.org links from doc commits | 06:55 | |
but i'm not sure if it'll work :P | |||
seatek | is there some kind of special tagging you have to use to link elsewhere? | 06:56 | |
timotimo | hm? | 06:57 | |
seatek | i'm to 2000 words on this so far and haven't even got to actions yet | ||
timotimo | something with L<...>, but i'm not sure about the specifics | ||
seatek | oh is it podish? | ||
timotimo | yeah, pod6 | ||
seatek | k | ||
dataf3l | ERR write does not write to err or apache logs | 06:58 | |
which means script never ran | |||
timotimo | oh? | 07:00 | |
dataf3l | [Wed Nov 02 02:01:03.032448 2016] [cgi:error] [pid 94121] [client ::1:58777] AH01215: (13)Permission denied: exec of '/Applications/XAMPP/xam | 07:02 | |
ppfiles/htdocs/mine4.cgi' failed: /Applications/XAMPP/xamppfiles/htdocs/mine4.cgi | |||
[Wed Nov 02 02:01:03.032646 2016] [cgi:error] [pid 94121] [client ::1:58777] End of script output before headers: mine4.cgi | |||
timotimo | well, "permission denied" is kind of obvious? | ||
about what's going wrong? | |||
dataf3l | ok bad permissions was I needed to do chmod 755 to the file | 07:03 | |
the file now indicates: [Wed Nov 02 02:02:53.756409 2016] [cgi:error] [pid 94119] [client ::1:58812] AH01215: (8)Exec format error: exec of '/Applications/XAMPP/xamp | |||
pfiles/htdocs/mine4.cgi' failed: /Applications/XAMPP/xamppfiles/htdocs/mine4.cgi | |||
which is the error I’ve always had | |||
no wait | |||
that’s a different one!!! | |||
YES! :) | |||
07:07
brillenfux joined
|
|||
dataf3l | this is just too frustrating | 07:09 | |
problem appears to be with my apache installation, since test-cgi doesn’t work | 07:12 | ||
even though the other, simple cgi script I wrote in bash DID work... | |||
07:13
neuraload joined
|
|||
seatek | do you have any space at the top of the file? | 07:13 | |
before the #!/usr/bin/perl6 stuff? | |||
dataf3l | 1st line: #!/usr/local/bin/perl6 | 07:14 | |
verbatim | |||
I wish I had that space mr. | |||
incidentaly, the perl5 cgi example worked without issue | |||
I can’t believe I’ll say this: perl5 is somehow looking attractive?!? | 07:15 | ||
seatek | do you have sudo access? | ||
dataf3l | is that possible? | ||
yeah it’s my mac | |||
but the script run as “daemon" | |||
seatek | try running that script as the user apache runs under | ||
dataf3l | some user created by the XAMPP installation | ||
ok I’ll try | |||
seatek | i'll bet the apache user doesn't have a proper environment to run perl6... but then again, i don't know how you installed perl6... i do know that /usr/local/bin for anything to run from a web server would make me nervous | 07:17 | |
07:17
synopsebot6 left,
synopsebot6 joined
07:18
domidumont joined
|
|||
seatek | synopsebot6 is agitated this evening | 07:18 | |
timotimo | i fixed that doc link detection stuff and when the next doc commit lands it should give some output | ||
i restarted it a bunch | |||
manually, that is | |||
seatek | ah! so you're responsible for its agitation! | 07:19 | |
dataf3l | brew install perl6 | ||
you are probably correct, seatek | |||
seatek | brew sets up specific environment variables for you to be able to run perl6 | 07:20 | |
you will need to give those to the user apache runs under | |||
and make sure they have permission to execute that file hierarchy in which it's installed | |||
or just install again after sudo'ing to the apache user :) | 07:21 | ||
timotimo | that's the great thing about running web apps via mod_proxy | ||
you can much more easily step in the middle and inspect what's up | 07:22 | ||
07:22
domidumont left
|
|||
seatek | i've gotten spoilt by the psgi stuff, and mst's stuff | 07:22 | |
07:23
domidumont joined
|
|||
seatek | psgi is here if i'm remembering right, in perl6... cracker it's called, or something. | 07:23 | |
crispy crust | |||
crust | |||
i think that's it | 07:24 | ||
timotimo | crust is definitely a thing | ||
seatek | yeah that's on my near horizon | ||
07:24
domidumont left
|
|||
seatek | wait. didin't you do a json thing? | 07:25 | |
07:26
firstdayonthejob joined
|
|||
timotimo | i'm responsible for JSON::Fast | 07:26 | |
seatek | i love that module. i hate json. that module lets me love and hate json | ||
timotimo | only the parsing portion, though | ||
seatek | ah ok. i can't remember if i went with that one or the other one.. tiny or something | ||
timotimo | yeah | 07:27 | |
they are functionally equivalent except in corner cases | |||
dataf3l | this feels like too much work, I’m trying to use perl6 so much, but for some reason, it doens’t like any of my ideas | ||
seatek | i probably went with fast instead of tiny. i'm a sucker like that | ||
dataf3l: yeah it can be awkward getting it to install globally on a system. | 07:28 | ||
dataf3l | I wanted a simple cgi thingie, nope. tried the http::simple, nope (single thread), tried http tiny: too complicated, tried importing modules, couldn’t figure out how to import modules. | ||
07:29
kurahaupo_ left
|
|||
dataf3l | I wanted to avoid golang, since it’s syntax makes it too verbose, but at this point, golang looks more atractive than perl6, I’m sad to say | 07:29 | |
seatek | i've run into that too. i can't wait until distributions start picking it up with the latest. | ||
07:29
kurahaupo__ joined
|
|||
timotimo | how do you feel about HTTP::Server::Threaded? | 07:29 | |
07:29
kurahaupo__ left,
RabidGravy left
07:30
kurahaupo__ joined
|
|||
timotimo BBL | 07:31 | ||
dataf3l | downloading... | ||
seatek | i always, even with perl5, do a brew install for the user that the http process will be running under | ||
stmuk_ | I like both go and perl 6. There is a place for both | 07:32 | |
dataf3l | that makes sense | ||
stmuk_ | they do have virtually opposite philosophies | ||
dataf3l | tried the example: | ||
github.com/tony-o/perl6-http-server-threaded | |||
the example failed | 07:33 | ||
Cannot directly create a Supply. You might want: | |||
- To use a Supplier in order to get a live supply | |||
- To use Supply.on-demand to create an on-demand supply | |||
- To create a Supply using a supply block | |||
in method at /usr/local/Cellar/rakudo-star/2016.07/share/perl6/site/sources/3CA3A94E8EC6BDFE95FC1E93CCDF60DD679B9836 (HTTP::Server::Threaded) line 9 | |||
in block <unit> at threaded.p6 line 3 | |||
since the example failed, then I guess I feel “unsure” about HTTP::Server::Threaded, given it was the “simple example” from the readme, timotimo | |||
seatek | is that the latest version? there was a commit 5 days ago | 07:34 | |
07:34
firstdayonthejob left
|
|||
dataf3l | what does panda install? | 07:34 | |
07:35
tbrowder joined
|
|||
seatek | the latest at the time | 07:35 | |
you can just a panda install <modulename> again to get the latest | |||
dataf3l | I fear any mistake I do in the code will bring down the server | 07:37 | |
if the server is all perl6 | |||
which is why I was thinking of cgi, old school, but no server down, just user 500 | |||
seatek | Ah. yeah. I haven't gotten into the server stuff yet here in p6... slowly working my way there. | 07:38 | |
i glanced a couple times though -- there were even a couple frameworks | 07:39 | ||
07:39
auerland joined,
auerland left
|
|||
dataf3l | ok | 07:40 | |
I stumbled into this | |||
github.com/tony-o/perl6-http-server-async | |||
downloads OK from panda | |||
builds ok and passes all unit tests | |||
hello world works, although I had to read the source in order to determine the default port | |||
which was 1666 | |||
seatek | we're all gonna die | 07:41 | |
dataf3l | for now, this might be what I’m looking for, let’s hope it’s multi-threaded. | ||
valar morgulis | |||
[ptc] | valar doaheris | ||
dataf3l | guys, you all have been super helpful, I f-ing love this community | 07:42 | |
seatek | :) | ||
async is nothing to sneeze at, even if it is single-threaded ;) | |||
07:51
dataf3l left,
domidumont joined
08:04
Shin_ joined
08:11
andrzejku_ left,
pierre_ left
08:12
rindolf joined,
pierre_ joined
08:23
pierre_ left
08:31
pierre_ joined
08:33
zakharyas joined
08:34
cognominal left
08:36
neuraload left,
pierre_ left,
neuraload joined
08:40
pierre_ joined,
cognominal joined
08:43
andrzejku joined
08:46
itaipu joined
08:49
cognominal left,
e1 joined
08:55
cognominal joined
|
|||
masak | guten morning, #perl6 | 08:56 | |
arnsholt | o/ | ||
09:02
jonas1 joined
|
|||
eiro | o/ | 09:03 | |
09:03
cognominal left
09:17
seatek left
09:24
ocbtec joined,
ocbtec left,
ocbtec joined
09:26
wamba left
09:31
itaipu left
09:32
ufobat joined
09:33
ufobat_ joined
09:37
ufobat left
09:40
Shin_ left
|
|||
tbrowder | \o | 09:45 | |
ref file handles: i'm trying to do some sig type constraints on an open file handle | |||
according to the docs, i should be able to test for single letter methods (of which only t seems to be explicitly mentioned in the class) | 09:47 | ||
e.g., my $f = open 'f'; say $f.r; => True, fine | 09:48 | ||
09:50
skids joined
09:52
eliasr joined
09:53
wamba joined
09:54
bjz joined,
labster left
|
|||
tbrowder | and these all say False: t, d; That checks | 09:54 | |
but this should say False but shows True: w | 09:55 | ||
note also that if the file is open as writable, then it still shows r as true | 09:57 | ||
now i'm looking at the smart match to see if anything changes... | 09:58 | ||
09:58
Actualeyes1 left,
Actualeyes joined
10:01
wamba left
10:07
kurahaupo_ joined
10:08
bjz left
|
|||
tbrowder | same results | 10:08 | |
(note there are doc issues for most of the single-letter methods) | 10:09 | ||
10:09
kurahaupo__ left
10:10
kurahaupo_ left
10:11
araujo joined
10:12
araujo left,
araujo joined,
araujo left,
araujo joined
10:18
cdg joined
10:22
grondilu joined
10:24
bjz joined,
e1 left
10:25
skids left
10:33
imcsk8 left,
imcsk8 joined
10:36
pierre_ left,
cognominal joined
10:41
kurahaupo__ joined
10:49
cognominal left
10:50
bjz_ joined,
bjz left
10:57
cognominal joined
11:00
imcsk8 left,
imcsk8 joined
11:04
cognominal left
11:08
imcsk8 left,
imcsk8 joined
11:12
itaipu joined
11:21
TEttinger left
11:26
bjz joined,
domidumont left
11:27
bjz_ left
11:32
breinbaas left,
domidumont joined
|
|||
avar | mst: Status of your not-so-shitty packaging for p6 moar/nqp/rakudo/modules? | 11:35 | |
tbrowder | .tell viki Your solution was almost perfect (except you used my inefficient code that created the sting), i tweaked a bit and have working code that does what i want. see it at gist gist.github.com/tbrowder/60914f63c...06078ffb41 | ||
yoleaux | tbrowder: I'll pass your message to viki. | ||
avar | Building rakudo* 2016.10 with my shitty hacky build.. | 11:36 | |
11:40
pierre_ joined
11:43
CIAvash left,
cognominal joined
11:45
pmurias joined
11:48
cdg left
11:49
cognominal left
11:54
wamba joined
12:12
MasterDuke joined
12:14
bjz left
12:16
wamba left
12:17
wamba joined
12:21
stmuk joined
12:25
ab6tract joined
|
|||
ab6tract | avar: i believe they are somewhere on shadow.cat, but it's been a while since his presentation | 12:26 | |
DrForr | And he's probably en route here. | 12:27 | |
ab6tract | DrForr: so mst is kind of like bloody mary? "mst... mst... mst..." | 12:28 | |
[Coke] | moritz++ I had sending out the request on my todo list for a month! :( | 12:29 | |
DrForr | I... suppose so. | ||
[Coke] | (for advent) | 12:30 | |
moritz | so far no new signups in response :( | 12:33 | |
12:38
cdg joined
|
|||
DrForr | In response to what? (I've been offline for a few days, but not long enough to feel the effects...) | 12:39 | |
12:40
user100500 joined
|
|||
user100500 | hello all! (testing) | 12:40 | |
DrForr | Your client seems to work :) | 12:41 | |
12:41
xinming left
|
|||
[Coke] | timotimo: why did you indent the text in IO::Handle? | 12:41 | |
(it turns it into a block quote) | 12:42 | ||
dalek | c: 5ad05a7 | coke++ | xt/words.pws: learn new words |
||
timotimo | i was hoping it'd indent it to become part of the =item | 12:43 | |
[Coke] | docs.perl6.org/routine/getc | 12:44 | |
it renders it as code. | |||
timotimo | i see it. i don't know how to fix it properly | 12:48 | |
=begin item title text blah maybe? | |||
[Coke] | just follow the style from elsewhere? | 12:50 | |
not sure we have that style elsewhere. Maybe make them the next smaller head. | 12:51 | ||
timotimo | i could do that, actually | 12:55 | |
13:06
pullphinger joined
|
|||
user100500 | Question (bad English): how to draw a conclusion binary data as in python? Example: perl6 -e "my $bdata = Buf.new('qwerty'.encode('utf-8')); say $bdata;" # Buf:0x<71 77 65 72 74 79> python -c "bdata = b'qwerty'; print(bdata)" # b'qwerty' | 13:09 | |
timotimo | you can just .decode('latin1') it, for example | ||
13:28
kurahaupo__ is now known as kurahaupo
13:30
cognominal joined
|
|||
user100500 | Thanks. Next example (binary key in hash): python -c "bdata = {'Вася Уткин'.encode(): b'test'}; print(bdata)" # {b'\xd0\xb2\xd0\xb0\xd1\x81\xd1\x8f \xd1\x83\xd1\x82\xd0\xba\xd0\xb8\xd0\xbd': b'test'} perl6 -e "my $v = Buf.new('test'.encode('utf-8')); my %bdata = $v => $v; say %bdata;" # error :( | 13:32 | |
timotimo | the problem is that Buf is read-write, whereas bytestrings in python are read-only | 13:33 | |
maybe use .Blob on the result of .encode to make it read-only | |||
13:34
cognominal left
|
|||
ilmari | m: 'test'.encode().Blob.say | 13:37 | |
camelia | rakudo-moar 8c3e57: OUTPUT«No such method 'Blob' for invocant of type 'utf8' in block <unit> at <tmp> line 1» | ||
ilmari | m: Blob.new('test'.encode()).say | ||
camelia | rakudo-moar 8c3e57: OUTPUT«Blob:0x<74 65 73 74>» | ||
ilmari | m: my $v = Blob.new('test'.encode()); my %bdata = $v => $v; dd %bdata; | 13:38 | |
camelia | rakudo-moar 8c3e57: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it in block <unit> at <tmp> line 1» | ||
ilmari | m: my $v = Blob.new('test'.encode()); my %bdata = $v => $v; say %bdata | ||
camelia | rakudo-moar 8c3e57: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it in block <unit> at <tmp> line 1» | ||
13:39
cdg_ joined,
cognominal joined,
cdg left
13:40
itaipu left
13:44
aborazmeh joined,
aborazmeh left,
aborazmeh joined
13:49
pullphinger left
|
|||
timotimo | user100500: were you able to do it? | 13:54 | |
m: my $v = Blob.new('test'.encode('utf8')); my %bdata = $v => $v; say %bdata.perl | 13:55 | ||
camelia | rakudo-moar 8c3e57: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it in block <unit> at <tmp> line 1» | ||
timotimo | ah, that's the error. of course! | ||
m: my $v = Blob.new('test'.encode('utf8')); my %bdata{Any} = $v => $v; say %bdata.perl | |||
camelia | rakudo-moar 8c3e57: OUTPUT«(my Any %{Any} = (Blob.new(116,101,115,116)) => Blob.new(116,101,115,116))» | ||
timotimo | user100500: ^ this is the solution. you need an object hash. the regular hash will stringify all of the keys | ||
user100500 | I was trying to make a library to parse torrent files and I can't. To parse the string easily, but a binary string is a lot harder. | 13:59 | |
timotimo | it's true | ||
14:03
nicq20 joined
|
|||
nicq20 | Hello o/ | 14:04 | |
14:04
cognominal left
|
|||
timotimo | greetings nicq20 | 14:04 | |
viki | tbrowder: FWIW, this whole thing can be written as just $f.say: $str x 2 + $triple; This way you don't duplicate $str all over the place in code and don't need to create a separate variable just to store a temporary result: gist.github.com/tbrowder/60914f63c...-txt-L7-L9 | 14:05 | |
yoleaux | 11:35Z <tbrowder> viki: Your solution was almost perfect (except you used my inefficient code that created the sting), i tweaked a bit and have working code that does what i want. see it at gist gist.github.com/tbrowder/60914f63c...06078ffb41 | ||
14:06
khw joined
14:07
cognominal joined
|
|||
user100500 | timotimo: Thank you :) | 14:14 | |
14:15
aborazmeh left
14:19
cognominal left
|
|||
viki | BenGoldberg, RE comparisons with NaNs: we didn't come up with that willy-nilly. We follow the IEEE 2008-754. Table 5.3 confirms the results you got. | 14:20 | |
14:23
pyrimidine left
14:24
pierre_ left,
pyrimidine joined
14:25
pierre_ joined
14:27
user100500 left
14:30
pierre_ left
14:34
wamba left
14:35
canopus left
14:38
cognominal joined
14:41
canopus joined
|
|||
tbrowder | viki: for the simple case that's true, but i believe my cookbook template method is required when more complicated text mods are being made. thus avoiding string dup becomes more important. | 14:42 | |
viki | or do we... | 14:44 | |
viki reads more | |||
14:47
Rawriful joined
14:49
cognominal left
|
|||
tbrowder | you'll see what i mean when i release my next module (or see the multi sub write-paragraph at github.com/tbrowder/Misc-Utils-Perl6 | 14:50 | |
viki | I hope to FSM you won't name that module Misc::Utils :) | ||
tbrowder | what do you suggest? | 14:51 | |
viki | Yeah, we're good with NaN's. The Nil basically signals the comparison is unordered. | 14:52 | |
m: say (4 <=> NaN) ~~ Same|Less|More | |||
camelia | rakudo-moar 8c3e57: OUTPUT«False» | ||
viki | And 5.11 says "Every NaN shall compare unordered with everything, including itself." | ||
tbrowder: ANYTHING else. Misc::Utils is like inventing a product and calling it "Generic Widget" | 14:53 | ||
tbrowder | well, it is a generic widget | ||
viki | No, it isn't. | ||
tbrowder | well put out a suggested name then | 14:54 | |
viki | I don't know what it does. | ||
Misc::Utils conveys exactly zero information about what the module is about. | |||
FWIW token decimal is forgetting to match the sign | 14:56 | ||
m: my $hexchar = "F"; say :16($hexchar) | 14:57 | ||
camelia | rakudo-moar 8c3e57: OUTPUT«15» | ||
viki | m: my $time-in-seconds = 3671; say $time-in-seconds.polymod: <60 60 24> | 14:59 | |
camelia | rakudo-moar 8c3e57: OUTPUT«(11 1 1 0)» | ||
15:00
cibs left
15:01
sufrostico left,
cibs joined
|
|||
viki | m: my $un-normalazed-string = " fo bar ber "; dd $un-normalazed-string.words.join: " " | 15:02 | |
camelia | rakudo-moar 8c3e57: OUTPUT«"fo bar ber"» | ||
15:02
cognominal joined
|
|||
viki | tbrowder: well, now that I've read the source, I can give a better analogy: it's like writing four novels of different genre, gluing them together, then putting the result in "General" section in the library. | 15:03 | |
tbrowder: you go from timing a run of a command, to stripping comments (of which language?), to performing date operations, to doing string operations, to doing some sort of numeric base conversion operations. A module's name is a mnemonic for its function. I'm unsure what you're hoping to create with this module: a go-to library? If I want any hex operation or date operation, I just pull out Misc::Utils or | 15:06 | ||
something? | |||
Your strip-comment sub is entirely broken, BTW. { say "Hello # World!"; } <-- the '#' is not a comment in this code, but it'll assume it is. | |||
I don't mean to sound like I'm intentionally poo-pooing your idea, but I can guarantee the current tragectory will leave you with you being the sole user of your module. | 15:08 | ||
viki & lunch | |||
tbrowder | well it is called "Misc"Utils" after all. And I can later try to organize into categories if that would help. And I don't pretend it's perfect yet (thanks for the bug report), either, that's why I haven't released it. | 15:09 | |
ilmari | TBrowder's::Random::Stuff | 15:11 | |
viki | Right, but if I want a module to strip comments, I won't be looking for Misc::Utils. I'll be looking for String::Strip, String::Comment, Str::Utils or something like that. Even if I notice Misc::Utils in my search results, it'd likely be a waste of my time trying to read its documentation to see whether it actually does perform this particular string operation. | ||
It's trying to do too much. | |||
Release 4 modules instead of 1 | 15:12 | ||
DrForr | Does ' still work for a namespace separator? | ||
ilmari | m: package Foo'Bar { sub baz { say "yay" } }; Foo'Bar::baz() | 15:13 | |
camelia | rakudo-moar 8c3e57: OUTPUT«Could not find symbol '&baz' in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
ilmari | m: my $foo'bar = 42; say $foo'bar | 15:14 | |
camelia | rakudo-moar 8c3e57: OUTPUT«42» | ||
ilmari | works in variable names, at least | ||
viki | DrForr: no | ||
m: package Foo'Bar { our sub baz { say "yay" } }; Foo'Bar::baz() | 15:15 | ||
camelia | rakudo-moar 8c3e57: OUTPUT«yay» | ||
viki | Works in package names too, but it's not a replacement for ::. It's just a char | ||
15:15
skids joined
|
|||
viki | s/replacement/synonym/; | 15:16 | |
DrForr | I expect I'll have more questions, though I'm probably better off RTFS. | ||
15:19
cognominal left
15:24
pyrimidine left
|
|||
tbrowder | viki: have you read the short desciptions? I know they need improvenent | 15:24 | |
15:26
pierre_ joined
|
|||
tbrowder | viki: another thing to be done is to organize more export tag groups (such as the "4" you mentioned). also more info in the META6 would help | 15:26 | |
15:28
brillenfux left
15:31
pierre_ left
15:33
cognominal joined
15:34
cognominal left
15:39
cognominal joined
15:41
nadim left
|
|||
viki | You'll end up with a giant document describing the functionality of the module with the most non-descript name in the universe. | 15:42 | |
Don't let me stop you, tho. | |||
tbrowder | viki: i appreciate yr comments, and will see what i can do... | 15:44 | |
15:46
neuraload left
15:47
salva0 left
|
|||
tbrowder | viki: another subject. did you see my comments earlier about tests on an IO::Handle? i get true values where i don't expect them, e.g., on a handle for a file opened read only i get true on "say $fh ~~ :w;" | 15:47 | |
15:49
cognominal left
15:51
salva0 joined
|
|||
dalek | c: b982e3d | gfldex++ | doc/Language/functions.pod6: doc nextcallee |
15:57 | |
synopsebot6 | Link: doc.perl6.org/language/functions.pod6: | ||
[Coke] | m: my $a = say "HI"; say $a; | 15:58 | |
camelia | rakudo-moar 8c3e57: OUTPUT«HITrue» | ||
[Coke] | tbrowder: ^^ that? | ||
15:58
MilkmanDan left
15:59
MilkmanDan joined
|
|||
viki | tbrowder: no, haven't seen them. Weird. | 15:59 | |
s: &infix:<~~>, open("/tmp/foo", :w), \(:r) | |||
SourceBaby | viki, Something's wrong: ERR: Cannot resolve caller sourcery(Sub+{Precedence}, IO::Handle, Capture); none of these signatures match: ($thing, Str:D $method, Capture $c) ($thing, Str:D $method) (&code) (&code, Capture $c) in block <unit> at -e line 6 | ||
viki | s: &infix:<~~>, \(open("/tmp/foo", :w), :r) | ||
SourceBaby | viki, Something's wrong: ERR: Could not find candidate that can do \(IO::Handle.new(:path("/tmp/foo".IO(:SPEC(IO::Spec::Unix),:CWD("/home/zoffix/services/sourceable/perl6"))),:chomp), :r) in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 37 in block <unit> at -e line 6 | ||
viki | hmm | ||
s: &infix:<~~>, \(Pair.new("r", True), open("/tmp/foo", :w)) | 16:00 | ||
SourceBaby | viki, Sauce is at github.com/rakudo/rakudo/blob/8c3e...Mu.pm#L807 | ||
viki | s: open("/tmp/foo", :w), 'w', \() | 16:01 | |
SourceBaby | viki, Sauce is at github.com/rakudo/rakudo/blob/8c3e...le.pm#L752 | ||
viki | tbrowder: yeah, I can reproduce it on 2016.10-15-g43dbc96. { my $fh = open "foo", :r; say $fh.path.w } gives True | 16:04 | |
and opening in :w, gives True for .e | |||
I mean for .r | |||
16:05
domidumont left
|
|||
viki | m: say "foo".IO.w | 16:05 | |
camelia | rakudo-moar 8c3e57: OUTPUT«True» | ||
viki | star: say "foo".IO.w | ||
camelia | star-m 2016.04: OUTPUT«Failed to find 'foo' while trying to do '.w' in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
viki | bisectable6: \say "foo".IO.w | 16:06 | |
bisectable6 | viki, On both starting points (old=2015.12 new=abf6caf) the exit code is 1 and the output is identical as well | ||
viki, Output on both points: Failed to find 'foo' while trying to do '.w' in block <unit> at /tmp/o6bKR1Pahw line 1Actually thrown at: in block <unit> at /tmp/o6bKR1Pahw line 1 | |||
16:06
pmurias left
|
|||
viki | dafuq | 16:06 | |
bisectable6: say "foo".IO.w | |||
bisectable6 | viki, On both starting points (old=2015.12 new=abf6caf) the exit code is 1 and the output is identical as well | ||
viki, Output on both points: Failed to find 'foo' while trying to do '.w' in block <unit> at /tmp/mUSQ6zoXba line 1Actually thrown at: in block <unit> at /tmp/mUSQ6zoXba line 1 | |||
viki | Oh, I *did* have foo locally :} (and camelia is restricted, I'm guessing) | 16:07 | |
or too has foo in there | 16:08 | ||
16:08
cognominal joined
|
|||
tbrowder | viki: My test code is in gist: gist.github.com/tbrowder/90c50fff3...8b1a7552d0 | 16:10 | |
viki | tbrowder: I think I get it. The :r, :w test the readness/writeness of the *file* the open opened. Not whether it was open in read/write mode | ||
16:11
cdg_ left,
cdg joined
16:12
wamba joined
|
|||
tbrowder | ah, only a stat test, then--bummer. well then maybe that's a nice new feature for IO::Handle! | 16:12 | |
viki | Well, it *is* a part of IO::Handle. | ||
tbrowder | with it as a type constrain it could be useful | ||
16:13
acrussell joined
|
|||
viki | It basically boils down to this test: github.com/rakudo/rakudo/blob/8c3e...s.pm#L1708 Note the `abspath` featured there. | 16:13 | |
Oh wait. I'm confusing things. | |||
viki stops doing two things at once | |||
brb | |||
tbrowder | i mean add or fix it so it truly applies to the handle, NOT the file (i.e., a meta characteristic i guess) | 16:14 | |
I meant to try the introspection on IO::Handle but haven't yet | |||
gotta leave for a while... | 16:15 | ||
16:19
cognominal left
16:26
mohae joined,
ggoebel left
16:29
mohae_ left
16:33
cognominal joined
16:34
cognominal left
|
|||
dalek | c: 80ab9ff | timotimo++ | doc/Type/IO/Handle.pod6: use head3 instead of item for getc extra text |
16:37 | |
synopsebot6 | Link: doc.perl6.org/type/IO/Handle.pod6: | ||
timotimo | damn, it kept the : %) | ||
16:38
synopsebot6 left,
synopsebot6 joined
16:39
ggoebel joined
16:41
maybekoo2 joined
16:43
Actualeyes left,
cognominal joined
16:47
ab6tract left
16:48
jonas1 left
16:50
cognominal left
16:52
pmurias joined,
cyphase left
|
|||
timotimo | (the reason was that it had .pod6, but i expected only .pod) | 16:56 | |
tbrowder | viki: disregard all I've complained about IO::Handle for now. If a parameter file handle is expected to be writable and it's not, we get an exception, so that should take care of it for now. I've just started experimenting with introspection with IO::Handle so I may have some more questions later. | 16:57 | |
16:57
telex left
16:58
telex joined
|
|||
TimToady just realized that "put" can mean "print using terminator" :) | 17:04 | ||
17:05
sufrostico joined
17:06
cyphase joined
|
|||
jnthn hands backronym of the day award to TimToady :) | 17:07 | ||
TimToady | I knew that I already liked 'put' a little because it started with the same letter as 'print'; now I know why :) | 17:08 | |
17:10
nicq20 left
17:21
maybekoo2 left
|
|||
tbrowder | viki: i tried all the documented metamethods and the lost interesting is .VAR, it gave: | 17:22 | |
s/lost/most/ | 17:23 | ||
IO::Handle.new(:path("test-file.txt".IO(:SPEC(IO::Spec::Unix),:CWD("/usr/local/people/tbrowde/mydata/tbrowde-home-bzr/perl6/p6-repo-scripts-and-tests/signatures"))),:chomp) | |||
looks like the open mode should be there if it were anywhere | |||
viki | OK. I'm done with the other thing. | 17:25 | |
tbrowder: well, the .w test on the handle is just a .w test on the path: github.com/rakudo/rakudo/blob/8c3e...le.pm#L752 | |||
So it's not a test of the open mode, it's the test of the file the handle points to. | 17:26 | ||
tbrowder | exactly, that's why we need to find the file open mode on the handle if it's available, the single letter methods as you say point back to the stat call on the file itself which should be rw unless changed with a stat call after closing the handle. | 17:28 | |
sorry, chmod | |||
at least on *nix | |||
viki | It's not stored in IO::Handle | 17:31 | |
tbrowder | viki: leaving again..i'll do some more work on Misc::Utils later. BTW, remember it's a WIP and the feedback is VERY helpful (see issues i entered raised by you) | ||
17:32
FROGGS joined
|
|||
tbrowder | i know, but that (.VAR) would be the place to find it, no? | 17:32 | |
viki | No. | 17:33 | |
tbrowder: $llmode contains that information and as you can see, it's just passed to nqp ops. The $!PIO may contain that info, I dunno: github.com/rakudo/rakudo/blob/8c3e...pm#L94-L96 | |||
FROGGS | o/ | 17:35 | |
viki | \o | ||
tbrowder | viki: i think i see the logic, and i'm beating a dead horse again: the system throws if we try to write to a file open read only, that's the the way system open works and i don't see any way to add any useful info--case closed, Watson! | 17:41 | |
bye again for a while... | 17:42 | ||
viki | Well, nothing's impossible :) | ||
We can always add open-mode | 17:43 | ||
And stick $llmode into it on .open | |||
17:44
seatek joined
|
|||
viki | tbrowder: so we'd add $.open-mode attribute. Default it to Nil and set it to $llmode here: github.com/rakudo/rakudo/blob/8c3e...dle.pm#L99 and set it back to Nil on .close and on .slurp-rest when :close is set. Maybe you could try submitting a PR with that. | 17:45 | |
(maybe with an enum for open mode rather than 'r'/'-'/'+' strings) | 17:46 | ||
17:56
cognominal joined
17:57
eyck left
|
|||
viki | m: sub infix:<∅>(**@p) is pure { dd @p.elems }; say ∅⊖∅⊖∅⊖∅⊖∅⊖∅⊖∅⊖∅⊖∅ | 18:05 | |
camelia | rakudo-moar abf6ca: OUTPUT«Too many positionals passed; expected 2 arguments but got 9 in block <unit> at <tmp> line 1» | ||
viki | ? | ||
Oh, wrong symbol in the op | 18:06 | ||
Curse you, Unicode! | |||
18:06
zakharyas left
|
|||
viki | m: sub infix:<⊖>(**@p) is pure { dd @p.elems }; sink ∅⊖∅⊖∅⊖∅⊖∅⊖∅⊖∅⊖∅⊖∅ | 18:06 | |
camelia | rakudo-moar abf6ca: OUTPUT«9» | ||
viki | Cool. I didn't realize infixes behaved like that. | ||
m: sub infix:<⊖>(**@p) is pure { dd @p }; sink 2⊖3⊖5⊖10⊖11⊖44⊖55⊖82⊖101 | 18:07 | ||
camelia | rakudo-moar abf6ca: OUTPUT«[2, 3, 5, 10, 11, 44, 55, 82, 101]» | ||
viki | m: sub infix:<😻>(**@p) is pure { dd @p }; sink 2 😻 3 😻 5 😻 10 😻 11 😻 44 😻 55 😻 82 😻 101 | 18:08 | |
camelia | rakudo-moar abf6ca: OUTPUT«[2, 3][Any, 5][Any, 10][Any, 11][Any, 44][Any, 55][Any, 82][Any, 101]» | ||
viki | Awww. Apparently that only works for ops that are marked as changed in grammar? | 18:09 | |
TimToady | token infix:sym«⊖» { <sym> <O(|%junctive_or)> } | 18:10 | |
18:10
firstdayonthejob joined
|
|||
TimToady | and junctive_or is list associative | 18:10 | |
vendethiel | m: sub infix:<😻>(**@p) is assoc("list") is pure { dd @p }; sink 2 😻 3 😻 5 😻 10 😻 11 😻 44 😻 55 😻 82 😻 101 | ||
camelia | rakudo-moar abf6ca: OUTPUT«[2, 3, 5, 10, 11, 44, 55, 82, 101]» | ||
vendethiel | @viki ^ | ||
oh. Typing esc on a docs.perl6.org page will scroll up because it's caught by the field. mmh... | 18:11 | ||
TimToady | and we haven't thought about whether (^) can have a list associative meaning that is, er, meaningful... | ||
vendethiel | viki: see docs.perl6.org/language/operators#...Precedence (scroll to the 2nd table, associativities) | ||
18:12
gregf_ left
|
|||
TimToady | it's rather similar to ^^ though, which is defined as as a one() listop, not as the parity-based binary +^ | 18:12 | |
viki | vendethiel: neat | ||
m: sub infix:<😻>(**@p) is assoc("chain") { dd @p; '😻' }; sink 2 😻 3 😻 5 😻 10 😻 11 😻 44 😻 55 😻 82 😻 101 | 18:14 | ||
camelia | rakudo-moar abf6ca: OUTPUT«[82, 101][55, "😻"][44, "😻"][11, "😻"][10, "😻"][5, "😻"][3, "😻"][2, "😻"]» | ||
viki | cool | ||
18:16
rgrinberg joined
18:17
sftp left,
sftp joined
18:20
setty1 joined
18:32
zacts left
18:34
cdg left
18:38
Tonik joined
18:43
dataf3l joined
18:55
eyck joined
18:57
rgrinberg left,
labster joined
19:05
dataf3l left
19:09
raiph joined
19:11
Tonik left
|
|||
dalek | c: f4fd7fa | coke++ | xt/code.pws: Track new code varnames |
19:24 | |
19:24
RabidGravy joined
19:32
darutoko left
19:36
kurahaupo left
|
|||
harmil_wk | Examples above inspired me: | 19:38 | |
m: sub infix:<%%%>(**@p) is assoc("list") is pure { ([%] @p) == 0 }; say 8 %%% 6 %%% 2 | |||
camelia | rakudo-moar 5d1b2c: OUTPUT«True» | ||
harmil_wk | Equivalent to a % b % ... %% n | ||
tbrowder | viki: i'll put that on my todo list, but low priority--in the meantime i'm working on breaking up my misc::utils module | 19:42 | |
masak | I've been experiencing test failures in the `prove` harness (but not outside) on recent Rakudos | 19:45 | |
`prove` just reports "Non-zero wait status: 11" and "Parse errors: No plan found in TAP output" for some test files | |||
(same ones every time) | |||
but when I run them in any other way, they come out fine | 19:46 | ||
viki | masak: that's a segfault | ||
moritz | masak: have you tried strace or similar on prove, to see if there's actuall an exit code 11 involved? | 19:47 | |
viki | masak: which test in particular btw? | ||
test file | |||
and when they "come out fine" do they actually include the TAP plan? :) | 19:49 | ||
19:50
AlexDaniel joined
|
|||
FROGGS | masak: do these test files involve testing io? like subprocesses, captures, or similar? | 19:50 | |
viki | Hum, "Now part of the Proc::Async class, but looks to work as in Perl 5" docs.perl6.org/language/5to6-perlfunc#kill | 19:51 | |
Except it ain't. Perl 5's kill can kill any pid, but P::A's kill kill's the P::A instance :/ | |||
masak | FROGGS: yes. uncanny. it does a qqx[grep] | 19:53 | |
jnthn | masak: Maybe try running them under prove with passing --exec="perl6-gdb" or so | ||
masak | hmm | ||
...does that actually work? :) | |||
I mean, does prove end up giving gdb control in case of a segfault? | 19:54 | ||
FROGGS | masak: the harness combines stdout and stderr or so, and this used to break tests in the past that deal with the stuff mentioned | ||
19:54
eliasr left
|
|||
FROGGS | I never understood why this happens | 19:54 | |
jnthn | masak: Um...well, gdb may not end up giving you control actually :) | ||
*prove | |||
So yeah, may not work quite as well as hoped | 19:55 | ||
FROGGS | you can invoke perl6-gdb-m there, did that already | ||
jnthn | ah, cool | ||
FROGGS | though, that does not mean that the error will still be present | ||
jnthn | *nod* | ||
Yeah, hanging ones under prove are easier in that you just attach gdb to them using the PID | 19:56 | ||
19:56
bjz joined
|
|||
jnthn | Guess you can get a core dump | 19:57 | |
masak | what's a recommended way to say "I know this value will trigger a 'useless use' warning, but just sink it uselessly anyway" ? | 20:01 | |
masak has found `$ = ...` so far, but doesn't feel that's so clear | 20:02 | ||
moritz | m: sink 1 | ||
camelia | rakudo-moar 5d1b2c: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 1 in sink context (line 1)» | ||
moritz | :( | ||
masak: I'm curious, where does the need arise? | 20:03 | ||
moritz has no better ideas right now | |||
[Coke] | m: quiet 1 | ||
camelia | rakudo-moar 5d1b2c: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Undeclared routine: quiet used at line 1» | ||
[Coke] | m: quietly 1 | ||
camelia | rakudo-moar 5d1b2c: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 1 in sink context (line 1)» | ||
[Coke] | m: INI 1 | 20:04 | |
camelia | rakudo-moar 5d1b2c: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Undeclared name: INI used at line 1» | ||
[Coke] | maybe we should add phasers to the lookup list. | ||
moritz | m: start 1 | ||
camelia | rakudo-moar 5d1b2c: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 1 in sink context (line 1)» | ||
masak | moritz: I'm golfing a tough one | 20:05 | |
usually you can bisect and identify which bits contribute to the error | 20:06 | ||
with this one it feels like a dozen or so things conspire to bring it about; remove any one of them, and the error geos away | |||
goes* | |||
labster | m: my $year = 2006; my @firstdayofmonth = (1..12).map: Date.new( :$year, :month( * )).day-of-year | 20:13 | |
camelia | rakudo-moar 5d1b2c: OUTPUT«Cannot call Date.new with these named parameters: month year in block <unit> at <tmp> line 1Actually thrown at: in any at gen/moar/m-Metamodel.nqp line 3096 in block <unit> at <tmp> line 1» | ||
labster | m: Date.new( :2006year, :12month); | 20:14 | |
camelia | ( no output ) | ||
moritz | argument lists generally don't *-curry | 20:15 | |
labster | but doesn't infix:<+> work with an argument list too? | 20:17 | |
Treated differently by the grammar, I guess. But that error is still LTA, because it's actually a false statement. | |||
moritz | m: say Date.new(year => 2016, month => 1) | 20:18 | |
camelia | rakudo-moar 5d1b2c: OUTPUT«2016-01-01» | ||
masak gives up this golf and just replaces a `gather` block with pushing to an array, making the bug go away | 20:23 | ||
boring, reliable code wins the day. | 20:24 | ||
yeah. I'm definitely seeing more segfaults since I built latest rakudo. now I got one in a test file that doesn't do any subprocesses. | 20:31 | ||
I was able to run perl6-gdb-m just now, but the error did not happen since it was outside of `prove` | 20:32 | ||
20:33
bjz left
20:37
kurahaupo__ joined
20:39
TEttinger joined,
cdg joined
|
|||
[Coke] | a/me wonders if we'll ever have a day when someone is trying to debug a "why doesn't my all inclusive perl6 IDE using this 3rd party plugin fail in this weird way" like I am having today with eclipse. :| | 20:40 | |
20:41
kurahaupo__ is now known as kurahaupo
20:43
kurahaupo left
20:44
cdg left
20:47
leont joined
20:48
cdg joined
20:53
bjz joined
|
|||
avar | When I'm building rakudo star, ./perl6 <what> allows me to load with -m one of the modules I build in modules/? | 20:56 | |
20:58
bjz left
21:00
El_Che left
21:05
skids left
21:08
dolmen joined
|
|||
raiph | avar: do you mean -M rather than -m? | 21:12 | |
avar | yes | 21:15 | |
viki | Yeah | 21:16 | |
Well, -M just adds paths to module search path, just like in P5. Not sure what's in modules/ :) | 21:17 | ||
*M adds module to load | |||
gah | |||
-I adds paths to lib :) /me needs sleeps | |||
FROGGS | -I is what you said first | ||
star has a folder called "modules" | |||
and when you installed star, all modules will be accessible via -FThe::Module and via perl6 -e 'use The::Module;' | 21:18 | ||
viki | hm hm... yeah. After you install them. I'm looking now and just ./perl6 after building won't work, because they're in repo folders and proper paths that would work with -Imodules -MWhatever | 21:19 | |
avar | Yeah, what I'm doing is debugging the build of rakudo* itself, with 2016.07 monkeypatching modules/MODULES.txt and dropping in a new modules/* module worked to make it build Inline-Perl5 | ||
But now it doesn't work, poking at "make install" now to see if I can somehow get it to tell me what it actually built | 21:20 | ||
viki | Interestingly, I don't see Inline-Perl5 in MODULES.txt in 2016.10. | 21:21 | |
avar | It's not there, I'm manually adding it | 21:22 | |
viki | I guess it's not part of it ¯\_(ツ)_/¯ | ||
avar | tar zxf %{_sourcedir}/Inline-Perl5-2016-11-02-65ceb50.tar.gz -C modules | ||
echo "Inline-Perl5" >> modules/MODULES.txt | |||
viki | I see | 21:23 | |
DrForr | Does the trailing colon in an expression like 'try parse: $x;' have a special name? | 21:25 | |
moritz | uhm, is that indirect object notation? | 21:26 | |
or is the 'parse:' a label there? | |||
timotimo | i don't think a label is allowed in that location | ||
21:26
FROGGS left
|
|||
timotimo | so yeah, indirect object notation | 21:26 | |
geekosaur | neither, foo: bar is an alternative to foo(bar) | 21:27 | |
timotimo | um, no. | ||
geekosaur does not think of that as indirect since bar is not an object there... | |||
necessarily | |||
timotimo | foo: bar is just bar() | ||
DrForr | Well, it's 'try Exp24.parse: $x;' # I assumed it was the equivaent of 'try Exp24.parse( $x );' | ||
timotimo | yes, that is correct | 21:28 | |
what you see there is a statementlist prefix form | |||
the try just goes in front for funsies, like a sub would | |||
but try Exp24.parse: $blah is very different from try parse: $blah | 21:29 | ||
avar | If I find issues with rakudo* in particular, what's a good point of contact? I.e. is there a bug tracker, or do I just harass this channel?:) | ||
timotimo | rakudo star in particular has rakudo/star on github | ||
that has an issue tracker | |||
avar | will poke that, thanks | 21:30 | |
DrForr | I'll treat it as an argument list with a single prefix colon. Tomorrow night :) | ||
harmil_wk | In current rakudo, what would be the equivalent if any of the S05-specced /^ <before $prefix> <* $full> $/ where $prefix is a left-anchored subset of $full? | 21:35 | |
timotimo | i don't know what that means. at all. | 21:37 | |
harmil_wk | <* ...> was supposed to be a partial match, so <* $foo> should match zero-or-more characters of $foo. | 21:38 | |
To quote S05, "A leading * indicates that the following pattern allows a partial match. It always succeeds after matching as many characters as possible." | 21:39 | ||
moritz | harmil_wk: I don't think there's any equivalence | ||
harmil_wk | Hmm, okay. | ||
thanks | |||
21:39
bjz joined
|
|||
avar files github.com/rakudo/star/issues/77 | 21:40 | ||
21:44
acrussell left,
kurahaupo__ joined
|
|||
harmil_wk | m: my $_ = "apple"; my $prefix = "ap"; my $full = "applesauce"; say (/^ $prefix (.*) $/ and $full ~~ /^$0/); | 21:44 | |
camelia | rakudo-moar ebcc33: OUTPUT«Potential difficulties: Redeclaration of symbol '$_' at <tmp>:1 ------> 3my $_7⏏5 = "apple"; my $prefix = "ap"; my $full Nil» | ||
harmil_wk | m: $_ = "apple"; my $prefix = "ap"; my $full = "applesauce"; say (/^ $prefix (.*) $/ and $full ~~ /^$0/); | 21:45 | |
camelia | rakudo-moar ebcc33: OUTPUT«Nil» | ||
harmil_wk | Bah | ||
timotimo | i didn't know of that feature yet. cool. | 21:46 | |
i think you could have something like / $prefix & [ .* $suffix ] / | |||
oh, but that doesn't do the partial match part that you apparently want | |||
never mind. | 21:47 | ||
harmil_wk | I think today it needs to be two matches, just trying to figure out how | ||
Ugly but working: | 21:50 | ||
m: $_ = "apple"; my $prefix = "ap"; my $full = "applesauce"; say (/^ $prefix (.*) $/ and (my $m = $0) and $full ~~ /^$prefix$m/) | |||
camelia | rakudo-moar ebcc33: OUTPUT«「apple」» | ||
moritz | m: my $full = 'applesauce'; my $re = $full.flip.comb.reduce: { "$^b\[$^a]?"}; say 'apple' ~~ /<$re>/ | 21:52 | |
camelia | rakudo-moar ebcc33: OUTPUT«「apple」» | ||
harmil_wk | Ha! Nice | 21:53 | |
I think I've actually done that in Perl 5... years ago. | |||
moritz | if you think in terms of automatons, <*...> is very easy: every state is an accepting state. Over. | ||
avar | I get the uncanny feeling with some p6 stuff that I'm really the first person ever to use some trivial feature: github.com/rakudo/star/issues/78 :( | 21:54 | |
harmil_wk | It's sort of the regex equivalent of a try block. "whatever gets done is great". | 21:55 | |
22:00
bjz left
22:07
rindolf left
22:08
RabidGravy left
|
|||
timotimo | avar: the star makefile and stuff is basically a big pile of crap :) | 22:09 | |
harmil_wk | m: say "abc" ~~ /^<{?True}>/ | 22:16 | |
camelia | rakudo-moar ebcc33: OUTPUT«Nil» | ||
harmil_wk | Shouldn't that match? | ||
22:16
rindolf joined
|
|||
timotimo | you put the ? after the { | 22:30 | |
it should go before the { | |||
right now you're trying to match "abc" against / "True" / | 22:31 | ||
harmil_wk | Ah, thanks | ||
22:31
girafe joined
|
|||
harmil_wk | m: $_ = "app"; my $prefix = "ap"; my $full = "applesauce"; say $_ ~~ /^ <before $prefix> (.*) $ <?{$full.starts-with(~$0)}>/ | 22:32 | |
camelia | rakudo-moar 40429f: OUTPUT«「app」 before => 「」 0 => 「app」» | ||
harmil_wk | At least that's only one regex, and doesn't require building it on the fly. | 22:33 | |
22:33
cdg left
22:37
kurahaupo__ left
|
|||
timotimo | right, interpolating code into regex is extremely costly | 22:38 | |
22:48
dolmen left
22:50
setty1 left
22:51
setty1 joined
22:55
grondilu left
22:59
cdg joined
23:13
naptastic joined
|
|||
naptastic | How does Perl 6 represent strings? I've learned about the complexities of unicode, but not how to handle them, and everything I've heard is that Perl 6 is really the only language that gets it right natively, and that it does so in a smart way. | 23:13 | |
Where can I read more? :) | |||
23:14
cpage_ left
|
|||
timotimo | we have something called "NFG" | 23:15 | |
where we pretend the unicode consortium has assigned combined codepoints for every combination you can come up with | |||
we call these "synthetic codepoints" and we build them whenever they are needed | |||
the user never gets to see them | |||
but you get O(1) access from "index of grapheme" to "the grapheme in the string" | 23:16 | ||
which you don't when you have anything else | |||
naptastic | How big are synthetic codepoints? | 23:17 | |
And what happens if I create a character with a large number of combining diacritics? | 23:18 | ||
23:18
rodrigok joined
|
|||
timotimo | then you get just one grapheme | 23:20 | |
we store graphemes as 32bit signed integers, we use the negative values for synthetics | |||
naptastic | I'm ok with that. But how does Perl 6 keep from running out of synthetic code points? | 23:21 | |
timotimo | you'll have to have a very long-running program with an attacker to exhaust it | 23:22 | |
in the future we'll have a stage in the GC that can free up synthetics | 23:23 | ||
naptastic | I would have to create more than 2^31 unique graphemes. | ||
And a string to contain them. Ok, attacking that is not practical. I approve of your approach. :) | |||
timotimo | for now i'd just say restart your moarvm instance when it gets problematic | ||
seatek | hehe | ||
timotimo | like, regularly restart it | ||
the cleanup thing will be implemented, but it is not yet a priority | 23:24 | ||
23:24
pmurias left
|
|||
rodrigok | hello there | 23:25 | |
novice here, trying to understand a simple thing about p6 class "static fileds" | 23:26 | ||
like described in here docs.perl6.org/language/classtut#Static_fields? | |||
timotimo | that piece of description is ... hardly helpful | 23:27 | |
rodrigok | the last paragrah of that title, states "Class attributes may also be declared with a secondary sigil" | 23:28 | |
timotimo | the rest of the docs call that "twigil" | ||
rodrigok | yes | ||
but the thing is | |||
I can not use the static field | 23:29 | ||
inside the class | |||
when I put a twigil in it | |||
timotimo | can you show a short piece of code that shows the problem? | ||
rodrigok | I can show an example | ||
timotimo | cool | 23:30 | |
i'm distracted by being knee-deep in C code :) | |||
rodrigok | class Test1 { has $x = 1; has $.y = $x; } | ||
class Test6 { my $x = 6; has $.y = $x; } | |||
in the Test1, I can write "has $.x" | 23:31 | ||
and make $y = $.x | |||
In the second example, I cant | |||
I know the '$.x' is really using an acessor | 23:32 | ||
I could also use $!x | |||
timotimo | with "my $.x" it shouldn't be possible to do $!x | ||
rodrigok | yes | ||
what about "my $.x; has $y= <the value of x>?" | 23:33 | ||
the dot also does not seems to work | 23:34 | ||
timotimo | it could just be that the docs are wrong :S | 23:35 | |
rodrigok | It gives a compiler error | 23:36 | |
"Virtual method call $.x may not be used on partially constructed object (maybe you mean $!x for direct attribute access here?)" | |||
23:37
skids joined
|
|||
gfldex | m: class Test6 { my $x = 6; has $.y = $x; } | 23:37 | |
camelia | ( no output ) | ||
rodrigok | that works | 23:38 | |
gfldex | m: class Test6 { my $x = 6; has $.y = $x; }; say Test6.new.y; | ||
camelia | rakudo-moar 88cb05: OUTPUT«6» | ||
rodrigok | If I put a twigil in $.x | ||
I can even create a Test6 object | |||
and call the 'x' method | |||
but not from _inside_ the class, it seems | 23:39 | ||
class Test6 { my $.x = 6; has $.y = 7; } | |||
my $t6 = Test6.new(); | |||
say $t6.x; | |||
(sorry, I don't know how to use the bot) | |||
skids | m: class Test6 { has $.x = 6; has $.y = $!x; }; say Test6.new.y; | ||
camelia | rakudo-moar 88cb05: OUTPUT«6» | ||
gfldex | prefix code with "m:" | 23:40 | |
prefix code with "m: " actually | |||
rodrigok | thanks | ||
skids | Initializers happen before the object is complete, so you have to use direct attribute access. | ||
rodrigok | ok, but, I was trying it in a _class_ attribute | 23:41 | |
called "static filed" in that link | |||
m: class Test6 { my $.x = 6; has $.y = $!x; }; say Test6.new.y; | |||
camelia | rakudo-moar 88cb05: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Attribute $!x not declared in class Test6at <tmp>:1------> 3ass Test6 { my $.x = 6; has $.y = $!x; }7⏏5; say Test6.new.y; expecting any of: horizontal whitespace» | ||
rodrigok | I replaced the "has $.x" by "my $.x" | 23:42 | |
skids | Ah. Yeah, I would guess that should probably be made to work. | ||
Not that but... | |||
m: class Test6 { my $.x = 6; has $.y = $.x; }; say Test6.new.y; # this | 23:43 | ||
camelia | rakudo-moar 88cb05: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Virtual method call $.x may not be used on partially constructed object (maybe you mean $!x for direct attribute access here?)at <tmp>:1------> 3class Test6 { my $.x = 6; has $.y = $.x7⏏5; }; say …» | ||
rodrigok | I understand that the "!" would not work | ||
and the "." will try to access a method before the object is ready | |||
which is not allowed, ok | 23:44 | ||
timotimo | you can try to Type.x instead | ||
rodrigok | I could not figure out what syntax I should use | ||
whats that? | |||
skids | of course you can workaroud with: | ||
m: class Test6 { my $.x = 6; has $.y = self.x; }; say Test6.new.y; | 23:45 | ||
camelia | rakudo-moar 88cb05: OUTPUT«6» | ||
rodrigok | ohh, I tried that | ||
skids | self would be the type object. | ||
rodrigok | I sear!! haha | ||
seatek | ++skids for self -- that's what i always do | ||
rodrigok | let me see here | ||
23:45
John[Lisbeth] joined
|
|||
skids | or wait... | 23:45 | |
rodrigok | (you may have noted, I have examples from 1 to 7) | ||
skids | m: class Test6 { my $.x = 6; has $.y = self.say; }; | 23:46 | |
camelia | ( no output ) | ||
skids | m: class Test6 { my $.x = 6; has $.y = self.say; }; Test6.new; | ||
camelia | rakudo-moar 88cb05: OUTPUT«Test6.new(y => Any)» | ||
skids | I guess self is somehow not just the type object. | ||
seatek | timotimo: are the doc links made always by L<JSON::Tiny module|URL> ? | 23:47 | |
timotimo | i have no idea | ||
rodrigok | I had not tried the "self" for the static attributes | ||
seatek | k | ||
timotimo | i haven't written docs in ages *cough cough* | 23:48 | |
seatek | but you were doing something with the links in them just last night! so i thought you'd be the guy to ask about links in docs. ;) | 23:49 | |
naptastic | (Assuming a host with infinite memory) How many objects can I create in Perl 6? | ||
rodrigok | well, I dont understand very well what you said about the self and tpye object | ||
23:49
John[Lisbeth] left
|
|||
rodrigok | but that example worked, so, thanks | 23:50 | |
timotimo | seatek: no, exclusively links shared to the irc by dalek | ||
23:50
mscha joined
|
|||
seatek | aha! :) | 23:50 | |
23:50
John[Lisbeth] joined
|
|||
mscha | m: (1,2 * * + 1 ...^ * > 2**100).grep: *.is-prime; | 23:51 | |
camelia | ( no output ) | ||
23:51
firstdayonthejob left
|
|||
mscha | m: (1,2 * * + 1 ...^ * > 2**100).grep(*.is-prime)».say; | 23:51 | |
camelia | rakudo-moar 88cb05: OUTPUT«3731127819113107152428721474836472305843009213693951618970019642690137449562111» | ||
mscha | Perl6 slow? I don't think so... | ||
m: (1,2 * * + 1 ...^ * > 2**10000).grep(*.is-prime)».say; | 23:53 | ||
camelia | rakudo-moar 88cb05: OUTPUT«(timeout)3731127819113107152428721474836472305843009213693951618970019642690137449562111162259276829213363391578010288127170141183460469231731687303715884105727686479766013060971498190079908139321726943530014330540939446…» | ||
seatek | i dont' suppose there is any HTML -> pod6 converter yet | 23:56 | |
23:56
rindolf left
|
|||
skids | HTML *to* pod6? | 23:57 | |
seatek | yes, i wrote up my long-winded doc in and html editor. now i need it to be in pod6 | ||
i'm going through line by line right now by hand, dreaming of icecream | 23:58 |