»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:00 benabik is now known as benabik_away 00:05 molaf joined
sorear sjohnson: don't ask to ask 00:07
sjohnson i asked if anyone was good at it, not if i could ask a question 00:08
:)
but, i get ya. my question is this
00:08 markmont left
sjohnson to make things simple, if you have a commercial app and you distribute a GPLv2 program with it, such that a .zip file might contain commercialapp.exe and GPLv2-program.exe... 00:09
what are the license requirements?
00:09 am0c left
sorear see the "mere aggregation" clause 00:09
sjohnson thanks 00:11
flussence ahh, after having to write bad code all day at work, I get to spend the night ripping apart Ancient Perl code and replacing it with p6... 00:12
jnthn zzz & 00:13
sjohnson sorear: that answers that question, thank you. next question is in my .zip example 00:15
must i then include gplv2.txt license text as the third file?
flussence if you're distributing a GPLed binary thing, you need to give the user the license text and either tell them where to get the source or bundle that with it 00:16
00:18 shi joined
sjohnson so, provide a URL i suppose in, say, LICENSES\ultravnc.txt ? 00:20
flussence: what if i never modified the source? 00:21
00:21 kst joined
sjohnson i still need to provide the source, and or where they can find it? 00:21
flussence if it's unmodified, I guess you're just mirroring the upstream's binary so it'd be ok to link to their source
sjohnson unfortunately, the source url doesnt work for UltraVNC 00:22
flussence hm
in that case I think you'd have to provide it yourself somehow
sjohnson hmm.. the authors themselves who distribute .zip files with binaries don't include the source 00:23
i wonder if that means that i don't have to either if it's unmodified. very confusing stuff, this GPL
flussence there's source stuff here, but it's a bit out of date: sourceforge.net/projects/ultravnc/files/ 00:25
looks like svn.sf.net's just down. no surprise there... 00:27
sjohnson ah
thanks for the help
00:30 molaf_ joined 00:34 molaf left 00:38 pecastro left 00:45 bacek left 00:50 kaare_ left 00:58 bacek joined 01:09 IllvilJa joined, cdarroch left 01:33 Chillance left 01:58 IllvilJa left 02:01 noganex joined 02:04 noganex_ left 02:15 stkowski left
flussence ok, I'm done for the night; liking where this is going: github.com/flussence/Text-Tabs-Wra...xt/Tabs.pm 02:51
03:13 whiteknight left 03:18 shi left 03:43 kst left 03:44 kst joined 03:46 jaldhar joined 03:50 shortcircuit left, shortcircuit joined 04:10 kaydsoft left, cafesofie left 04:11 kaydsoft joined 04:24 ponbiki joined 04:26 felliott left 04:27 Su-Shee left 04:28 Su-Shee joined 04:32 IllvilJa joined
sorear TimToady: How likely are we to see $*endsym in Perl 6? 04:35
04:42 arlinius joined 04:46 stifynsemons joined 04:57 justatheory left 05:13 coldhead left
TimToady sorear: I would be interested in considering other ways of factoring out common data, but I'm not very interested in undoing the factorization, in a DRY way 05:22
we could, for instance, make <nofun> parse a <sym> instead of the other way around
but then it's less clear that <nofun> is parsing the symbol 05:23
so I think the current way is clearer
sorear I have nothing against DRY
the problem I have with the current way is that expecting <sym> to react to dynamic variables breaks LTM semantic purity
TimToady it seems like there should be a way to do it with the body of the proto that would be better in that respect 05:24
if the subrules didn't parse the sym, then the proto could say { <sym> <endsym> {*} }
but then the multis don't have the option to parse anything other than the standard sym 05:25
so all the multies could work one way or the other, but not both 05:26
it's sort of the "is parsed" vs "is reparsed" distinction that we proposed at one point
05:27 envi joined
TimToady I can certainly see the benefit of knowing the endsym at compile time 05:27
sorear I can't see any way out of knowing the endsym at compile time. 05:28
TimToady though, of course, you still have to allow for the dynamicity of new derived grammars
and that happens at run time
sorear viv cheats and interprets :$*endsym = 'foo' as a "use sym :for('xxx') :after('foo')"
What's is reparsed about?
TimToady for user macros, basically 05:29
macro foo () is parsed # assumes "foo" is already recognized
macro foo () is reparsed # assumes "foo" is not already recognized
comparable to whether we assume the <sym> is already matched 05:30
might even turn into exactly that underneat
h
if the macro name ends up as the sym
and I don't see why not
sorear the least bad idea I have is something like, regex twigil:sym<!> is endsym<begid> { } # sym -> \! <.begid> proto regex twigil is endsym<begid> {*} # all twigil:xxx that are defined such that the compiler can see this proto, get a begid definition 05:31
TimToady it used to be that way, once upon a time 05:32
don't remember why I changed it
sorear I'm operating under an assumption that endsym matters to LTM 05:33
TimToady I think that's right
so it has to know at the time the new lexer is created 05:34
sorear niecza's LTM cache stuff likes to assume that one regex with one runtime type -> exactly one lexer
TimToady which isn't necessarily compile time, but then it requires more JIT optimization
well, one doesn't change the regex, but new types can be created 05:35
I suppose evil code could even change the ISA pedigree 05:36
and potentially use a different proto
sorear @ISA? In my Perl 6?
TimToady I didn't say @
sorear we have to make certain assumptions about class pedigree immutability, if gradual typing is going to work 05:37
it does no good to say my Dog $x if the compiler can't prove any implications of $x ~~ Dog
TimToady sure, though declarative pessimization is alway spossible 05:38
but then it's, like, declared
and on the user's head be it
we can certainly assume the lack of evil if no evil has been declared 05:39
and we can even put off the analysis of evil for now :) 05:40
"Doctor, it hurts when I do this." "What's that to me? I just deliver babies." 05:43
jdhore TimToady, Sorry to bother you and i know this is perhaps a bit inappropriate, but i absolutely LOVE Perl. You are the man. 05:44
TimToady :) 05:53
05:53 aindilis joined
sorear TimToady: the other big semantic gap between viv and niecza is cursor mutation 06:16
{ $<POST>:delete; } and co
06:48 Vijayasarathy joined, Vijayasarathy left 07:07 orafu left
xinming_ After lwall learnt Japanese, And choose the Mu as a type name in perl 6, Hoped he chose Chinese before the Japanese. ;-) 07:13
sorear What do you mean by that? 07:15
xinming_ sorear: Mu is a Japanese pronouncation for 无(Simplified Chinese), and 無(Traditional Chinese), They both pronounced Wu in Chinese, But not Mu. :-P 07:16
07:18 flatwhatson_ left
dalek ecza: 79f521f | sorear++ | / (3 files):
Bring Niecza's STD a bit closer to the real thing

  -800 lines diff -u output; also tracks several recent improvements.
