»ö« 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.
Woodi can confirm 'nom' work a lot faster then Rakudo Star 2011.07 :) 07:16
10k's of pings to Redis via Simple::Redis takes 80s on 2011.07 and only max 13 on yesterday version of 'nom' 07:18
moritz \o/ 07:20
Woodi however I was starting that tests becouse I saw that on Ryby it takes 1.1852 s without pipelining and 0.250783 s with pipelining... 07:21
Woodi but just tested on Perl5 and result without pipelining was 0.3428199291 s 07:21
so I feel I am in kind of depression :) 07:24
Woodi but, again, I think Rakudo is world-scripting-ready 07:26
grondilu so now there is bigint support ?? 07:50
japhb nom: 2**70 07:51
p6eval nom de3997: ( no output )
japhb nom: say 2**70
p6eval nom de3997: OUTPUT«1180591620717411303424␤»
grondilu great
japhb grondilu, ^^
grondilu you guys make fast progress, that's fantastic :) Keep on the good work :-) 07:52
nom: say 0.5.WHAT 07:53
p6eval nom de3997: OUTPUT«Rat()␤»
japhb grondilu, on behalf of those who actually do the fast and good work, but who are currently not around, thank you. :-) 07:54
grondilu a decimal litteral being parsed as a Rat is kind of annoying, as it slows some computations. I spent quite some time finding out why a computation hung, yesterday. 07:55
japhb grondilu, you can simply add 'e0' to the end of the decimal literal, and it will be a Num instead.
grondilu yeah I guess, but it's not much intuitive. Had I wanted a rational, I would have typed <1/2> or something. 07:56
but e0 or .Num is fine 07:57
Woodi nom: say now
p6eval nom de3997: OUTPUT«Instant:1322205588.89651␤» 07:58
japhb grondilu, the idea is that *by default* Perl 6 tries to not lose precision unnecessarily. If you want speed instead, you can ask for it several ways. You can even declare something to use a (VM-)native int or num. 07:58
damn, just missed him
Woodi is Time::HiRes built in v6 ? 08:00
japhb Woodi, if you mean "Is 'now' by default in high resolution?" the answer is yes. 08:01
Woodi sleep 0.01 works too :)
Woodi so: Data::Dumper and Time::HiRes are built in. Moose too :) something else ? :) 08:03
japhb Woodi: lots else. :-) 08:04
grondilu perl6: say (0.5, { 4*$^x*(1-$x) } ... *)[10], (0.5.Num, { 4*$^x*(1-$x) } ... *)[10] 08:05
p6eval rakudo de3997: OUTPUT«00␤» 08:06
..niecza v11-27-gdaa9117: OUTPUT«0/10␤»
..pugs b927740: OUTPUT«*** ␤ Unexpected "["␤ at /tmp/WmlfGGhENa line 1, column 34␤»
grondilu perl6: say (0.5, { 4*$^x*(1-$x) } ... *)[^10] 08:07
p6eval rakudo de3997: OUTPUT«0.5 1 0 0 0 0 0 0 0 0␤»
..pugs b927740: OUTPUT«*** ␤ Unexpected "[^"␤ at /tmp/eem5kD8zl0 line 1, column 34␤»
..niecza v11-27-gdaa9117: OUTPUT«1/2 1/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1␤»
grondilu ahh nevermind
japhb OK, I'm thinking myself in circles here. What *should* the behavior be for: my $equal := 'a' == 0; 08:18
I can see several possibilities:
1. 'a' coerces to 0 and $equal is True
2. 'a' coerces via Str.Numeric to Failure, but Failure used in == returns True 08:19
2. 'a' coerces via Str.Numeric to Failure, and Failure used in == returns False
2. 'a' coerces via Str.Numeric to Failure, and Failure used in == throws
er, those should of course be 1,2,3,4 08:20
:-)
Thoughts?
Erg, I should have collected my thoughts first.
In the second line, I meant that Failure used in == acts as 0 and thus the == returns True. 08:21
geekosaur 2 and 2a [ :) ] remind me of SQL's NULL and the lovely bugs it engenders 08:22
japhb geekosaur, yeah, it's that kind of thing that's bothering me. I can see arguments for all of the possibilities I listed. :-/ 08:26
Generally, I want to be able to give the programmer more information about suspect coercions. However, I also don't want to break DWIM just to grind an axe. 08:27
jnthn morning 09:21
japhb: I think that should come out True, but that still leaves two mechanisms for it to do so :) 09:23
masak nom: sub do-twice(&f, $x) { f f $x }; sub double($x) { 2 * x }; say do-twice &double, 10 09:42
p6eval nom de3997: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&x' called (line 1)␤»
masak nom: sub do-twice(&f, $x) { f f $x }; sub double($x) { 2 * $x }; say do-twice &double, 10 09:43
p6eval nom de3997: OUTPUT«40␤»
masak nom: sub do-twice(&f, $x) { f f $x }; sub add-one($x) { $x + 1 }; say do-twice &add-one, 10
p6eval nom de3997: OUTPUT«12␤»
jnthn masak: cute :) 09:55
jnthn Woodi: I'm sure there's plenty more performance improvements to come in Rakudo yet. :) Real-world code is often better than microbenchmarks; I'd be happy to see the profiler output for your program, or if you give me instructions on how to reproduce your test locally I can take a look at it. 09:58
masak interesting discussion on p6u. 10:16
I'm not sure I believe in a "when it arrives" -- for me, Perl 6 has arrived for the most part. 10:20
it's more like, the future is unevenly distributed, and we'd like to roll it out it to more people in a structured way. 10:21
meaning that people have their "early adopter setting" set to different values, and the early adopters will help us prepare the spec and the implementations for the mainstream users. 10:22
but it'll be a gradual thing, not a "whoa! release! look, Perl 6 is out!" thing
moritz many people don't remember this, but even the now-popular languages didn't have a "woah, $language is out and production ready" moment 10:47
for example the early versions of java where known to be rather slow and too memory hungry to be used for bigger things 10:48
masak in a way, we have ourselves to blame, because we set up a story arc for Perl 6 that was bound to lead to people becoming disappointed/disillusioned. 10:54
2000: "We're gonna develop Perl 6 and it'll be awesome! Just imagine all current problems of Perl 5 gone, and everything just better!"
maybe that was inevitable. people have a tendency to fill in the blanks when you say "next version of X", and imagine their particular problems solved. 10:55
jnthn At least a few hundred of those blanks got put into the RFCs. 10:56
masak I still think it would be extremely interesting to go through the RFCs and see how modern Perl 6 addresses those issues. 10:58
I've done it twice in blog posts; once here: strangelyconsistent.org/blog/the-do...test-sigil
oh, and once here: strangelyconsistent.org/blog/speaki...-in-perl-6 11:00
both mentions of RFCs are at the end of those posts.
masak the RFCs by their very nature had to be merged into something like the Apocalypses, because each of them made a local change on the current Perl 5, and providing 361 new Perl 6s wasn't an option :) 11:08
colomon_Droid o/ 11:34
rafl how are your GCI efforts coming along? are you all set with the tasks you want to do? it's just two more days til the next publication deadline. 11:51
cognominal in nom, it seems there is a problem with scope handling for a var evaluated in a block within a string : "{$s}" with $s a lexical variable of a recursive routine. I am trying to reproduce in a simple program. 11:56
moritz rafl: I've published one task, and plan to do more today or tomorrow 12:07
Woodi masak: you are right about 'not a "whoa! release! look, Perl 6 is out!"'. BUT maybe, if we name this scenario a certain future or something what was happens, we can change the future NOW ? some planning for BIG ANOUNCEMENT someday ? not, yet I know, but someday ? :)
probably anouncing not complete product is not good thing too :) 12:08
anyway, i can call a certain future and 'something what was happen' a fact that ppls will be complain :) so maybe not worry to much ? 12:10
daxim I've read that three times now and yet have to grok it 12:11
moritz nom: sub f($x) { return if $x == 0; say $x; say "{$x}"; f($x - 1) }; f(3) 12:14
p6eval nom de3997: OUTPUT«3␤3␤2␤2␤1␤1␤»
Woodi but as part of planning will be good to partition a spec and mark few parts as 'v6', other as 'probably will change', other experimental and other research. what I mean, realy: mark some spec aspects as research/experimental - other partw will 'look' more stable and it will made Perl6 arrive faster :) just marketing proposition, don't shoot !
moritz nom: sub f($x) { return if $x == 0; my $s = $x; say $s; say "{$s}"; f($x - 1) }; f(3)
p6eval nom de3997: OUTPUT«3␤3␤2␤2␤1␤1␤» 12:14
cognominal moritz: I have to throw some more ingredient to trigger the problem. Don't know wich yet. 12:38
cognominal So far I have reduced the problem to : gist.github.com/1393482 13:08
cognominal nom: sub test($p) { my $s ~= "$p"; test $p -1 if $p-1 > 0; return "$s" }; test 3 13:23
p6eval nom de3997: ( no output )
cognominal nom: sub test($p) { my $s ~= "$p"; test $p -1 if $p-1 > 0; return "$s" }; say test 3
p6eval nom de3997: OUTPUT«3␤»
cognominal nom: sub test($p) { my $s ~= "$p"; test $p -1 if $p-1 > 0; return "{$s}" }; say test 3
p6eval nom de3997: OUTPUT«1␤»
cognominal now that's simpler enough for jnthn to chase the bug. 13:25
*simple
need to get something to eat. 13:26
jnthn cognominal: Thanks for golfing...please ticket it, as I won't get Perl 6 time until this evening. 13:35
flussence
.oO( unpack() could be a little more efficient if it could parse the format string once for multiple inputs... )
14:15
masak flussence: it could do that internally, perhaps. using a hash or some such. 14:33
flussence: or maybe it's really two primitives, one "compile" and one "run", and you can apply them separately and pass around the compiled form.
flussence more FP! :D 14:34
(I did just find Convert::Binary::C for perl5, but its learning curve is a bit overwhelming...) 14:35
masak I wonder what the constant folder could do in terms of precompiling regexes. at least regexes with no interpolation in them are practically constants already. 14:36
masak hm, but wait. we already compile regexes at compile-time. so that's not a problem, really. 14:37
masak though maybe some regexes could be optimized away altogether. 14:40
user45689135 (useless message but I've got to tell this to someone) please, anyone, change the design of the perl6.org website or I definitively move to python 14:41
how can you tell your coworkers to use Perl with such a website 14:42
masak user45689135: could you be more specific? 14:43
I'm not disputing that it could be improved, I'm just wondering what about it you want to improve.
sjn user45689135: so your coworkers decide on the usefulness and power of a language mainly by seeing if the language webpage looks shiny? :) 14:44
masak web presence is a factor, surely.
flussence user45689135: if you're looking for a site that appeals to shallow people, try dev.perl.org/perl6/
user45689135 Sorry for this aggressive stance, i'm half jocking though 14:45
masak not sure the dividing line is shallowness, either :)
donri i like the haskell.org design and how they reuse it in api docs etc
user45689135 yes, dev.perl.org is surely better
masak user45689135: that's fine, as long as you don't believe you can bribe us into changing it :)
masak user45689135: I would like to hear what about it you feel can be improved, though. 14:45
sjn purdy pictures are nice, yes... 14:46
sjn might accept bribes <_< 14:46
sjn *whistles* 14:46
flussence
.oO( maybe "easily frightened" was the adjective I was looking for there... )
user45689135 masak: this don't look professionnal at all, all these different colors. The butterfly !
donri user45689135: why does it need to look "professional"? 14:47
it's -Ofun ;)
user45689135 donri: yes, that's a true question
masak user45689135: that's the idea.
it's made to look this way, not to look professional.
if you dislike that fact, your best bet probably is dev.perl.org/perl6/
user45689135 can't we find a way between the two worls ?
sjn wonders if user45689135 isn't completely aware of the importance of fun in programming
donri and if by "professional" you mean something like what microsoft or oracle etc do i'm all against it :P
masak user45689135: I think we can, and that middle ground is always worth exploring. 14:48
user45689135: but as you can see here, people have certain... doubts as to the automatic usefulness of professionalism.
user45689135 masak: agree with you that oracle website is on the opposite extrem
masak well, donri said that, not me. :) 14:49
but yes, we do prefer to enjoy ourselves more than to please others' expectations of professionalism.
I believe that attitude is still less offputting than the rockstaritude of e.g. the Ruby community :) 14:50
sjn there's a point in having an _aestethic_ website though. an sell done aestethic website surely helps in communicating the message of that website 14:50
masak aye. 14:51
daxim I applied an aesthetic patch once.
masak that's part of why I ask for specific points of improvement.
awwaiid I just looked at sites for python, ruby, scala, ocaml, java, squeak, perl5, perl6... ruby is the prettiest imo and notably the only one with any code on the front page 14:52
flussence Make it look more like learnyouashaskell.com :) /me ducks
masak I believe we still can improve the page aesthetically, even while retaining the "happy colors" theme and the butterfly.
huf are we talking about perl6.org?
user45689135 masak: I don't want to be misunderstood. I love Perl humor and i understand that we want to revendicate it. I just found it ugly, and think the sentiment is so strong that it might be somewhat objective.
masak awwaiid: I've always admired what the Ruby front page does with code examples. it's attractive.
awwaiid perl6 is actually more colorful and playful than squeak :)
huf, yes perl6.org 14:53
huf ah yeah. it breaks if you set your minimum font size high enough
(like i do, with my shitty eyes)
masak user45689135: I do hope that I haven't misunderstood you. I try not to. :) 14:54
user45689135: you want a nicer perl6.org page, but you haven't yet said how. you've only said what you dislike about it.
user45689135: best would be if you could provide us with a new, better design -- maybe through a patch.
user45689135 masak: i will try to purpose some improvments. thanks for having answering me 14:55
awwaiid user45689135, I'm under the impression that the current look of perl6 fits the current embriotic state of perl6 -- child-like joy in growing and exploring the (platonic) universe
masak huf: yeah, I don't like using floats like that. they're not meant for that kind of thing.
huf masak: yep. and i dont have a better solution either
masak: unless html5
daxim I set to min 30pt and it still looks okay
huf but that has to wait a bit
masak awwaiid: I've never thought of it like that -- though it could be argued that Perl 6 is an 11-year-old and prefers a slightly more mature style at this point :) 14:56
huf daxim: as the font gets too large, lines get wrapped into more and more lines and that pushes the >>MORE<< below the edge of the box
awwaiid masak, could be!
daxim aha
masak huf: giveupandusetables.com/
huf yep :D
i'm used to sites breaking, so it's not a big deal for me 14:57
but then, i hate the web with a passion :D
masak I kinda like the web. I like emergent things. 14:57
huf i liked what it could have been, the hyperlinked set of documents thing. i dont like what it's become, an application platform
not because i dont think we need that, but because it sucks at it 14:58
awwaiid me too -- I love the chaos that magically still leads to such utility
donri this www.conversationmarketing.com/2010/...esigns.htm not this www.oracle.com/us/products/servers-...index.html
masak I do believe that the dream of separating content from presentation that fuels the desire not to use tables for layouts is, ultimately, unattainable.
donri separating content from presentation is easy: keep the content in a database :P 14:59
generating different presentations is a simple matter of templating
flussence CSS3 does have some stuff that can be used for table-like layout... but it's not finished and every browser does it differently :( 15:00
donri but, css does make a lot of things easier
flussence (display: box & related things)
daxim use.perl.org/comments.pl?cid=70360&sid=43716
donri flexbox is in deed cuteness 15:01
masak donri: CSS does make a lot of things easier. what I mean is that it's impossible to pull exactly *all* of the presentation aspects out into the CSS. some thing (such as ordering) will always be in the HTML. 15:02
donri but, css positioning is far from as difficult to manage as many seem to think, at least if you keep your design simple which you should anyway
donri masak: in deed, also the need for nested containers etc 15:03
masak right. nesting carries some presentation information, too. 15:04
masak maybe "keep it in a database" is actually the answer, though. if you turn absolutely all text into some gettext/i18n system, I imagine you could get fairly close to a "pure content" model. 15:04
but you'd still need to build the HTML, which would still contain a bunch of presentation details. 15:05
donri the problem is when you store content as (non-semantic) html 15:06
jnthn Presentation may be too hand-wavey to be useful. Maybe splitting it as content/structure/semantics (fine in HTML) and appearance (what's meant to go in the CSS) is more helpful.
masak jnthn: well, that's kinda my point. "presentation" is too hand-wavey, and as such, an unattainable ideal. 15:07
donri if your only copy of the content is html filled with font color=red it's rather difficult to present it in any other way
awwaiid this "content" of which you speak has both data and the _meaning_ of the data, the semantics. This "presentation" of which you speak has both color scheme and font goo, and layout relative to the _meaningin_ of the data. The data is useless without the structure around it, and cannot be presented without it.
masak donri: the problem in general is when one doesn't separate concerns :P
donri but if you have a copy in markdown or docbook or something, outputting "bad" html is less of an issue 15:08
jnthn masak: Well, sure, it's hard to achieve things if you don't know what they are. ;)
donri that's the original issue, i believe; then the purists came along and made it into an issue of correctness :P
masak and the problem of becoming aware of it is that concerns are only really visible when they've been separated. :)
awwaiid thus the venn diagrams overlap, and a balance must be found
donri the only reasons to care about the cleanliness of *output* html is bandwidth and scrapability (SEO i guess) 15:09
which are certainly important reasons, but not the ones people usually think of it seems
masak also, because it's so *pretty* :>
masak hugs `tidy` 15:10
donri masak: true; we should try to make the binary/byte code our compilers output similarly pretty
masak donri: seriously though, sometimes I care about cleanliness of such things because of some sense of craftmanship. 15:11
I "know" that it will pay off, not least psychologically because I'm not afraid to go back and look at the HTML when I need it.
donri of course, i'm one of the worst offenders in this obsession about puristic correctness and cleanliness
i'm half arguing against myself here :)
the thing is generated html is about as easy to change as the stylesheet 15:12
masak donri: but yes, what we're talking about is web standards for their own sake, which is not always a good thing: www.eod.com/devil/archive/web_standards.html
donri css might still be more maintainable in some areas; just throw a class on your markup and reuse existing style rules; but you can similarly reuse html templates in some situations 15:13
the great thing is that we get to use both and whatever best solves the problem, as long as, yes, we're less anal-retentive about omg-standards 15:16
daxim standard angels and other mythical creatures: web.archive.org/web/20110514114618/...8/16/specs 15:18
damn you, mark pilgrim, why'd you pull a why_ and take down your whole goddamn 10 year blog?! 15:19
masak he did? :/ 15:21
I'm not sure you can "pull a why_" unless you have an online persona distinct from your actual identity. 15:24
awwaiid I've often fantasized about creating a separate internet persona. Unfortunately it takes enough effort for just one to keep me busy. 15:25
donri i used to juggle several in my youth 15:28
jnthn suspects that if he created an alternate persona and hung around on #perl6, the alternate persona would probably still make awful puns and get outed in no time... :) 15:29
donri notes that jnthn is talking about his alternate persona in third person 15:31
jnthn Oh. :)
jnthn gets too confused about how to refer to himself-but-not-himself, and goes back to whining about why on earth somebody would make an Excel sheet in order to send him a bunch of SQL queries 15:33
masak .oO( Exquel ) 15:34
jnthn guesses its the same somebody that wrote 200-line stored procedures involving cursors because they'd never come accross GROUP BY... :) 15:35
flussence heh... I just got told to turn an excel sheet into some JSON structure at $dayjob. Copy/paste/regex'ed it in vim in about 5 minutes...
jnthn What, you weren't tempted to write a JSON transformer in VBA? 15:36
donri why didn't you export it to something like csv and load it up in some proglang?
flussence this was the quickest way :)
(it's one of those horrible spreadsheets that uses tables for layout...) 15:37
Woodi would like to note that actual perl6.org is state of art of early XXI century - it have round corners and animated menus 16:08
second note: it is improved, previous version was more disasterous
Woodi now feels free to complains (too) :) 16:09
Woodi damn, I am sure I remember animated menus... :) 16:14
moritz Woodi: I've been involved with perl6.org since it got its current structure and layout, and it never had any animated menus 16:16
Woodi nvm :) 16:19
jnthn nom & 16:50
Woodi on contrary - about Web-hate-ing - probably yesterday I asked on #perl for best Perl _bindings_ for UI programming; got *strong* sugestion to use W3 :) 17:27
fsergot Hi perl6 o/ ! 18:18
moritz \o 18:55
japhb Anyone else (thanks jnthn++!) have any thoughts on irclog.perlgeek.de/perl6/2011-11-25#i_4755358 ? 20:10
moritz japhb: S03 say "Note that, like most other operators, a comparison naturally returns failure if either of its arguments is undefined, and the general policy on unthrown exceptions is that the exception is thrown as soon as you try to use the exception as a real value. However, various parallelizable contexts such as hyper (or other "mass production" contexts such as sort) will pass through unthrown exceptions rather than throwing them." 20:20
since a Failure is undefined, the first part applies 20:21
"a comparison naturally returns failure if either of its arguments is undefined"
but it needs to wrap the original failure, so that no information is lost 20:22
jnthn home 20:36
moritz I think we need a smarter handling of failures in comparison ops than writing down many, many dispatch candidates 20:40
moritz for each op we need three Failure candidates 20:40
(Failure, Mu), (Mu, Failure) and (Failure, Failure) 20:41
or two of them, one of them marked as "is default"
jnthn Was there not some consideration that Failure be !~~ Any but instead hang about in the same kind of space junctions to? 20:42
*do
If so it could be a dispatch failover thing. 20:43
moritz there was some such consideration, yes
cognominal jnthn: I have filed the lexical bug : #104594 20:58
jnthn cognominal: merci bcp 20:59
cognominal and I should not paste code from aquamacs to gmail. It looks good until I see the result in RT :(
masak cognominal: maybe 'cus you have Gmail in "pretty text" mode. 21:03
moritz RT doesn't seem to preserve whitespace
masak HTML emails always come back to bite you in the end. they're not worth it. 21:04
moritz agreed
Woodi jnthn: about performance tests I was talking in the morning: scripts are now in tools/performance directory (v6 and v5 tests). Perl5 stats are: PP Redis: 0.416, XS: 0.20281, XS+pipelining: 0.02340 (??) 21:05
masak plus, they're not nice to the little gnomes inside of your computer who translate your email to Morse code and send it off over the wire. HTML is too verbose.
Woodi repo is @ github.com/slunski/perl6-simple-redis
masak Woodi++
jnthn Woodi: Thanks. 21:06
Woodi pls be nice for newbie programmer :) C in Perl, childish code, etc. I know... but every improvement sugestions are welcome 21:07
oki, gn #perl6
cognominal hopefully many perl6 bugs can be golfed in one line. 21:07
jnthn night, Woodi
mj41 Rakudo - 75% of Perl 6 features implemented j.mp/oBiIfn j.mp/tIlqUT 21:29
You can retweet twitter.com/#!/mj41cz 21:30
jnthn mj41++ # pretty graphs :) 21:33
And visualizes nicely where nom needs a shove. Thanks. :)
mj41 jnthn: Thanks for your work on Rakudo. 21:35
masak mj41++ # nice! 21:37
japhb grumbles good-naturedly 22:13
Wouldn't you know I'd get pulled away right after asking a question?
Anyway ...
masak it's amazing how similar Rakudo 2011.07 and Niecza look in those pie charts. 22:15
japhb moritz, My question wasn't *just* about == comparison where one of the arguments is Failure, though that was definitely part of it. The other part is whether == should do a strict Numeric conversion of its arguments, so 'a' becomes Failure, or a non-strict conversion, where 'a' becomes 0, or 0 but Failure, or some other mystery meat that won't cause a throw.
Earlier last night I was going with a strict conversion policy, and starting to track down all the places in the Setting that non-strict conversion was assumed, and correct them. 22:16
But I soon realized there was a LOT of stuff that would need to be corrected, and it would probably get a fair toss slower. 22:17
So then I wondered if that's really what DWIMs best for the user anyway, and that's when I started going in mental circles arguing the various cases different ways. 22:18
I had done a survey of the Synopses, but while any particular quote argued for one or two of the interpretations, taken together, I couldn't see a clear pattern of intent that pointed to just one interpretation. 22:20
japhb takes a virtual breath or two
jnthn Is the virtual air good in here?
jnthn reads what japhb writed
japhb generally yes 22:21
:-)
jnthn Hm :)
Good questions.
They...kinda need a TimToady ;) 22:22
japhb I was afraid of that
jnthn japhb: could you elaborate a little on the "get slower" bit? 22:24
Often being stricter/less dwimmy gives us more info/assurances. 22:25
japhb jnthn, sure. 22:29
There are a few places where the body of an operator is very, very simple. 22:30
Actually, == is a good example. 22:31
multi infix:<==>(\$a, \$b) { $a.Numeric == $b.Numeric }
If we want to avoid throwing the Failure if $a or $b cannot be cleanly coerced, I can see a couple routes to take: 22:32
1. You might bind $a.Numeric and $b.Numeric to lexicals, check whether either or both is Failure, and pick a result to return; False, say.
2. You could coerce them, then redispatch against something with more dispatch choices, including all variants of Failure (moritz++ mentioned this, I believe) 22:33
(Of course, there's the question of where and how #2 bottoms out when $a and $b are different, non-built-in Numeric types.) 22:34
jnthn Note that more candidates - if they're all based on simple types and no where constriants - is unlikely to impact performance much, if at all 22:35
japhb Or you could make sure that $a.Numeric always returns something that will not throw when compared, but somehow can act as a Failure elsewhere -- which is odd and somewhat counter to moritz's S03 quote
jnthn Rakudo multi-dispatches pretty efficiently these days.
japhb jnthn, yes, but it's the redispatch that got me -- an extra dispatch and function call. 22:36
s/function/operator/
jnthn But $a.Numeric == $b.Numeric is *already* re-dispatching.
Or maybe I'm missing what you're getting at. 22:37
japhb jnthn, it's possible, or I could be mistaken as well. 22:38
flussence
.oO( hm, I just realised that most of the ideas I put into Str.indent would work for Text::Wrap too. Time to get rid of that horrible 10-line regex eval... )
22:39
japhb I'm thinking 'a' == 'b' becomes Failure == Failure becomes 0 == 0 become true (if we go with the non-throwing behavior)
felher mj41++, nice graph :)
japhb As opposed to 'a' == 'b' becomes 0 == 0 becomes True. 22:40
Or maybe our Failure variants just directly return a boolean rather than themselves redispatching.
That would probably be more expedient ... but it depends on the type of the non-Numeric result actually being Failure or a subclass. 22:41
What happens if someone tries to == compare an Exception against something? Or something that makes no sense to ==
er, something *else* that makes no sense to == ? 22:42
What is the path to a resolved final value?
jnthn japhb: Ah, OK, now I see the extra re-dispatch you're getting at. 22:43
japhb I mean, there's always the argument that error cases don't need to be optimized ... as long as checking for and/or handling the error cases properly doesn't slow down the "normal" case too much. 22:45
dangit, AFK again, will backlog 22:46
jnthn Well, yeah, exceptions kinda should be exceptional :) 22:50
japhb jnthn, yes. But I was guided partly by TimToady++'s ideas on parallelism, plus the classic issue that a parallel implementation that operates in lockstep is slowed to the speed of the slowest work item. So if exceptional cases get too slow, they will slow down parallel implementations as well. Of course, that argument is thinking of a horizon rather farther than the near future. :-) 22:56
Gripping hand I guess is that all of this depends on what TimToady decides the behavior *should* be. 23:01
masak or what the community redesigns it to be :) 23:16
dalek kudo/nom: a227e73 | jnthn++ | src/core/Str.pm:
substr was rather wasteful before, and didn't give the optimizer half as much to go on as it could; this improves things a bit. Found while profiling Simple::Redis by Woodi++.
23:19
masak 'night, #perl6 23:27
felher 'night, masak 23:37
dalek kudo/nom: da4426a | jnthn++ | src/core/ListIter.pm:
Some small optimizations to ListIter. Knocks about 10% more off Simple::Redis benchmark, which has iteration on hot path.
23:46