07:20
sorear xinming_: I see 07:23
sorear -> sleep 07:25
07:38 rgrau left, stifynsemons left 07:45 coldhead joined 08:05 [particle] left 08:28 kaydsoft_ joined, kaydsoft left 08:29 nadim_ left 08:32 kaydsoft_ left, nadim_ joined 08:36 kfo joined 08:39 kfo_ left 08:45 risou joined 08:57 pothos left, pothos joined 09:15 kaydsoft joined 09:16 Mowah joined 09:17 risou left, risou_ joined 09:20 kaydsoft left 09:21 kaydsoft joined 10:18 dorlamm joined 10:28 user_1926 joined 10:31 user_1926 left 10:37 kiffin joined 10:38 kiffin left
snarkyboojum perl6: my $x = 5; $x.++; say $x 10:39
p6eval pugs, niecza v2-5-g79f521f: OUTPUT«6␤»
..rakudo 924242: OUTPUT«Could not find sub &postfix:<.>␤ in main program body at line 22:/tmp/zpiS6wKv1W␤»
snarkyboojum yay niecza 10:40
10:50 orafu joined 10:56 fIorz joined, florz left, fIorz is now known as florz 10:58 karb joined 11:11 hirschnase joined, hirschnase left, toto__ joined 11:12 toto__ left 11:17 jaffa4 joined
jaffa4 hi 11:18
Is redeclaration of a variable allowed in Perl 6?
11:19 masak joined
jaffa4 Is redeclaration of a variable allowed in Perl 6? 11:19
masak std: my $a; my $a
p6eval std 625303c: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $a (see line 1) at /tmp/Gj_bdbKR8q line 1:␤------> my $a; my $a⏏<EOL>␤ok 00:01 119m␤»
masak allowed, but if it's in the same block, you get a warning.
hi, #perl6!
jaffa4 rakudo fails for redeclaration
masak yes, it does.
jaffa4 I tried an example
I fixed the example, is that ok? 11:20
masak not sure I understand.
jaffa4 I have access to github perl6 repository
read -write
Is it ok if I commit that?
11:21 coldhead left
masak permission > forgiveness, so yes :) 11:21
if you want someone to review the patch first, that's OK too.
jaffa4 The change works , I tested it.
ok
masak yes, we implicitly expect any committer to have run the spectests on the commit. 11:22
jaffa4: there might be some RT ticket that can be closed if such a commit goes in, too. 11:23
masak looks
jaffa4 RT ticket? 11:26
masak yes, it's our issue tracker. rt.perl.org/rt3/ 11:27
but I looked, and I don't see any ticket for that. 11:28
jaffa4 I am not surprised
masak submits one
11:29 dorlamm left
masak that way, you'll get the satisfaction of having a closed ticket in RT :) 11:31
tadzik o/
masak \o
rakudo: my $a; my $a; say 'alive'
p6eval rakudo 924242: OUTPUT«===SORRY!===␤Redeclaration of symbol $a at line 22, near "; say 'ali"␤»
karb rakudo: my Pair @nums = 1=>'one'; say @nums[0].perl 11:32
p6eval rakudo 924242: OUTPUT«(timeout)» 11:33
karb This gives error "maximum recursion depth exceeded"
masak :(
tadzik funny
masak jaffa4: rt.perl.org/rt3/Ticket/Display.html?id=83430
11:38 karb left
jaffa4 What is its number? 11:38
masak #83430 11:40
11:41 fhelmberger joined
jaffa4 ph I just changed the example, that is a smaller task. 11:42
nietza: print "hel;lo" 11:44
niecza: print "hel;lo"
p6eval niecza v2-5-g79f521f: OUTPUT«hel;lo»
jaffa4 niecza: print <hel;lo> 11:45
p6eval niecza v2-5-g79f521f: OUTPUT«hel;lo»
11:45 sECuRE left, sECuRE joined
jaffa4 niecza: print 1+3; 11:45
p6eval niecza v2-5-g79f521f: OUTPUT«4»
jaffa4 niecza: print "1"+3;
p6eval niecza v2-5-g79f521f: OUTPUT«4» 11:46
jaffa4 niecza: my $b=4; print "1"+$b;
p6eval niecza v2-5-g79f521f: OUTPUT«5»
masak jaffa4: you mentioned that you had a patch for #83430. are you about to commit it to github?
s/commit/push/ 11:47
jaffa4 no, you misunderstood me
masak I see I did.
tadzik I feel like coding
masak <jaffa4> Is it ok if I commit that?
jaffa4: what is it you have to commit? 11:48
jaffa4 >>>I fixed the example,
masak <masak> not sure I understand. 11:49
which example?
I don't think I've missed any relevant backlog.
jaffa4 cookbook/arrays/ 4 01 11:50
it is really almost nothing.
snarkyboojum that was the vital piece of missing information
masak ah. yes.
jaffa4 all is well that ends well, now you have it. 11:51
masak tries to find this example
jaffa4: you don't happen to have the URL?
snarkyboojum masak: I'm guessing, github.com/perl6/perl6-examples/bl...program.pl 11:52
jaffa4 github.com/perl6/perl6-examples/bl...program.pl
tadzik perlcabal.org/syn/S32/IO.html#uri_ -- method of what should 'method uri()' actually be, and how would it make use of $self?
snarkyboojum oops.. I'll butt out :)
masak jaffa4: thanks. 11:53
tadzik also, in Rakudo we have IO, but not IO::File nor IO::Directory
masak jaffa4: yes, that's a redeclaration. it's legit Perl 6, but it currently dies in Rakudo.
jaffa4: feel free to fix it.
jnthn o/ 11:54
masak tadzik: S32 is full of sludge and outright liquid.
jnthn! \o/
jaffa4 I have just noticed
nietze here is better than the one i have.
masak tadzik: S32/IO, I mean.
jaffa4 nietcza: my Int $b=4; 11:55
masak jaffa4: "niecza". yes, it's frequently updated.
jaffa4 niecza: my Int $b=4;
p6eval niecza v2-5-g79f521f: OUTPUT«===SORRY!===␤␤In my declaration, typename 'Int' must be predeclared (or marked as declarative with :: prefix) at /tmp/qPhWWfdG6T line 1:␤------> my Int⏏ $b=4;␤␤Malformed my at /tmp/qPhWWfdG6T line 1:␤------> my ⏏Int
..$b=4;␤␤Par…
tadzik masak: IMHO, having uri() is a bit bloaty 11:57
I feel more like a URI::Handler or something
masak good intentions lie behind most of what's in there today. but it's not a design I'd like to see implemented. 11:58
jaffa4 but? 11:59
masak I'd like for IO to follow the path of DateTime: someone to slim it down to its absolute minimal spec, so that we can discuss usable features from the standpoint of what can be implemented.
12:01 MayDaniel joined
snarkyboojum perhaps inspiration could be taken from IO::All, though that'd hardly be slimming down the spec :D 12:03
jaffa4 by the way, I created this github.com/jaffa4/Parrot-and-Perl-...udo-37.exe
masak nice. jaffa4++ 12:04
snarkyboojum: I'd like for inspiration to be taken from other languages and theirs IO solutions. someone with the tuits could settle on the 'most elegant' solution, and spec it. 12:05
snarkyboojum masak: do you mean inspiration from other languages other than Perl 5? 12:08
masak aye. 12:09
snarkyboojum oh, I find IO::All quite inspirational :D
masak I looked a bit at Haskell's libraries when we were re-doing Temporal, for example.
and Ruby's, and Python's.
jaffa4 I have been thinking running some speed test 12:10
snarkyboojum masak: definitely makes sense to look at other languages, but I don't see any reason to exclude Perl 5 12:11
12:11 kst left
jaffa4 Are there perl 6 code available for that? 12:11
12:11 kst joined
masak snarkyboojum: no, me neither. see what happened in the end with Temporal; most of the inspiration ended up coming from DateTime.pm :) 12:12
snarkyboojum masak: was going to be my next point :)
masak so I don't disagree with you at all.
snarkyboojum masak: seems like it :)
masak it's just that I like the idea of going beyond the river of Perl ideas and look at what other communities have settled on.
sometimes there are really good ideas to be had in the other camps. 12:13
non-obvious improvements.
snarkyboojum I'd say you'd be crazy not to :)
we'll have to stop agreeing like this :P 12:15
jaffa4 rakudo: for (0..100000) {} 12:18
p6eval rakudo 924242: OUTPUT«(timeout)»
moritz_ we know that lazy list iteration is slow 12:21
jaffa4 is there $_ In Perl 6? 12:25
masak yes.
jaffa4 rakudo: m://;
p6eval rakudo 924242: OUTPUT«===SORRY!===␤Confused at line 22, near "m://;"␤»
jaffa4 rakudo: :m//;
p6eval rakudo 924242: OUTPUT«===SORRY!===␤Confused at line 22, near ":m//;"␤»
moritz_ std: :m//
p6eval std 625303c: OUTPUT«===SORRY!===␤Bogus term at /tmp/fBgk0GsgrK line 1 (EOF):␤------> :m//⏏<EOL>␤Parse failed␤FAILED 00:01 119m␤»
masak rakudo: $_ = "OH HAI"; m/H/; say ~$/
p6eval rakudo 924242: OUTPUT«H␤»
masak jaffa4: S05 outlines the syntax for matching and substituting. 12:26
12:26 rgrau joined
jaffa4 rakudo: m/h/; 12:27
p6eval rakudo 924242: OUTPUT«Method 'match' not found for invocant of class ''␤ in main program body at line 22:/tmp/I96tmA5RE2␤»
masak that's class Any, by the way.
12:27 fredbot joined
masak rakudo: $_ = 'oh my'; s[my] = "HAI"; .say 12:28
jaffa4 rakudo: $_="o";m/h/;
p6eval rakudo 924242: OUTPUT«oh HAI␤»
rakudo 924242: ( no output )
12:28 fredbot left
jaffa4 rakudo: $_="o";m:g/h/; 12:29
masak rakudo: $_ = 'oh 2!'; s[\d+] += 40; .say
p6eval rakudo 924242: OUTPUT«===SORRY!===␤Adverb 'g' not allowed on m at line 22, near ";"␤»
rakudo 924242: OUTPUT«===SORRY!===␤Missing assignment operator at line 22, near "+= 40; .sa"␤»
12:29 gfldex joined
masak submits rakudobug 12:29
gfldex parrot seams to eat ram again
jnthn :/ 12:30
moritz_ masak: known
gfldex activates hawkeye_mode to watch parrot 12:32
masak moritz_: known, or known and submitted? 12:34
moritz_ masak: there's a fudged test in the test suite. Don't know if there's a ticket too
jaffa4 rakudo: say $*ERR: "$_\n"; 12:35
p6eval rakudo 924242: OUTPUT«===SORRY!===␤Confused at line 22, near "say $*ERR:"␤»
jaffa4 rakudo: say $*ERR "$_\n";
masak Justins the ticket
p6eval rakudo 924242: OUTPUT«===SORRY!===␤Confused at line 22, near "say $*ERR "␤»
jaffa4 rakudo: $*ERR.say "$_\n"; 12:36
p6eval rakudo 924242: OUTPUT«===SORRY!===␤Confused at line 22, near "$*ERR.say "␤»
moritz_ rakudo: $*ERR.say: "$_\n"
p6eval rakudo 924242: OUTPUT«Any()␤␤»
masak std: say $*ERR: "$_\n"
p6eval std 625303c: OUTPUT«ok 00:01 122m␤»
jaffa4 ok
rakudo: $*ERR.say: "$_\n"; 12:37
p6eval rakudo 924242: OUTPUT«Any()␤␤»
12:39 am0c joined
jaffa4 what is Unable to parse blockoid, couldn't find final '}' at line 4/ 12:40
rakudo: for (1..4) {$*ERR.say: "$_\n";} 12:41
p6eval rakudo 924242: OUTPUT«1␤␤2␤␤3␤␤4␤␤»
12:41 rgrau_ joined 12:43 rgrau left
gfldex parrot eats ram while mingling core.pm again. How about a ulimit in the build script to have it fail eartly (before it hits PARROT_REVISION)? 12:43
masak jaffa4: to me, the error "Unabable to parse blockoid" means the same as "Confused", just inside of a "{}" block. 12:44
moritz_ gfldex: just set a ulimit before starting the rakudo build
gfldex: some of us have enough ram, and a ulimit would slow down the build for us/them
gfldex moritz_: i know how to handle it. My concerns are more with folk that give Rakudo a try on a host that does not have 2GB+ RAM and turn it down after restarting their machine in anger. 12:47
moritz_ gfldex: well, the correct fix is to consume memory, not to impose arbitrary limits 12:50
jnthn ...to consume *less* memory? :) 12:51
moritz_ gfldex: if you can identify a changeset or a branch merge that changed the beahvior for the worse, we can bug the parrot folks with it
aye, what jnthn said :-)
gfldex i would like to see arbitrary limits so the person that commits to parrot knows there is something wrong with that commit fairly quickly
moritz_: i will dig for the commit 12:52
12:52 [Coke] left
moritz_ ++gfldex 12:52
tadzik hey look: feather.perl6.nl:3000/ 12:54
here be ecosystem webservices 12:56
dalek p-rx/nom: 6a63e74 | jonathan++ | src/metamodel/ (2 files):
Support .^name on KnowHOWs.
12:59
p-rx/nom: 0b5765d | jonathan++ | src/NQP/ (2 files):
Stop treating meta-object names as strings, and actually reference the meta-objects, just as we do with Actions classes.
moritz_ jnthn: what do you think about supporting actual .^method syntax in nqp? 13:00
jnthn moritz_: +1 13:01
moritz_: Have almost done it quite a few times. :)
But there's always been something more pressing. ;) 13:02
13:02 whiteknight joined
jnthn Feel free to go ahead and add it. :) 13:02
moritz_ jnthn: rakudo uses a special helper for .^ calls... I think that's a bit overkill. What about just constructing the right method calls right away?
jnthn If you have tuits and interest, anyways. :)
moritz_ interest, yes :-)
jnthn Yeah, it's overkill. I wanna kill that in Rakudo
Note that .HOW is not a method.
(in nqp-rx/nom)
moritz_ tuits... currently yes
let's see if I can manage it :-) 13:03
first step: parsing
jnthn moritz_: Look for elsif $<longname> eq 'HOW' { in Actions.pm
For a clue on the actions bit :)
moritz_ yes, that helps
now get it parse...
moritz_ looks at STD 13:04
ah, token dotty:sym<.*>
Juerd tadzik: Port 3000 doesn't listen on ipv6; users with an ipv6 connection can perhaps not visit that url. 13:06
13:08 risou_ left
tadzik Juerd: no problem as for now, I just plan to try if the whole idea of mine works, then I'll think about deployment more. But thanks for pointing it out 13:09
13:10 [Coke] joined
Juerd I'm just creating awareness 13:12
It's up to others to decide if it and when it's worth the trouble to actually make it work :)
moritz_ jnthn: I got the parsing to work, but I'm wondering if we don't need a bit of a refactor to make .^ calls work without too much PAST introspection 13:15
13:17 shi joined
jnthn moritz_: Maybe 13:18
moritz_: What are you thinking of changing? 13:20
13:28 pmurias joined 13:36 am0c left 13:41 cafesofie joined 13:43 sftp left
moritz_ jnthn: not sure what's the best approach 13:44
jnthn: the big problem I'm seeing is putting the invocant into the argument list 13:45
13:45 sftp joined
jnthn moritz_: eek, yes 13:46
moritz_: That's muchly an issue as well because we want to only evaluate the invocant once. 13:47
moritz_ maybe having an $*EXTRA_ARGUMENT that is added in <arglist>
jnthn: I think that's the real reason that rakudo uses a helper
jnthn moritz_: Right. To avoid messing around with these kinds of things. 13:49
moritz_ perhaps a helper isn't such a bad idea after all :-) 13:52
13:52 shi left
jnthn moritz_: Maybe but...making .HOW.foo and .^foo have radically different performance characteristics is...not so desirable. 13:52
$obj.HOW is a couple of pointer follows 13:53
moritz_ right
13:54 am0c joined, felliott joined 14:01 kaare_ joined
jnthn brb, nom shopping 14:05
dalek ecza: a7ef71e | pmurias++ | cl-backend/backend.lisp:
[cl-backend] classes are now put in a stash
14:12
masak tadzik: [ecosystem webservices] nice 14:19
tadzik: that's probably where we want to publish Emmentaler stuff eventually.
14:20 drbean left
tadzik masak: si. I think it'd be nice to have it API-exposed, like /tests/Acme;Meow 14:21
masak can't hurt :)
dalek p-rx/nom: 594f186 | jonathan++ | / (3 files):
Start to stub out role meta-objects. All roles are implicitly parametric because a mention of $?CLASS is generic. The base here could be built up to do parametric roles in NQP, but that's not on the cards at the momnet; of course, Rakudo's meta-objects will carry a full implementation of those.
14:30
tadzik hah, from the neutro runtime, 40 seconds is JSON parsing the projects list 14:34
masak that's as strong an argument for eval(slurp) as I've ever heard. 14:36
14:36 risou joined
tadzik 1296916472: parsing json 14:39
1296916512: parsed
iirc Parrot has some JSON parser, maybe it'll be faster than Pureperl at this moment 14:40
masak sure, but then the output would be Parrot data structures.
tadzik mumbles something about language interoperability 14:41
14:41 risou left 14:42 risou joined
pmichaud good morning, #perl6 14:48
masak morning, pm 14:49
14:49 risou_ joined
tadzik 'afternoon, pmichaud 14:50
14:52 risou left 14:54 am0c left, am0c joined 14:59 flatwhatson_ joined 15:00 baest joined 15:01 rgrau_ left
jnthn o/, pmichaud 15:03
pmichaud o/ jnthn
15:04 mkramer joined
dalek ast: eb0af12 | (Fitz Elliott)++ | S03-operators/flip-flop.t:
[flipflop.t] add tests for flipflop op
15:04
jnthn pmichaud: Back from the teaching. :) 15:05
pmichaud excellent. How did it go?
15:05 pmurias left
jnthn Very well. Had a lovely bunch of students, and they all gave me excellent ratings in the evaluation form. :) 15:05
pmichaud fantastic; jnthn++ 15:06
jnthn pmichaud: Let me know when you hit the point of wanting to "freeze" the nom branch for migration. 15:07
felliott hello, #perl6
jnthn pmichaud: I'm currently working through the roles bits.
masak saluton, felliott.
felliott o/, masak!
I've decided to take a stab at implementing the flipflop operator. 15:08
pmichaud jnthn: maybe later today?
jnthn: I'll know more in a couple of hours
jnthn pmichaud: Sure, whenever you're ready.
pmichaud things got... interesting.... here over the last couple of days.
jnthn pmichaud: I tend to work in small commits.
More interesting than "omgz snow"? 15:09
felliott I've got the basics working and was wondering if someone would mind critiquing my code?
pmichaud caused by the omgz snow, yes :)
felliott Especially the pir, which I half-understand and half-cargo-culted. 15:10
jnthn Ah. :)
felliott my branch is here: github.com/felliott/rakudo/tree/flipflop
Or the calss code is in a gist here: gist.github.com/812508
s/calss/class/
I also have some questions about the spec. 15:11
15:11 Axius joined
felliott What should ff do when given non-matchable args? 15:11
Literals or code, for example. 15:12
masak flussence: flipflip! \o/
masak looks
jnthn masak: misstab :)
felliott In P5, literal ints were matched against the current line number, but TimToady indicated in 2005 that that may not be necessary anymore. 15:13
www.nntp.perl.org/group/perl.perl6....24098.html
masak jnthn: huh. weird. my tab key generally works flawlessly. :) 15:14
flussence flops
masak flussence: sorry about the flop. :)
felliott flips 15:15
felliott flips and flussence flops
jnthn felliott: Maybe should be %!ff_cache so it doesn't accidentally end up user-visible.
masak hm. a class... well, I suppose that makes sense.
felliott fox in socks on chicks on clocks
Ah, you can make a private global? 15:16
flussence I've never understood the ff/p5.. op. It's probably good for something but I just can't get my head around it. Are there any examples out there?
jnthn felliott: You can install whatever name you want from PIR ;)
felliott Intriguing....
felliott takes notes 15:17
jnthn Well, I guess you can from Perl 6 too, we just don't support ns interpolation yet... :)
felliott flussence: I've committed some new tests to S03-operators/flip-flop.t that might be useful.
jnthn Is the FlipFlop class spec, ooc?
felliott no 15:18
but I saw a suggestion that it might be implemented that way.
that was in the irclogs, iirc
jnthn felliott: The .perl method seems to return code that would make a Range rather than a flipflop 15:19
15:19 thundergnat joined
felliott if that's not kosher, I don't mind redoing it, but I'll need a lot of help 15:19
thundergnat Hello #perl6
felliott hello, thundergnat!
the flipflop spec right now is: "do it like Perl5 but call it ff" 15:20
jnthn :)
thundergnat I just uploaded a new perl6 solution to rosettacode - Deconvolution 2d+: rosettacode.org/wiki/Deconvolution/2D%2B#Perl_6 Only the 4th language represented for that task 15:21
\o/ 15:22
jnthn felliott: I don't have a problem with it being a class, though I don't fully understand flip flops either. ;)
felliott: Provided that approach is OK, the patch looks overall sane to me.
thundergnat Gives an eye-opening example of how grindingly slow perl 6 is though....
felliott cool, thanks!
jnthn I'd just want to hide the cache, and as I mentioned the .perl looks a bit off.
+ ('^' if $.exclude_first), 15:23
64
+ '..',
65
+ ('^' if $.exclude_last),
felliott oh, yes, I stole it from Range and forgot to update it.
jnthn Guessing...yes, that. :)
felliott :p
thundergnat Tcl version completes in well under a second for 3D deconvolution. Perl 6 take 300 seconds on my machine. :-(
4D deconvolution took just over 7 hours! 15:24
I didn't test 5D.....
sorear good * #perl6
felliott Another hacky bit is the ff cache lookup 15:25
sorear thundergnat: Whose Perl 6 are you finding so slow?
felliott I currently use the filename and line num.
thundergnat er... rakudo. I should make that clear, i guess.
felliott I think I saw a suggestion to use the calling block's mem addr., but I'm not sure how to do that. 15:26
I tried &?BLOCK, but it's NYI, I think
Can I do that in pir?
The current approach works in most sane cases, but two distinct ffs on the same line (e.g. in a oneliner) would use the same object. 15:27
jnthn felliott: Well, calling block is also not fully it 15:28
shortcircuit thundergnat: Which P6 implementation are you poking at?
jnthn felliott: Since there may be two uses of the flipflop operator within that block
felliott: Of course, there may be two on one line too 15:29
felliott: Needs to really have char position or, maybe better, bytecode position.
thundergnat shortcircuit: I am using Rakudo 2010.12. Just added that info to the rosettacode page.
sorear felliott: I tried implementing ff earlier but couldn't make heads or tails of the spec(test)s
felliott can we access that in pir?
sorear: yes, I don't really like them, either. 15:30
I added some new ones that I think are clearer.
shortcircuit thundergnat: You might try other P6 implementations. They might be faster. I don't know.
pmichaud afk, phone call
jnthn felliott: Not sure...looking. 15:31
felliott jnthn: is there a way to get bytecode position in rakudo or pir?
sorry, repeating myself
shortcircuit thundergnat: have you seen this page yet? rosettacode.org/wiki/Reports:Tasks_..._in_Perl_6
felliott echo.. echo.. echo
jnthn felliott: I probably know how to write a dynop to get it... :)
sorear felliott: ff really needs to be a macro so it can generate a $unique++ parameter
felliott O_O I don't know what that is.
thundergnat shortcircuit: yep. I've been adding perl6 tasks from that page. 15:32
felliott sorear: hmm? do you mean the for the state?
sorear felliott: yes
jnthn That'd be one way to do it. 15:33
Once you macro-ize somehting you throw away runtime customizability though.
felliott Would that be preferable to a class?
shortcircuit thundergnat: Sweet. RC is my site, so I'm glad you've got a feel for the site layout already. I haven't had time to spam out my usually greetings to new users yet this year.
thundergnat shortcircuit: I've done about 8-10 perl6 and perl tasks so far, though some were added anonymously before I signed up for an account
sorear felliott: perl 5 ff doesn't involve classes at all, so I'd say yes 15:34
(and it's macroey)
jnthn sorear: Yes but a lot of Perl 5 things don't involve classes at all, when they do in Perl 6. :) 15:35
felliott is there anything else in rakudo that's implemented as a macro that I can look at for reference?
(macroey is my favorite pasta)
sorear pasta?
jnthn lol :)
felliott lame pun
jnthn still got it :)
shortcircuit thundergnat: There are a couple other implementations of P6 you could try. Niecza is under heavy, active development. I know pugs exists, but I know almost nothing else about its status. 15:36
jnthn felliott: You can get the bytecode positon by getting the call frame of the op (at the Parrot context PMC level), getting the context's current_cont attribute, and then doing get_addr on that. 15:38
sorear felliott: make_feed in Actions.pm
thundergnat shortcircuit: Yeah I know, I lurk heavily in #perl6 but my work and life schedule prevents me from actively participating very much. :-(
jnthn I think that'd get you a unique bytecode address.
felliott ace. jnthn++ sorear++
jnthn As sorear says, you could do it as a compile-time transformation too.
sorear shortcircuit: pugs is the most likely future of niecza... a compiler with a bus number of 0 :/ 15:39
jnthn In which case you don't need to worry about what I just told you. 15:40
It's a much bigger re-working of what you have at the moment though.
sorear shortcircuit: nobody understands it well enough to improve it, except audrey, who [clarification: is not dead but] hasn't touched it in 3+ years
felliott I guess both ways make their own kind of sense right now.
jnthn felliott: Yes. I expect @other will have opinions. Suspect TimToady and pmichaud would have some worth hearing. :) 15:41
felliott: I think it could be made to work well either way...
felliott and I still have some spec questions to clear up.
jnthn *nod*
15:42 Mowah left
felliott jnthn, sorear, thanks to both of you! I'll bring this up again when they're around. 15:43
sorear std: s{x} {y} 15:46
p6eval std 625303c: OUTPUT«===SORRY!===␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/_CeFkUdybq line 1:␤------> s{x} ⏏{y}␤ expecting infix or meta-infix␤Parse failed␤FAILED 00:01 120m␤»
sorear std: s{x}{y}
p6eval std 625303c: OUTPUT«===SORRY!===␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/Xxhkmy4imX line 1:␤------> s{x}⏏{y}␤ expecting any of:␤ infix or meta-infix␤ quantifier␤Parse failed␤FAILED
..00:01 120m␤»
15:46 risou_ left
sorear phenny: STD.pm6 won't parse s{x}{y}. Bug? 15:46
phenny: tell TimToady STD.pm6 won't parse s{x}{y}. Bug? 15:47
phenny sorear: I'll pass that on when TimToady is around.
sorear I kinda need that clause don't I
15:47 Axius left
masak :) 15:47
15:48 shi joined 15:54 rgrau joined 16:05 stifynsemons joined 16:08 am0c left 16:14 Patterner left 16:16 Psyche^ joined, Psyche^ is now known as Patterner 16:22 am0c joined
dalek psi: c22255a | masak++ | .gitignore:
[.gitignore] blib

ufo generates this directory.
16:29
psi: e23dbc9 | masak++ | / (2 files):
FUTURE refactor

Instead of $/ -> SIC, the compiler now does $/ -> FUTURE -> SIC. The net gain of ~150 lines also translates to a heightened readability and less tangled code. Bright FUTURE ahead indeed.
16:30 risou joined 16:37 pmurias joined
pmurias sorear: hi 16:37
phenny pmurias: 04 Feb 23:35Z <sorear> tell pmurias -L NULL
sorear pmurias: hi
jnthn masak: Yes, that's the FUTURE refactor, but what's this patch do in the PRESENT? 16:38
:P
pmurias sorear: if i use -LNULL -e 'say 1' is get an error 16:39
Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object
sorear: re likely future of niecza are you planning to abandon it? 16:40
16:41 Axius joined
sorear pmurias: I'm not planning per se but it's pretty much inevitable... I won't be a student forever 16:42
you need a bit more code to make say 1 work 16:43
pmurias -e '1'
sorear for instance, definitions of say and Num
masak jnthn: the PRESENT is, as far as I know, an illusion created by our minds.
sorear you also need stubs for Mu, Any, ClassHOW, Nil
pmurias if i want a custom setting how do i compile that? 16:44
sorear and the unit name needs to be set to "SAFE" or "CORE"
pmurias i saw that hardcoded
sorear Custom settings should sit on top of SAFE or CORE
I hadn't thought about SAFE-less settings yet 16:45
you could do MYSETTING.setting: module MYSETTING; sub fact($n) { $n ?? $n * fact($n-1) !! 1 }; {YOU_ARE_HERE} 16:46
then mono run/Niecza.exe -C MYSETTING
then mono run/Niecza.exe -L MYSETTING -e 'say fact(5)'
pmurias the reason i'm considering it is tha the common lisp backend won't be able to handle everything from the start 16:47
sorear that should work; it's the use case I designed niecza's settings around
oh. _that_ use case
pmurias but i might handle it with hacks on the backend level
in mildew i used to specify that a setting is compiled by passing a compiler option 16:48
but the less we do in the build system the better
could we determin settings on the .setting extension? 16:49
sorear niecza used to do the same thing, until I realized that the option was dead code
actually, you don't need to compile the setting manually
-L MYSETTING will compile it if it hasn't already been
pmurias i know 16:50
sorear and it doesn't need to be called .setting; .pm will work too
pmurias would compiling the setting manually with -L MYSETTING work
?
16:50 justatheory joined
sorear What do you mean? 16:52
pmurias if i compiled my custom setting with -L
but i think i'll go with hacks on the backend level
sorear You shouldn't need much in the way of hacks for now 16:53
-Bdotnet doesn't like to compile anything other than SAFE with -LNULL
But that's entirely -Bdotnet's fault 16:54
-Bclisp doesn't need to have the same flaw
16:54 orafu left
pmurias sorear: for how long will you remain a student? 16:54
sorear dunno
16:55 orafu joined
TimToady one must study all one's life, anymore... 16:55
phenny TimToady: 15:47Z <sorear> tell TimToady STD.pm6 won't parse s{x}{y}. Bug?
16:55 rgrau_ joined, rgrau_ left
TimToady notabug 16:55
bracketed forms of s{} are stolen for s{} = 'y' 16:56
sorear What's the recommended p5->p6 for that syntax?
ah
pmichaud TimToady: o/ wb! How was the trip?
TimToady two days late going, one day late coming back, and we're exhausted, but we had a pretty good time 16:57
pmichaud (good time)++
TimToady Indian drivers are...amazing...
met a lot of nice people 16:58
some of 'em may show up here someday
sorear imagines an influx of Indian drivers. 16:59
masak .oO( Indian DLLS? )
s/S/s/ 17:00
TimToady we were very well taken care of too
the whole thing was completely organized by the students themselves 17:01
we wished we could've got there in time to see the flaming robots and such, but the visas were slow in coming
my talk was the very last thing scheduled, and we barely made it in time for that 17:02
yesterday finally got my yellow fever vaccination (from an allergist, since I have problems with eggs) 17:03
so we can go to Africa at the end of the month 17:04
(Italy first though)
17:04 dakkar joined
dalek ecza: de2b3f3 | sorear++ | / (2 files):
Refactor type object checking into ACCEPTS
17:06
pmichaud (lots of travel)++ 17:11
I saw some good twitter comments about your presentations, so I gather they went well. 17:12
17:14 Axius left
TimToady sorear: is there some reason you copied the doubled curlies from STD? they were really only there for gimme5... 17:15
sorear TimToady: reducing noise in diff output 17:16
TimToady you may edit STD too, y'know :)
TimToady is thinking about the usefulness of %foo<bar> :exists :delete 17:20
benabik_away /nick benabik 17:21
TimToady hugme: hug benabik_away
hugme hugs benabik_away
benabik_away That was odd.
17:21 benabik_away is now known as benabik
TimToady extra space before / 17:21
benabik Musta been a space hanging around the buffer overnight. Forgot to kick it to the door in the morning. 17:22
sorear TimToady: if I changed STD I'd have to test it :p
TimToady ah...well, if you tell me, I can run a snaptest on a faster machine 17:24
but maybe I'll remove the doubles now and see what happens
17:29 gdey joined
TimToady compiles, and compiles the setting...now snaptesting 17:30
17:31 sji joined
masak reviews welcome: github.com/masak/yapsi/blob/master...ce/2011.02 17:32
17:32 justatheory left 17:33 nadim_ left, shi left
diakopter masak: does it work ok on niecza? 17:34
masak my guess is "no", but I haven't tried.
if someone would like to branch and adapt Yapsi to Niecza, I would support that endeavor with gusto.
17:34 nadim_ joined
dalek psi: fe5d76c | masak++ | doc/ChangeLog:
[doc/Changelog] updated
17:35
psi: 4cef98c | masak++ | doc/ROADMAP:
[doc/ROADMAP] updated
psi: 0c57255 | masak++ | lib/Yapsi.pm:
[Yapsi] better DEBUG output for FUTURE::Val
psi: c7970c0 | masak++ | doc/announce/2011.02:
[doc/announce/2011.02] added
TimToady sorear: I assume you are no longer relying on the # end tweaks (DO NOT REMOVE) lines? 17:36
diakopter wonders what other gimme5isms could be extricated 17:37
or even vivisms? 17:38
TimToady can't get rid of vivisms without fixing viv, since we still use it 17:39
but that's a good question... does viv still need the tweaks comments?
sorear TimToady: neither viv nor niecza relies on the # end WHATEVER comments 17:41
role, tweaks, grammar, etc
arnsholt masak: I liked "It's so cute, it almost looks like Ruby!" =)
masak arnsholt: good. I was unsure about that one. :P 17:43
17:43 pecastro joined 17:46 risou_ joined, risou left
dalek psi: c79003f | masak++ | doc/announce/2011.02:
[doc/announce/2011.02] FUTURE is like PAST

Just different.
17:51
17:58 icwiener joined
felliott TimToady / pmichaud: can I pester you with some questions about flipflop? 18:00
specifically, should it be implemented as a class or a macro? 18:01
TimToady it's more like a macro that contains a state variable 18:04
state $secret ?? (RHS and $secret = False) !! (LHS and $secret = True) 18:06
or something like that
felliott thank you! I'll go learn about macros and try it again. 18:12
benabik TimToady: Discussing state $secrets in open IRC now?
sorear TimToady: state, eh? 18:13
masak Rakudo had 'state' at one point, and then it was taken away from us... :/ 18:14
sorear buubot: eval: sub accum { sub { (state $i)++ } } my $x = accum; my $y = accum; say $x->(); say $y->();
18:14 justatheory joined
sorear bleh 18:14
TimToady: state variables are not shared between sub clones, while in Perl 5 .. state is truly global, marked on the optree 18:15
TimToady not supposed to be
sorear TimToady: do you intend for ff to function like state?
TimToady ff requires state 18:16
and I thought p5 fixed the semantics of state
sorear when you say state, do you mean scope_declarator:state, or "something with memory"?
TimToady either or both :)
state is one way to handle state 18:17
jnthn masak: The precious....
jnthn wonders if the way state was done in alpha was really so bad we couldn't just do it that way again. 18:18
It got all the semantics right.
sorear How did alpha do it? 18:19
niecza has a rather simple implementation of state that I'm quite pleased with
jnthn sorear: I forget. It was a while ago. :)
TimToady hidden outer lexical and a START block is one way 18:20
jnthn It attached it somehow per-closrue though.
sorear niecza uses the hidden outer lexical 18:21
TimToady though START depends on state...
sorear no START is needed unless there's an initializer
START is handled using state
TimToady so state is the more primitive
sorear vaguely like unless ((state $)++) {... }
sorear re-reads pp_ctl.c 18:22
TimToady could even be state Bool $ if boolean ++ is faster :)
sorear wow, this is even more evil than I thought. :p
storing data in TARGs, really??
masak TARGs? 18:23
TimToady p5ism
just lexical slots
masak oh.
well, what's the alternative?
also, who's going to suffer, except perhaps introspectors?
TimToady the p5 TARG model assumes the lexpad is persistent
if your lexpad isn't persistent then you have to hide it in the OUTER:: 18:24
dalek psi: 7ee11ce | masak++ | lib/Yapsi.pm:
[Yapsi] bumped SIC version

Between releases, the SIC version is always the version number of the upcoming release.
jnthn TimToady: I had START done in terms of state, iirc.
TimToady jnthn: yes, I had it backwards above
sorear TimToady: what type does ff return? 18:25
TimToady was confused with the initializer
sorear: hmm, well, in P5 it returns a scalar :)
which might be an integer or a string
sorear in p5 it returns a scalar that looks rather int-y
TimToady but was sometimes 42e0
to indicate the end X| 18:26
felliott Does it still need to e0 bit now that we have explicit excluders?
TimToady the e0 hack was just a hack
I'm not attached to it
felliott yay!
TimToady but returning the sequence number is useful
masak today while running I thought about '{ my $a; say "2"; INIT { $a = 42 } }' -- and how the outer block will have to be somehow instantiated in order for the INIT block to have something to assign to. 18:27
jnthn masak: In nqpclr you get the static lexpad in that case
masak makes sense.
jnthn So every future instantiation of the outer has $a being 42
masak I like that.
jnthn Yes, me too :)
It made a bunch of stuff easy :) 18:28
masak I think that's what I arrived at last time I thought about it.
jnthn Sadly, Parrot doesn't have it that way at the moment. So nqp-rx/nom has to work around it.
sorear niecza: { my $a; say "2"; say $a; INIT { $a = 42 }; }
p6eval niecza v2-7-gde2b3f3: OUTPUT«(timeout)»
sorear niecza: { my $a; say "2"; say $a; INIT { $a = 42 }; }
p6eval niecza v2-7-gde2b3f3: OUTPUT«2␤42␤»
masak \o/
sorear++
jnthn Good. :)
We all agree on how it should be then. :) 18:29
sorear niecza needs to be faster.
TimToady we could all be wrong.... :)
jnthn TimToady: :P
masak at least we'll be wrong together :)
TimToady we've all been wrong before...
felliott TimToady: should literal Ints args to ff still be matched against the line number? 18:30
sorear felliott: I do not beleive that Rakudo has the concept of a current line number (yet?)
felliott oh, well that would make it difficult. :)
jnthn I think it does :)
TimToady it's an evil global concept that is probably not worth repeating 18:31
sorear felliott: the p5 spec is talking about $*IN.current-line, *not* $?LINE
jnthn Oh
*that* sort of line number :)
felliott yes.
TimToady it's not even $*IN
jnthn rakudo: $*IN.get for 1..2; say $*IN.ins
TimToady it's $*LAST-USED-FILEHANDLE in p5
p6eval rakudo 924242: OUTPUT«2␤»
jnthn :)
rakudo: say $*OUT.outs; say "omgz"; say $*OUT.outs; 18:32
p6eval rakudo 924242: OUTPUT«Method 'outs' not found for invocant of class 'IO'␤ in main program body at line 22:/tmp/Y9hC9Wd2bq␤»
jnthn aww!
sorear ff is primarily useful when using Perl as "like sed, but better"
TimToady if we do the line number thing, I think $*IN.ins is probably sufficient
sorear jnthn: what exactly does .ins count? 18:34
jnthn sorear: I dunno...I'm not sure I want to look. ;)
sorear haha 18:35
TimToady except that $*IN.ins doesn't work against $*ARGFILES, unless we rebind $*IN on each file
which would be evil
jnthn sorear: calls to .get, it seems. 18:37
sorear: If one calls .read or slurps, it seems to not pay much attention
TimToady that's what I'd expect
jnthn lines is doen in terms of .get 18:38
So that would appear to do the right thing
TimToady lines is really "chunks" if you redefine the delimiter
but it's still per-get
jnthn .read returns a Buf so I guess we'd not expect it to be trying to make sense of newlines though.
18:43 barika joined
TimToady I suppose one could make an argument that +$*IN should return the line number 18:43
then we could at least reduce it to $*IN == 5 ff $*IN == 10 18:44
dalek ecza: 1900c4a | sorear++ | / (3 files):
Implement ~~ topicalization
p-rx/nom: 8f6ca5a | jonathan++ | / (2 files):
Add an NQPModuleHOW.
p-rx/nom: ae3ec52 | jonathan++ | src/NQP/ (2 files):
A little cleanup and consistency improvement in the actions to eliminate some bits left over from the 6model transition, and in prep for roles additions.
TimToady if you're gonna go that far, it seems better to just translate 5 ff 10 to $*IN.ins == 5 ff $*IN.ins == 10 18:45
sorear macroily?
syntactically? 18:46
TimToady that's the idea, yes
jnthn Erm.
TimToady well, it's a p5ism
jnthn ...why on earth is nqp-rx/nom running its tests in ~44s today, when a week or so ago it ran them in 27s on the same machine... 18:47
sorear cron?
TimToady and it's obviously useless to pass literal integers to a boolean operator, so might as well put them to good use
diakopter jnthn: more tests? :) 18:48
jnthn diakopter: Nope. There's no commits that look likely. :/ 18:49
Hm
Repeatable slowdown too.
If it was one-off I could put it down to background tasks...
diakopter was a consensus/BDFL-decree reached about str ? 18:50
badly degrading disk? 18:51
18:52 sji left 18:53 thundergnat left 18:54 cjk101010 joined
TimToady the BDFL said he wanted to see a real cross-implementation use-case for it 18:54
19:01 cjk101010 left, cjk101010 joined
dalek d: c4ade8e | larry++ | STD.pm6:
remove gimme5isms
19:01
jnthn OK, must be something about this machine today. :/ Going back to a revision I know was nippy, it's also slower now, and yet my laptop is snappy with the latest master. 19:04
So, seems I didn't introduce a bizzare regression. 19:06
19:06 justatheory left
TimToady I'm fine with a function like uri(), because it's, like, universal, y'know 19:07
19:07 justatheory joined
TimToady and again, it's in an outer lexical scope, so can easily be overridden 19:08
we can go all Batteries Included without looking like PHP 19:09
any universally recognizable name is fair game, especially if we can load the actual implementation lazily
sorear What do you mean by a cross-implementation use case of str? 19:11
It seems to me that the semantics of str should be such that simple implementations can just let str be a synonym for Str
TimToady I don't want to put native str into the Perl 6 language itself if it's going to mean something different on every implementation, unless there's a use case for discussing the native str generically across all implementations 19:12
19:12 MayDaniel left
TimToady I don't see such a use case yet, but I ain't omniscient 19:13
sorear What is the use case for int?
diakopter :P 19:14
TimToady storage as a C type
what is "str" in C?
sorear Oh, you view native types from an interop POV?
That is very interesting 19:15
Previously I have only considered them from an optimization POV
TimToady I would like to be able to do all my C programming in Perl 6. :)
colomon +1
TimToady sorry if that makes your head asplode 19:16
diakopter do you want to all your ARM programming too? :P 19:17
TimToady or at least all my Java and C# programming
this sentence no verb
diakopter verb
TimToady I don't want to verb 19:18
it weirds me
19:20 pmurias left
Util rakudo: my $scale = 1/0; $scale.perl.say; my @M = [1, 2],[3,0]; my @N = @M[0] X* $scale; say "X* OK"; my $d = @N.perl; say ".perl OK $d"; 19:21
p6eval rakudo 924242: OUTPUT«1/0␤X* OK␤.perl OK [1/0, 1/0]␤»
Util rakudo: my $scale = 1/0; $scale.perl.say; my @M = [1, 2],[3,0]; my @N = @M[1] X* $scale; say "X* OK"; my $d = @N.perl; say ".perl OK $d";
p6eval rakudo 924242: OUTPUT«1/0␤Divide by zero␤ in 'infix:<div>' at line 3759:CORE.setting␤ in 'Rat::new' at line 4144:CORE.setting␤ in 'infix:</>' at line 4233:CORE.setting␤ in 'infix:<*>' at line 4217:CORE.setting␤ in <anon> at line 155:CORE.setting␤ in <anon> at line 1␤ in main program body at
..line …
Util rakudo: my $scale = 1/0; $scale.perl.say; my @M = [1, 2],[3,0]; @M[1] = @M[1] X* $scale; say "X* OK"; my $d = @M.perl; say ".perl OK $d";
p6eval rakudo 924242: OUTPUT«1/0␤X* OK␤Divide by zero␤ in 'infix:<div>' at line 3759:CORE.setting␤ in 'Rat::new' at line 4144:CORE.setting␤ in 'infix:</>' at line 4233:CORE.setting␤ in 'infix:<*>' at line 4217:CORE.setting␤ in <anon> at line 155:CORE.setting␤ in <anon> at line 1␤ in 'Any::join' at
..line …
Util 1) In all three versions, why is div-by-zero allowed in the statement: "$scale = 1/0" ?
2) In the "my @N = @M[0]" version, why is there no error during X* ?
3) In the "my @N = @M[1]" version, why is there an error during X*, when the only change from the previous version is that we divide 0 by 1/0 ?
Even if all three of those behaviors are intended, this one I am *most* puzzled by: 19:22
4) In the "@M[1] =" version, why does the "Divide by zero" error not occur until the .perl call?
diakopter tl;cr
colomon Util: 1/0 isn't divide by zero, it's making an ugly, ugly Rat.
Util colomon: If that is how it *should* work, then it explains #1 and #2. 19:23
TimToady rakudo: say 0 * (0/1) 19:24
p6eval rakudo 924242: OUTPUT«0␤»
TimToady rakudo: say 0 / (1/0) 19:25
p6eval rakudo 924242: OUTPUT«0␤»
diakopter TimToady: what about str as alias for buf32 (or buf16)?
TimToady eek
benabik rakudo: say 1/0
p6eval rakudo 924242: OUTPUT«Inf␤»
benabik rakudo: say 1/Inf 19:26
p6eval rakudo 924242: OUTPUT«0␤»
benabik Mathmatically, those are very not true.
TimToady how 'bout we use ucs4 to mean a ucs-4 buffer
Util (I do not necessarily agree that 1/0 should be a legal Rat, but that is not a point I want to press right now.)
diakopter ok, and then alias str to ucs4 :P 19:27
sorear benabik: we use the affinely extended reals around here
std: X: loop { }; X: loop { }
p6eval std 625303c: OUTPUT«===SORRY!===␤Illegal redeclaration of 'X' at /tmp/oJP51E5k2p line 1:␤------> X: loop { }; X: ⏏loop { }␤Illegal redeclaration of symbol 'X' (see line 1) at /tmp/oJP51E5k2p line 1:␤------> X: loop { }; X: ⏏loop { }␤Check
..failed␤…
Util #1,2,3 are about policy and Spec; #4 is a bug, methinks.
TimToady you can alias str that way in your implementation, but I still don't see a cross-impl use case
sorear TimToady: does Perl 6 still think a bare block is a repeat {} while False ?
masak benabik: I agree, but IEEE-754 doesn't, IIRC. 19:28
TimToady sorear: nope
benabik sorear: Hadn't encountered that before. Interesting and IIRC blows up some parts of calculus. But fair enough. 19:29
TimToady benabik: we would generally prefer not to blow up the rocket just because the mathematicians are unhappy. :) 19:30
benabik TimToady: There are Perl 6 rockets now? Awesome. ;-) 19:32
diakopter TimToady: ok, you persuaded me. :) 19:33
19:33 kst left, tty234 left
benabik masak: I thought the FP spec considered x/0 an error... But +Inf basically is an error flag, I guess. Thanks for the pointer. These are things I should consider when I'm trying to get an MS focusing on compilers. 19:33
19:33 kst joined, dakkar left
benabik found good information on IEEE-754 in the Java VM spec of all places. 19:34
masak benabik: I haven't really read IEEE-754, but I've use Java which implements it.
TimToady in Perl 6 we basically consider Inf and NaN to be very weak unthrown exceptions
masak benabik: in Java, x/0 is an error for ints, and results in Infinity for floats and doubles.
TimToady but our Int can represent Inf (int can't, of course, so throws the error) 19:35
benabik masak: IEEE doesn't like making reading their specs easy, AFAICT. Java's VM doc does explain it a bit though.
TimToady perl6: my Int $x = Inf; say $x; 19:36
p6eval niecza v2-8-g1900c4a: OUTPUT«===SORRY!===␤␤In my declaration, typename 'Int' must be predeclared (or marked as declarative with :: prefix) at /tmp/2USsFJu2Sm line 1:␤------> my Int⏏ $x = Inf; say $x;␤␤Malformed my at /tmp/2USsFJu2Sm line 1:␤------> my
..⏏Int $x…
..rakudo 924242: OUTPUT«Type check failed for assignment␤ in '&infix:<=>' at line 1␤ in main program body at line 22:/tmp/e8CFg0LcYQ␤»
..pugs: OUTPUT«Inf␤»
TimToady hah
benabik TimToady: our Int should represent Inf, but sometimes doesn't? 19:37
TimToady spec says Int type contains ±Inf, but rakudo doesn't implement it yet
rakudo: say Inf.WHAT 19:38
p6eval rakudo 924242: OUTPUT«Num()␤»
TimToady it thinks Inf is a floater
benabik Hm. Does Int also hold NaN?
TimToady dunno if the spec says
masak rakudo: my Int $x = NaN; say $x 19:39
TimToady yes, it says
p6eval rakudo 924242: OUTPUT«Type check failed for assignment␤ in '&infix:<=>' at line 1␤ in main program body at line 22:/tmp/1PcxSs7rkJ␤»
masak TimToady: what does it say? :)
TimToady S02:675
masak submits rakudobug
diakopter niecza: my ::Int $x = Inf; say $x;
p6eval niecza v2-8-g1900c4a: OUTPUT«===SORRY!===␤␤Action method multi_declarator:null not yet implemented at /tmp/7bCmtP_kRh line 1:␤------> my ::Int $x ⏏= Inf; say $x;␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/SAFE.setting line 377 (SAFE
..die @ 2)␤ at …
benabik P6 Int does FP error propagation. I knew if I hung out here I'd learn neat stuff. 19:42
masak :)
Inf and NaN are both Real, but they seem to be late-bound as to whether they're Int or Num. 19:43
I wonder if there's really one Int.Inf and one Num.Inf, who do their best to make the world believe they're really the same value.
ingy o/ 19:44
colomon liked TimToady's earlier suggestion that there's just one Real.Inf.
TimToady o/!
masak ingy! \o/
19:44 justatheory left
masak colomon: well, but then it'd have to do some trickery to get into Int and Num containers. 19:44
19:45 gfldex left
TimToady Real Magic 19:45
19:47 tty234 joined
sorear benabik: I'm looking at www.validlab.com/754R/drafts/archiv...-10-04.pdf now 19:48
19:48 gfldex joined 19:51 kst left
TimToady std: s[foo][bar] 19:52
p6eval std 625303c: OUTPUT«===SORRY!===␤Missing assignment operator at /tmp/p5L3udBk3A line 1:␤------> s[foo][⏏bar]␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤Parse failed␤FAILED 00:01 121m␤»
TimToady std: s{foo}{bar}
p6eval std 625303c: OUTPUT«===SORRY!===␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/ndikcW91hW line 1:␤------> s{foo}⏏{bar}␤ expecting any of:␤ infix or meta-infix␤ quantifier␤Parse failed␤FAILED
..00:01 121m␤»
TimToady ah
19:52 kst joined 19:53 cafesofie left 20:09 arlinius left
Util Thanks to all! 20:18
20:30 benabik is now known as benabik_away 20:32 arlinius joined 20:33 kst left 20:34 extra11 joined, kst joined 20:39 envi left 20:44 vmspb joined, MayDaniel joined 20:46 pecastro left 21:03 Mowah joined 21:10 solarion joined 21:11 coldhead joined 21:23 wooden joined 21:25 molaf_ left 21:26 justatheory joined 21:33 dorlamm joined 21:37 pmurias joined 21:52 cafesofie joined 21:54 enjay joined 21:55 enjay left
dalek d: 29e9ef5 | larry++ | STD.pm6:
improve message on s{foo}{bar}
21:56
p-rx/nom: 50264f9 | jonathan++ | src/ (4 files):
Implement does so roles can be composed. Based on the meta-object, do code generation a little differently for bodies of parametric types. Have NQPClassHOW instantiate the role with the correct type object and add it and the generic version to its roles done list. .^does works as a result. Also update type check cache publisher to know about roles. Missing: all the rest of composition.
22:01
22:02 extra11 left, gdey left, nadim_ left 22:03 nadim_ joined 22:27 MayDaniel left 22:30 cjk101010 left
dalek p-rx/nom: ea83082 | jonathan++ | src/metamodel/how/NQP (2 files):
.^add_method, .^add_multi_method, .^attributes, .^add_parent and (todo) .^add_role for parametric and concrete role meta-objects. Should mean we're just a composer away from working roles in NQP.
22:30
mathw hmm connection timeouts on github
jnthn Hmm, hadn't noticed any issues with it today. 22:31
mathw I can get to it on the web no trouble
but I can't clone rakudo
either by git:// or https://
jnthn oh :( 22:32
mathw yet the web interface is using https on the same server
so it should work...
jnthn I've been pushing OK, though not to that repo. But still, it's odd that push would work but not clone. 22:33
mathw yes
ah
hmm
I seem to have problems tracerouting to it
hopefully whatever glitch that is will resolve 22:34
jnthn pmichaud: I'm done with commits for today. 22:39
pmichaud: So if you want to move the repo this evening, feel free to go ahead.
mathw ahah 22:41
I can clone rakudo over SSH when I log in to github
that took about 2 seconds
I love git
jnthn The only problem with git is that every other version control system I have to work with feels so...awful. 22:42
mathw we use SVN at work
with a very unpredictable server, and requiring lots of cross-branch merging
the kind of thing git's really good at
jnthn That's the best of the non-git ones I get to work with... :) 22:43
jnthn grumbles about Microsoft's heap of crap that it calls version control.
mathw oh we used to use that
fortunately that was before my time
22:43 dorlamm left
jnthn Oh my. 22:43
Yeah, one place I consult at uses it.
mathw but occasionally we have to delve into it to retrieve the source code for a few very old products still in use
jnthn I think it's the number one cause of office cursing.
mathw fortunately my machine doesn't have it installed, so I have an iron-clad excuse to avoid that 22:44
jnthn :D
mathw my boss has it, and he does those tasks 22:45
22:45 am0c left
mathw I'm currently writing a document explaining a new source control/branch management strategy we've worked out 22:46
unfortunately it's one that, while doable in SVN, would be far better in git
I doubt we can pull it off, but I'm going to try and shoot for bonus points and get a git migration
jnthn But @rest aren't up for a git migration?
Well, can always try. :)
mathw oh I think the rest of the branching working group would go for it 22:47
22:47 dorlamm joined
mathw we could probably convince the developers in general 22:47
it's convincing the management and the IT services people to run a git server alongside their svn server for us
Tene My office is working towards a git migration.
mathw and to be honest... well... they're not very good at running an svn server
Tene We've already got a lot of engineers using git-svn.
mathw git-svn might be a workable intermediate solution 22:48
we'll see. Even if we stick to svn, this new policy will be better 22:49
22:59 jaffa4 left 23:00 cjk101010 joined 23:02 Mowah left 23:08 kaare_ left 23:16 dorlamm left 23:25 nethogz joined 23:31 nethogz left 23:33 drbean joined 23:34 cjk101010 left
masak lol, I blogged! strangelyconsistent.org/blog/that-is-so-octal 23:36
masak expects this blog post to have a fairly narrow target group... 23:37
jnthn suspects that @other won't eight it though... 23:38
masak :P 23:39
exercise for those who eight it: would the existence of a really good Set type in Rakudo have saved me characters in the one-liner? how? 23:40
I maintain that the real problem for types like Set and Bag in Perl 6 is that their semantic niche is already occupied (successfully) by arrays and hashes, and even if they are a closer match to what the user might want, they weren't there first. 23:42
23:43 pmurias left 23:46 Sarten-X left
Tene masak: why did you use the subscript @g-$_ instead of *-$_ ? 23:48
23:50 N3T joined, N3T left
Tene masak: it would be nicer in your first() line. 23:51
my $mex = first $set ∌ *, 0..*;
23:52 Sarten-X joined
Tene "my $set = ⦃ @g[*-1,*-2] ⦄; my $mex = first $set ∌ *, 0..*;" vs "my %set; ++%set{@g[@g - $_]} for 1, 2; my $mex = first { !%set.exists($_) }, 0..*;" 23:52
I'm not sure how much of that is Set and how much of that is just golfing, though 23:53
23:53 dju joined, dju left, dju joined
Tene Oh, there's another short program later on. 23:54
masak also, that's non-standard Perl 6, so you'd have to 'use Tene::Set' or something... 23:55
Tene masak: That's what I remember seeing in Set classes posted here in the past, and I'm pretty sure that was implemented in the Pugs repo somewhere 23:56
masak core Perl 6 doesn't have non-latin-1 characters. 23:57
at least that's been a tendency for a few years now.
Tene masak: also, you said "The existance of a really good Set type", which I interpreted as meaning "available in core".
You're right that that wasn't necessarily implied, though.
masak right, I'm not criticizing. just reacting. :) 23:58
Tene Yeah.
masak as to why I didn't use *, I definitely could have.
but I've been bitten by * before, and I wanted to be on the safe side.
Tene Sure, @g is fine, it just took me a couple of tries to read it.
masak tries it with * 23:59
works nicely, I'll replace it in the post. Tene++
I was wary that two subtractions might cause trouble... :)