»ö« 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! | Rakudo Star Released!
Set by diakopter on 6 September 2010.
colomon rakudo: say 1/2 minmax 3/5 00:03
p6eval rakudo 2ee5db: OUTPUT«0.5␤»
TimToady oO 00:04
sjohnson (* == *)
diakopter rakudo: say 1/(2 minmax 3/5) 00:05
p6eval rakudo 2ee5db: OUTPUT«0.5␤»
TimToady rakudo: say [minmax] 1/2, 3,5 00:06
p6eval rakudo 2ee5db: OUTPUT«0.5 1.5 2.5 3.5 4.5␤»
TimToady rakudo: say [minmax] 1/2, 3/55
p6eval rakudo 2ee5db: OUTPUT«0.0545454545454545␤»
TimToady grrr
rakudo: say [minmax] 1/2, 3/5
sjohnson ┐( ¯3¯)┌
p6eval rakudo 2ee5db: OUTPUT«0.5␤»
colomon rakudo: say (1/2) minmax (3/5)
p6eval rakudo 2ee5db: OUTPUT«0.5␤»
TimToady why isn't it returning a range?
colomon darned if I know.
time to look at the source 00:07
s_mosher reciprocal difference (I hope): gist.github.com/610694
araujo guys .. mm.. I have some kind of a dilemma here about a language feature ... 00:08
I hope it doesn't bother I ask here...
araujo a variable update inside a block can *ONLY* be modified inside that block scope, though it is visible and usable in deeper blocks unless it is overwritten by other block variables with the same name 00:08
does it sound sane?
sjohnson ask hugme
or askme 00:09
TimToady you're asking us about sanity? US!?!?
araujo hehehe 00:10
araujo I thought designing a language was very objective ... but I sometimes feel it is a very subjective process .... that is bit scary 00:10
diakopter it gets easier by the decade, I imagine 00:11
TimToady welcome to the minefield; here, have some hand grenades
sjohnson Rakudo Minefield 00:12
TimToady
.oO(let's see, if I tell him to make it like Perl, he'll steal all my users)
I think you should do it differently from Perl
s_mosher araujo, I've learned this about designing languages: when in doubt, be conservative in the amount of work you make for yourself. 00:13
TimToady
.oO(no wait, if it's the same as Perl, they won't have a reason to switch)
I think you should make it the same as Perl
s_mosher I haven't learned it well enough though. none of my designs have implementations I'm willing to show off
TimToady my advice, if you want to have people user your language, is to do as much work on their behalf as you can. :P 00:14
*use
there is no language advice that cannot be contradicted, with proponents on both sides
s_mosher who needs users? they're terrible people. 00:15
I should know ;)
TimToady unfortunately I am one of my users. 00:16
araujo TimToady, hehehehe 00:18
s_mosher TimToady, language designers must live where laziness and motivation unify 00:21
colomon rakudo: say 1/2; say 3/5
p6eval rakudo 2ee5db: OUTPUT«0.5␤0.6␤»
TimToady say (1/2 minmax 3/5).max 00:22
rakudo: say (1/2 minmax 3/5).max
p6eval rakudo 2ee5db: OUTPUT«0.6␤»
colomon rakudo: say (0.5 .. 0.6) 00:23
p6eval rakudo 2ee5db: OUTPUT«0.5␤»
TimToady there's the bug
oh, wait
hmm
innersting
colomon waiting patiently....
TimToady it turns into 0.5, *+1 ...^ * > 0.6 00:24
it's a list context
colomon oh.
yes 00:25
rakudo: say (1/2 minmax 3/5).perl
p6eval rakudo 2ee5db: OUTPUT«1/2..3/5␤»
colomon should we maybe define Range.Str to do something which doesn't involve printing out the entire list? Seems like it might save a lot of confusion... 00:27
TimToady does it even see .Str before it iterates the range? 00:28
colomon there is no Range.Str right now, so now. 00:29
I mean, it's probably doing Iterable.Str or something like that.
TimToady even if there were, it's it list context before it's in string context
colomon ah, really?
TimToady say is going to iterate its list, and then apply .Str 00:30
colomon makes sense, I guess.
none of this explains why my $work code isn't working, mind you. ;) 00:32
colomon $u ~~ (@.points[$_ - 1][0] minmax @.points[$_][0]) 00:39
"Cannot modify readonly value"
something to do with the ACCEPTS
huh. if I believe the line number, that's Block.ACCEPTS. 00:41
colomon oh, that's the ACCEPTS in grep. 00:42
colomon rakudo: (0, 1, 3, 5).grep({ $_ ~~ 2..4 }).say 00:55
p6eval rakudo 2ee5db: OUTPUT«3␤»
colomon rakudo: my $u = 2; (0, 1, 3, 5).grep({ $u ~~ $_..4 }).say 00:56
p6eval rakudo 2ee5db: OUTPUT«0135␤»
colomon staring at the minmax code has not yielded any flashes of insight. 01:12
lucas_ hi everyone 01:14
colomon o/ 01:15
lucas_ I can see the POD sources for the apocalypses in urls like dev.perl.org/perl6/doc/design/apo/*.pod
but I was wondering if they are available in some repository as well?
colomon yes 01:16
they're in github somewhere now.
plobsing mu?
colomon doubt it.
but I forget what the url is
lucas_ i didnt find it in mu
lucas_ I understand they are historical and are not going to be edited 01:17
but anyway, I just want to download them
(easily :-)
colomon hmmm. 01:18
I was thinking github.com/perl6/specs, but that's just the synopsis specs. 01:19
lucas_ yes
colomon mu is github.com/perl6/mu 01:20
but at a quick glance I don't see them there either. sorry.
lucas_ thanks anyway 01:22
You see, I have this fetish for table of contents
and just wanted to do a grep '^=' *.pod in those files
nothing important
colomon gist.github.com/610804 is a quick summary of the weirdness I'm seeing 01:35
TimToady colomon: $_ is rebound on the right side of ~~ 02:09
change it to $^a and I'll bet it works 02:10
colomon TimToady++ 02:12
you got it in one.
wonder why it used to work? 02:13
or at least to plausibly fail in such a way I didn't notice the difference.
ash_ rakudo: class A { has $.HOW; }; A.new(HOW => ClassHOW); 02:28
p6eval rakudo 2ee5db: OUTPUT«Type objects are abstract and have no attributes, but you tried to access $!HOW␤ in main program body at line 22:/tmp/5a13gS9rTB␤»
ash_ rakudo won't let you modify the how :-(
that seem like a bug to anyone else? 02:30
lucas_ tip: what are perl6 github repositories? 02:36
answer using github yaml webservice interface
curl -s github.com/api/v2/yaml/repos/show/perl6 | sed -n 's/.*:name: //p' | sort 02:37
sorear lucas_: we have a list of them in a json file in the proto repository 03:05
TimToady: I see (and implement) $_-rebinding constructs as creating a non-capturing block, much like described at S02:1015 - S02:1032 . Is this a sane semantics, or should I be looking to emulate "temp" more closely? 03:08
TimToady: I wonder if the essential difference between &[Xxx] and &infix:<Xxx> is that the former does meta ops? 03:09
TimToady sorear: well, if it stays bound after, say, ~~ is done, then it's likely a problem 03:15
well--one essential difference is that &[op] is specced to always be 2-ary 03:16
sorear it's more like A ~~ B = (&[~~])(A, { B }.(A)) 03:18
colomon: ovid is doing p6 stuff? where? 03:20
sorear TimToady: btw, I finally understand CvPADLIST 04:17
sorear TimToady: How does Perl 6 feel about ad-hoc optimizations? (e.g. I'm planning to generate special code for ^INTEGER_CONSTANT { .. }) 06:10
sorear in the spirit of Perl 5.005's foreach (1 .. 1000000) { } optimization 06:13
moritz_ sorear: If you know that no other prefix:<^> multi competes with it, that's fine 06:14
sorear semantically, sure; I'm wondering more philosophically 06:20
dalek ecza/master: 2dd2dee | sorear++ | / (3 files):
Implement the is rw parameter trait
06:54
ecza/master: c25514f | sorear++ | / (3 files):
Include sub names in backtraces
ecza/master: eeab430 | sorear++ | src/CSharpBackend.pm:
Let CgOp reference classes by Perl 6 name
sorear Wait a second. Doesn't Mu.bless($existing-object) break the entire gradual typing system? :/ 07:08
sorear ping jnthn 07:32
dalek ecza/master: 36ef3b7 | sorear++ | / (6 files):
Implement typed variables (low level)
08:08
ecza/master: 25a646d | sorear++ | lib/Kernel.cs:
Slightly improve error message for type errors
sorear whee, I have my $x; $x = Mu; failing
sorear aloha: seen chromatic 08:20
aloha sorear: chromatic was last seen in #parrot 9 days 13 hours ago joining the channel.
masak morning, #perl6 08:56
nymacro moin 09:01
masak heeft een goede nachtrust 09:02
masak "There are only two hard problems in Computer Science: documentation and shutting the hell up." 09:14
:)
source: twitter.com/flangy/status/26192632417 09:15
mathw That's a pretty good quote 09:16
masak I like it. it's a variation of two other quotes I've seen floating around lately. the second of which is a parody of the first.
the first goes "...: cache invalidation, and the fact that there aren't anough three-letter acronyms" 09:17
the second one adds "...and off-by one errors"
mathw I'm not sure that counts as an off-by-one error 09:20
<- pedant
masak I know. that's why I didn't find the second version particularly funny. 09:21
I liked this new one, though.
nymacro masak, wasn't it cache invalidation and naming things? (the first) 09:22
masak nymacro: that might well be so.
I've had the quote told to me IRL as well, and then there was definitely a mention of TLAs. but it might indeed have been as a comment to "naming things". 09:23
mathw naming things is definitely difficult
mathw decides that arguing with Apple fanboys about Microsoft's mobile OS strategy is just a good way to get a conviction for GBH 09:24
masak I have a name looking for a project: "Vermin". any ideas?
nymacro masak, all my ideas are inappropriate. Maybe you need another name :) 09:30
masak I'll just put this name on hold and work on other names for now. 09:31
nymacro As the Chinese Proverb goes: when the time comes, you'll know when to use them. Actually, I just made that up. 09:32
masak making up Chinese proverbs is an old, time-honoured tradition. 09:41
masak I'm very happy to read what Tom Legrady is doing with Rakudo in which-dwarf-are-you.blogspot.com/20...l6_30.html 09:45
I wouldn't solve Sudoku like he does, but I like the Perl 6 in itself. quite advanced usages. 09:46
it's a testament to Rakudo being quite mature that someone can just pick it up and do something like this.
masak TimToady: the way I've been understanding the Perl 6 model of methods and subs is that "it's all lambdas" underneath. is chromatic's opinion at www.reddit.com/r/programming/commen..._i/c111vap at odds with that idea? seems to me he wants a distinction all the way down. 09:58
hm, maybe I'm overinterpreting what he says. Perl 6 does distinguish subs and methods on the surface. 09:59
much to the dismay of about half of the newcomers to Perl 6. :)
masak anyway, interesting reddit thread. 10:00
takadonet morning all 13:04
colomon o/
takadonet colomon: how are you sir?
colomon sleepy
you?
takadonet same 13:05
colomon also, Ovid seems to be pulling well ahead from me in the Lacuna Expanse. :\ 13:12
I'm stuck at 27th place, while he seems to have gone from about 30th to 20th over the weekend. 13:13
ash_ class A { has $.HOW; }; A.new(HOW => 3); # aren't you supposed to be able to write your own HOW's? 14:35
rakudo 14:36
rakudo: class A { has $.HOW; }; A.new(HOW => 3); # fail typing right now
p6eval rakudo 2ee5db: OUTPUT«Type objects are abstract and have no attributes, but you tried to access $!HOW␤ in main program body at line 22:/tmp/zx3piRPL08␤»
jnthn ash_: Not like that.
ash_ oh...
jnthn HOW is not meant to be a method.
Rakudo's had that wrong for ages. 14:37
It's fixed in the nom branch of nqp-rx though :-)
ash_ hmm, alright, well, i was still trying to make a PrototypeHOW, should i check out that branch of nqp-rx to test it with?
can i use rakudo with that branch of nqp-rx? 14:38
jnthn ash_: It's a building site in there.
ash_: Very unlikely - it fails too many nqp tests at the moment.
It's in the middle of having its class keyword switched to using the new model.
That aside, it *is* the place to play with such things.
For one, because what exists of classes is implemented in there, in NQP. 14:39
jnthn So at that level it already is supporting custom meta-classes, mostly because all of them are custom. ;-) 14:39
We're just missing the stuff to make it convenient (e.g. slangs) 14:40
ash_ ya, i kinda stole a bunch of code from rakudo/docs/metamodel.pod and from the nom branch of nqp-rx (i saw your KnowHOW work and copied things from that)
jnthn But if you want to play, maybe fork nqp-rx's nom branch and patch in a declarator and install a mapping for it.
jnthn (Of course, I'm happy to review and incorporate any improvements too. :-)) 14:41
ash_ if i make anything useful, i'll let you know 14:42
jnthn :-)
ClassHOW is probably the best thing to look at wrt how the WHAT/HOW are set up. 14:43
especially the new_type method.
Essentially though, anything you write in that pattern gets representation polymorphism "out of the box". 14:44
But you may also choose to constrain it.
hudnix I have implemented Knuth's "Dancing Links" algorithm in perl6. 14:45
It solves small problems, slowly, but segfaults on anything largish. 14:46
TimToady is there a rosettacode page for that problem? 14:47
ash_ jnthn: when a method lookup fails, what happens? does that throw an error? or...?
hudnix I don't know. it's rather large for rosettacode. 14:48
colomon hudnix++
hudnix: do a blog post or something, so the rest of us can see it?
TimToady yes, colomon++ is getting lonely on planetsix 14:49
colomon or, ooooo, make it a module! :)
PerlJam hudnix: and create a rosettacode page for it :)
colomon TimToady: too true. :)
hudnix colomon: I will, I guess this is a good excuse to finally start a blog :)
colomon: It is a module :) 14:50
colomon hudnix++: which you will blog about! lovely. 14:50
jnthn ash_: Undecided. (more) 14:51
ash_: The Parrot API wants us to return a sentinel from find_method saying it wasn't found.
It uses PMCNULL
But that's not something we want to start throwing around in Perl 6 land.
jnthn I'm pondering that find_method throws an error and can returns a Nil-ish value or something like that. 14:52
hudnix I need to find a place for my perl blog, though. I see "use perl;" is dead :(
colomon hudnix: I've been very happy with Wordpress.
ash_ jnthn: what about AUTOLOAD like methods on package in p6? will those need some sort of special interaction with find_method to work? 14:52
jnthn I'm happily using Wordpress too.
hudnix I've set up wordpress for friends. I hate it :) 14:53
jnthn ash_: I guess maybe Perl 6's ClassHOW will implement something in find_method. 14:53
But maybe that's the wrong factoring.
ash_ my blog is in wordpress, because the hosting company i uses let me install it with 1 button and its easy and i can be lazy :P
hudnix ash_: easy initial set up is it's big strenght :) 14:54
ash_ hudnix: i went through the phase of "ooh i need to make my own blog in X framework" and after finally realizing how much work the wordpress (insert other blogging system here) has done, i decided to not re-invent the wheel, because there is a good one already, or good enough for me 14:55
nymacro the best way to implement software is don't 14:57
I'm all for hanging out in caves and banging sticks together for entertainment 14:58
ash_ jnthn: i saw that a lot of the AUTO* stuff was removed from the spec's, didn't it used to have AUTO [SCALAR|ARRAY|HASH] etc...
S10 talks about CANDO now instead of AUTO*
anyway, just a side thought
hudnix ash_: Yes, it's true. It's just that I had a bad experience with it once, setting it up for someone as their main site, and trying to customize it heavily so that it looked ... not like a wordpress blog. The experience left me slightly bitter about wordpress.
ash_ nymacro: when we work up to fire, it will be WEEKS of entertainment there, what happens when it goes out? what happens if i burn this leaf? how well do rocks taste boiled? 14:59
nymacro I know right. How interesting must life have been back then? I mean, you can't reinvent a wheel which hasn't even been invented yet anyway! 15:00
ash_ hudnix: ya, i worked for a web company before that did that, i hate when my boss wants to put a round peg in a square hole. there are some things that don't fit together no matter how hard you try
colomon bikeshedding was very boring then.
ash_ btw, if anyone in here uses textmate, i updated the perl syntax so it highlights p6 a bit better, its not prefect but its better than it was 15:03
colomon ash_++
hudnix is still trying to get emacs to indent P6 properly 15:04
frettled ash_: "If it doesn't fit, you're not trying hard enough!" - because that MUST be why it doesn't fit. It can't be the wrong solution, oh no. :)
hudnix: are you using an updated Perl 6 mode thingy? 15:05
colomon ash_: would it make sense to make a separate Perl 6 mode for TextMate instead?
ash_ colomon: well, it might, but all the filetypes already map .pl (and friends) to perl, plus the way i have it, perl5 highlighting still works fine (none of my changes really impact perl5) 15:06
hudnix frettled: I didn't know emacs had a perl 6 mode thingy. 15:07
ash_ it's more along the lines of where it used to expect package you can now say class|module|role and things like that
colomon ash_: I'd happily give it a whirl here. ;) 15:08
ash_ alright, one sec, let me put it on github 15:10
ash_ colomon: TextMate seems to have made my changes a diffs rather than a replacement for the old module and i haven't figured out how to make it not do that. So, github.com/ashgti/perl-tmbundle/downloads has the diffs, just unzip that and place it in ~/Library/Application\ Support/TextMate/Bundles/ 15:13
ash_ colomon: alright, i now have all of my changes merged with the perl bundle, if you do want you can just do: cd ~/Library/Application Support/TextMate/Bundles/ ; git clone git://github.com/ashgti/perl-tmbundle.git Perl.tmbundle 15:29
colomon ash_: sorry, got distracted reading about "Cubase64", doing modern digital audio on a Commodore 64 (sort of).
oh, cool. 15:30
frettled hudnix: I think [particle] or someone else made one, which was in the pugs repository, but maybe it is in the P6 misc section on github now.
ash_ and re-start textmate (or reload bundles)
hudnix frettled: thanks
colomon ash_: so what should look better now? 15:31
multi method recognized as keywords, it looks like...
ash_ well, gist.github.com/611732 is what i have been trying to get it to highlight properly 15:32
colomon the thing that has been giving me fits is hyper ops.
hudnix dancing links takes just under 5 minutes to find all 288 ways to place 6 '1's on a 6x6 sudoku, but segfaults trying to place 9 '1's on a standard 9x9 sudoku
ash_ ya, class is a keyword, it should recognize package names if you do: Foo.bar (Foo is the package component of that)
haven't tried those yet
colomon ash_++ # looks like a definite improvement! 15:33
ash_ if you have any issues you want me to address i am starting to get the hang of how textmate does all its syntax highlighting 15:33
oh, the symbol list should be better too
[Coke] sees he's been beaten to the sudoku solver.
[Coke] is far too lazy.
ash_ err, just checked the symbol list, i think i broke it again, ill look into that 15:34
it had the symbols sorted properly before, but i broke it some how, hmm...
frettled hudnix: Hrm, sorry, I can't find it there. Let me see. 15:36
frettled hudnix: util/cperl-mode.el in the pugs repository, I think 15:37
hudnix: and it was renormalist++ who did it. 15:39
hudnix: This one may also work: github.com/jrockway/cperl-mode 15:41
ash_ colomon: can you give me an example of syntax that doesn't look right to you in textmate? and maybe a suggestion to what you think would look better? you mentioned hyper ops
colomon ash_: if you do <<*<< (say), textmate thinks it's a p5 << string 15:47
everything else I've just looked at looks pretty nice with your version.
ash_ kk 15:48
i'll see if i can fix that one
so... what would that look like: @arr<<*<<(&say) ? 15:49
TimToady std: @arr<<*<<(&say)
p6eval std 237d266: OUTPUT«===SORRY!===␤Unable to parse quote-words subscript; couldn't find right double-angle quote at /tmp/zeDb52Amxr line 1 (EOF):␤------> @arr<<*<<(&say)⏏<EOL>␤Parse failed␤FAILED 00:01 120m␤»
jnthn I think the (say) was meta :P 15:50
ash_ oh 15:50
i am not yet familiar with how to use hyper ops in practice
jnthn ash_: If I was feeling cruel I'd suggest
colomon ash_: oh, oh, the (say) was text, not p6 code! 15:51
jnthn say "$x.foo(Bar.new("lol"))"
;-)
std: class Bar { }; my $x; say "$x.foo(Bar.new("lol"))" 15:52
p6eval std 237d266: OUTPUT«ok 00:03 118m␤» 15:52
colomon anything with a << in it comes out wrong in textmate -- unless you're actually doing a string that way.
TimToady so use « like yer sposta 15:53
ash_ lol
colomon TimToady has a point, « works fine.
PerlJam or teach textmate LTM
colomon oooo, looks like my << to « trick was specific to my version of textmate's perl bundle. 15:54
ash_ where are the numeric literals' speced? S02? 16:13
TimToady S02:3119 16:14
ash_ std: 0d10e5; 16:30
p6eval std 237d266: OUTPUT«===SORRY!===␤Whitespace is required between alphanumeric tokens at /tmp/eCFO2V1oS2 line 1:␤------> 0d10⏏e5;␤Two terms in a row at /tmp/eCFO2V1oS2 line 1:␤------> 0d10⏏e5;␤ expecting any of:␤ POST␤ bracketed infix␤
..infix or …
ash_ hmm does vim support << and >> ? it seems confused to me 16:45
flussence as vim commands or in p6 code? 16:50
(both seem fine on mine...) 16:51
shortcircuit hudnix, PerlJam: We're finally drafting a page with guidelines on how to create tasks, so FYI: rosettacode.org/wiki/Rosetta_Code:Add_a_Task 16:56
ash_ flussence: as syntax in a pl file, as hyper ops not as here-docs 17:00
flussence oh, the *other* type of << >>s... 17:01
.oO( or other-other )
flussence it highlights >>+>> the same as »+» for me, but strangely ». doesn't seem to work. 17:03
I'm using the perl6.vim from vim-perl 7d9b2acba11, if it makes any difference 17:04
ash_ flussence: thats what i am using in my vim, i am just trying to see if i can fix the highlighting in textmate, was going to see how perl6.vim figured it out 17:11
ash_ perl6 test suite S13-overloading/metaoperators.t looks funny to me 17:12
maybe there is an update to vim-perl
oh, ya, mines out of date 17:13
flussence oh, I see
it's messed up for me too
ash_ hmmm, still not right
flussence seems like the <<>>/Z/R/X stuff works fine for simple things like +-/*, but not for things with text names... 17:15
oh, the infix operators are hardcoded at line ~180 17:18
that'd explain it
PerlJam when parrot switches to git, will build/PARROT_REVISION switch to mean "you must have exactly this revision"? 17:23
flussence it might be nicer to use `git submodule` instead once it's available 17:25
flussence (that would mean I could run `git clean` instead of having to re-checkout the entire parrot repo to do a clean build... 17:31
flussence # s/$/)/ 17:31
PerlJam flussence: you'll probably have to do "git clean -f" and also run "make realclean" 17:38
sjohnson GIT! 17:43
dukeleto PerlJam: that is a very good question that I have been thinking about 17:50
PerlJam dukeleto: have you come to any conclusions? 17:58
PerlJam If we have a copy of a parrot git-repo laying around we can see if the revision of parrot is a descendant of the revision mentioned in build/PARROT_REVISION 18:02
dukeleto PerlJam: most people won't have a git-svn repo
PerlJam but that's a big if
flussence (Oh, I just remembered something!)
dukeleto: IIRC you're the person I need to bother about the graphs on smolder.parrot.org/app/graphs/start/5 not working...
dukeleto PerlJam: parrot is going to try to use "git describe" output and some shenanigans
dukeleto flussence: hmmm, hadn't noticed that. Can you create a Trac ticket? 18:03
tadzik hi 18:04
dukeleto flussence: smolder was a huge pain to get installed and running properly
flussence: that will require asking OSUOSL (who hosts Parrot) to fix some stuff
PerlJam dukeleto: what sort of shenanigans?
flussence ok, will do in a min...
dukeleto flussence: our smolder rss feeds have broken links in them as well
flussence dukeleto: done, ticket #1816 18:15
dukeleto flussence++
PerlJam: since parrot version X.2.1 can come out after X.3.0, things are not simple.
dukeleto PerlJam: i think it is possible to get something useful by appending a data to the output of "git describe" 18:16
PerlJam: so that the git repo won't be necessary to figure out if a recent enough parrot is present
PerlJam: a date, I meant
mberends \o/ wifi @ Amsterdam.pm 18:17
PerlJam dukeleto: sounds workable.
dukeleto PerlJam: we shall see. The hardest part of parrot's git migration is porting the mk_language_shell/create_language scripts 18:20
tadzik why is sort returning a Parcel? :( 18:23
TimToady because most functions that return multiple values do? 18:26
tadzik hmm, for some reason I thought it should be an Array. My bad then 18:27
TimToady and because it shouldn't matter if the parcel is used in list context?
tadzik Parcel has no munch(), that's what bothered me 18:28
TimToady @array.=sort should return an array :)
tadzik > [2,3,4].sort.WHAT
Parcel()
TimToady that's correct 18:29
tadzik rakudo: say [2, 3, 4].map($_*$_) # what's wrong here?
p6eval rakudo 2ee5db: OUTPUT«Use of uninitialized value in numeric context in <anon> at line 22:/tmp/ty8rZQ57SS␤Use of uninitialized value in numeric context in <anon> at line 22:/tmp/ty8rZQ57SS␤No candidates found to invoke for method 'map' on object of type 'Array'; available candidates have
..signatures:␤:(…
TimToady no closure
tadzik ah, right
colomon rakudo: say [2, 3, 4].map(** *) 18:31
p6eval rakudo 2ee5db: OUTPUT«===SORRY!===␤HyperWhatever (**) not yet implemented at line 22, near " *)"␤»
colomon whoops
rakudo: say [2, 3, 4].map(* * *)
p6eval rakudo 2ee5db: OUTPUT«6»
tadzik yeah, *** is also bad for it 18:31
diakopter rakudo: say map * * *, 2, 3, 4
p6eval rakudo 2ee5db: OUTPUT«6»
diakopter cool 18:32
rakudo: say map * * *,2..4 18:33
p6eval rakudo 2ee5db: OUTPUT«6»
masak hi from Amsterdam.pm! \o/ 18:54
Juerd Hi from the other side of the table :) 18:55
masak oh, there you are :) 18:56
#phasers in 4?
shortcircuit For whoever maintains the docs...GeSHi, the syntax highlighting system Rosetta Code uses supports turning keyword matches into URLs. That means that any instances of keywords could be links to the official documentation for that keyword. That'd be a cool feature, IMHO. We're using the 1.0.x release of GeSHi; if anyone wants to go to the trouble of building an updated lang file, they could send it to BenBE, and it'd wind up on RC and in GeS 19:26
(BenBE is the maintainer of GeSHi, and also manages the GeSHi install on RC's server.)
masak shortcircuit++ # nice! 19:28
shortcircuit Of course, that means writing a data structure in PHP... 19:29
ash_ shortcircuit: where can we go to find docs on how to do this? 19:31
shortcircuit sec 19:32
shortcircuit looks for the latest and greatest docs on the subject
er. Phone
shortcircuit ash_: Looks like this is the official word: qbnz.com/highlighter/geshi-doc.html...uage-files 19:38
ash_ shortcircuit: i see someone has started a perl6 syntax already, i'll see if i can figure out how to add links 19:41
shortcircuit Other useful resources are #rosettacode and #geshi
ash_: You might grep through the language files for 'http', to find existing examples. 19:42
Oh, God. "Regular expressions use the PCRE syntax (perl-style), not the ereg() style!" ... and I just threw the problem at Perl geeks. What have I done?! 19:43
ash_ oh, perl6 has a completely new regex syntax, but not all of the changes are directly backwards compatible to pcre, so doing proper syntax highlighting of perl6 code is difficult... 19:44
masak to do *proper* syntax highlighting, you need something like STD.pm6. 19:46
masak only Perl 6 can parse Perl 6. 19:47
ash_ but, it doesn't always have to by exact, as long as your close enough that its a bit easier on the eyes i think your doing good enough 19:48
shortcircuit masak: GeSHi language files are sourced PHP scripts...so write a Perl6 implementation in PHP, and parse from there? :P 19:52
Might be easiest to implement PIR in PHP, and go from there. *whistles* 19:53
masak :)
tadzik that won't do it, you need perl6.pbc anyway 19:55
. o O ( php on parrot, then force everyone to use it )
shortcircuit Plausible if Perl6 can solve this task: rosettacode.org/wiki/Call_foreign_l...e_function 19:56
jnthn shortcircuit: See Zavolaj 19:58
ash_ jnthn: NCI in parrot? 20:00
shortcircuit jnthn: I presume you're Jonathan Worthington? Care to solve the task I linked to? :D
ash_ parrot has NCI built in, Zavolaj is a module that gives perl6 access to the parrot internals required to use it 20:01
jnthn ash_: Zavolaj uses Parrot NCI 20:02
I probably shoulda read the task before suggesting it... ;-)
shortcircuit: Huh, who's he... :-) 20:03
tadzik hmm, is NCI another Parrot thing that doesn't use this neat interface, so you can use things w/o any wrappers?
jnthn tadzik: Well, in this case the Perl 6 wrapper is Very Awesome. 20:04
ash_ jnthn: create a string containing the words: "Hello World!" in that languages native format, then print it, if your calling C they suggest to use C's strdup and printf
tadzik well, I don't know how bare NCI looks. But I love it if it's awesomer :)
heh, there's no strdup in C ;)
hmm, or it is in c99? 20:05
jnthn use NativeCall; sub strdup(Str $in) { ... } returns Str is native('libc'); say strdup('hello') # or something like this
star: use NativeCall; sub strdup(Str $in) { ... } returns Str is native('libc'); say strdup('hello') # or something like this
p6eval star 2010.09: OUTPUT«===SORRY!===␤Confused at line 22, near "sub strdup"␤»
ash_ their example is calling C, i bet you could get bonus points if you called another language... wait a minute... is parrot cheating?
tadzik not at all :)
jnthn gah...I didn't have enough beer today...
star: use NativeCall; sub strdup(Str $in) returns Str is native('libc') { }; say strdup('hello') # or something like this
shortcircuit Looks like it's a POSIX thing.
p6eval star 2010.09: OUTPUT«===SORRY!===␤The native library 'libc' required for 'strdup' could not be located␤»
jnthn oh... 20:06
star: use NativeCall; sub strdup(Str $in) returns Str is native('glibc') { }; say strdup('hello')
p6eval star 2010.09: OUTPUT«===SORRY!===␤The native library 'glibc' required for 'strdup' could not be located␤»
jnthn heh
star: use NativeCall; sub strdup(Str $in) returns Str is native('') { }; say strdup('hello')
p6eval star 2010.09: OUTPUT«hello␤»
jnthn Heh :-)
tadzik :)
awesome
jnthn '' just uses the current executable to make a call in
Which, of course, has libc loaded. :-)
Anyway, there's a solution for ya. ;-) 20:07
tadzik star: use NativeCall; sub strdup(Str $in) returns Str is native('') { }; sub printf(Str $in, *@_) returns Int is native('') { }; printf(strdup('hello'))
p6eval star 2010.09: OUTPUT«===SORRY!===␤Can not handle type Mu in an 'is native' signature.␤»
tadzik :(
star: use NativeCall; sub strdup(Str $in) returns Str is native('') { }; sub printf(Str $in) returns Int is native('') { }; printf(strdup('hello')) # I can has cheating?
p6eval star 2010.09: ( no output )
jnthn It doesn't know how to do varargs yet.
ash_ star: use NativeCall; sub strdup(Str $in) returns Str is native('') { }; sub c_printf(Str $in) is native('') { }; c_printf(strdup('hello')); 20:08
p6eval star 2010.09: OUTPUT«Could not locate symbol 'c_printf' in native library '(resident)'␤ in <anon> at line 110:/home/p6eval/rakudo-star-2010.09/install/lib/parrot/2.8.0/languages/perl6/lib/NativeCall.pm6␤ in main program body at line 22:/tmp/QEdC2_iEji␤»
ash_ hmm oops
jnthn Curious, I'd have thought that'd work.
ash_ star: use NativeCall; sub strdup(Str $in) returns Str is native('') { }; sub printf(Str $in) is native('') { }; c_printf(strdup('hello'));
p6eval star 2010.09: OUTPUT«Could not find sub &c_printf␤ in main program body at line 22:/tmp/4TwUrKzyRE␤»
ash_ star: use NativeCall; sub strdup(Str $in) returns Str is native('') { }; sub printf(Str $in) is native('') { }; printf(strdup('hello'));
p6eval star 2010.09: ( no output ) 20:08
ash_ jnthn, my nci framework i wrote for the GSoC can do var_args 20:09
shortcircuit What happens if you do something in the native call that triggers, e.g. a null-pointer dereference?
jnthn shortcircuit: Segfault.
tadzik Suprise Segfault!
shortcircuit And p6eval?
jnthn Segfaults ;-) 20:10
Well, no
It spaws a Rakudo proccess to run stuff
ash_ and boom goes the dynamite...
jnthn p6eval itself is fine.
flussence it'd be nice if there was a "prefer native()" that fell back on the p6 function if it fails to load...
jnthn oooh!
flussence: File an issue on the github issue tracker for Zavolaj if you like :-)
That's quite a cool idea at first blush.
star: use NativeCall; sub printf(Str $in) returns Int is native('') { }; printf("hello\n") 20:11
p6eval star 2010.09: ( no output )
shortcircuit In the stuff I work with at work, we have helper processes to gate off badly-written 3rd-party components that we're forced to use. Might be worth a thought. ;)
jnthn hm
I'd love to know why that printf doesn't work.
Alas, I need to pack for going to .nl tomorrow, do more slides hacking and a couple of other bits.
tadzik works in REPL 20:12
> use NativeCall; sub printf(Str $in) returns Int is native('') { }; printf("hello\n")
hello
6
...why 6?
shortcircuit h-e-l-l-o-null
ash_ printf return'ed the number of caracters it wrote 20:12
shortcircuit ah
\n
tadzik ah, and REPL printed that, right
jnthn heh :-)
ash_ and the repl print's the value of the last expression
jnthn Ah, just a p6eval-y thing then. 20:13
Oh, I maybe shouldn't have shown people how to call arbitrary system functions with p6eval. Oops. :-)
tadzik ha-ha!
jnthn "Oh, behave!"
tadzik Starsafe.pm should forbid Zavolaj
ash_ try.rakudo.org doesn't have star's modules installed 20:14
tadzik Night.good 20:16
flussence thinking about that idea, would a separate "prefer native" even be needed? If something needs to fail there it could just specify the function body as "...". 20:24
flussence on the other hand, I'm not sure how that'd work if someone wants it to die with an error straight away. 20:28
tylercurtis flussence: !!! is to ... as &die is to &fail 20:34
flussence I meant, if they want it to die at compile-time instead of when they try to call it
(sort of how LD_BIND_NOW works) 20:36
diakopter grrrr 20:53
don' me' w' m' vps
jnthn flussence: Not sure. The idea of an automatic fallback appealed to me more than the particular "prefer" name. 20:59
shortcircuit I've seen mention of STD several times. What exactly is it? It sounds like a unit test suite. 21:42
sbp shortcircuit: perl6 standard grammar
see github.com/perl6/std
tylercurtis std: foo
p6eval std 237d266: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'foo' used at line 1␤Check failed␤FAILED 00:01 114m␤»
tylercurtis shortcircuit: also available on CPAN as STD and through p6eval(only for syntax checking in that last case). 21:43
shortcircuit I remember somebody (masak?) mentioning something about the day STD builds, it'd be a magical day. Is that in reference to an effective 1.0 state of P6? 21:47
diakopter eh
shortcircuit Ah, found it. 21:50
shortcircuit < tylercurtis> lue: I don't think there are many Perl 6 implementations that can actually run STD. More accurately, I'm not sure if any other than viv can. Niecza is close, I think. 21:51
< lue> The second one is able, it'll be a special day.
diakopter hoi 22:02
mberends+masak
jnthn o/ masak 22:03
mberends \o/ $home sweet $home again 22:03
masak \o
and soon $bed sweet $bed I'd think.
jnthn Holland. Where everything in sweet like stroopwafels. 22:04
jnthn is coming tomorrow night! o/ 22:05
masak \o/
jnthn: departing tomorrow night from Lund and arriving .nl Thursday morning, right? 22:06
jnthn masak: aye
masak: Leaving from $dayjob in Malmo straight to Copenhagen, then it's a direct sleeper train to Utrecht from there. :-) 22:07
If it's all on time, I'll arrive just a minute to ten.
jnthn
.oO( I'm on board, so it'll probably be pun-ctual... )
22:08
masak groans
jnthn masak: Have you fully procrastinated?
Or is it an ongoing proccess?
jnthn is still procrastinating and suspects he may have to do a bit more in .nl/.fr... 22:09
masak jnthn: I'm somewhere between the planning step and the massive slideshacking step with both presentations. 22:10
jnthn ah
I'm slide-hacking on the second one.
masak when I find the tuits, I will sit down and massively output slides. 22:11
mberends++ keeps distracting me with nice IRL things, though :P
mberends
.oO( shacking with a slide? erm)
jnthn Don't worry, it was probably just a Swedishs genitive... :-) 22:12
masak today we did the Anne Frank museum, the canals, and then Amsterdam.pm
jnthn ooh!
Pretty :-)
mberends masak++ is a good canal boat pilot. Better than me :)
jnthn hehe :)
masak or should I say ˟˟˟.pm
the boat was quirky, though. 22:13
at different points it would just go insane and turn right no matter what you did.
jnthn That doesn't sound...right.
masak we had to evolve mechanisms to compensate for that :)
but yeah, steering was fun. 22:14
I managed not to cause any major canal traffic accident or damage to the moored houseboats. \o/
rjbs ponders porting Test::Routine. 22:17
jnthn masak: phew :-) 22:19
jnthn masak: Last time I took my mum on a boat on some lake, a storm appeared. She was terrified. I wasn't too comfortable. :-) 22:20
Managed to survive that one too. :-)
shortcircuit For those interested, I brought up strdup's not being C. Looking for alternate options. Discussion here: rosettacode.org/wiki/Talk:Call_a_fo...e_function 22:21
masak rakudo: for 1, 2, 3 { .say } 22:23
p6eval rakudo 2ee5db: OUTPUT«1␤2␤3␤»
masak rakudo: for 1, 2, 3 { sub foo {}; .say }
p6eval rakudo 2ee5db: ( no output )
masak o.O
masak submits rakudobug
rakudo: for 1, 2, 3 { sub foo {}; .say }; say "alive"
p6eval rakudo 2ee5db: OUTPUT«alive␤»
jnthn ...wtf... 22:24
masak yeah. not funny.
please don't do that.
jnthn unlol
masak I have another one.
rakudo: sub foo { .say }; given 42 { foo($_) }
p6eval rakudo 2ee5db: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤ in 'foo' at line 1:/tmp/kw9WhTJse1␤ in main program body at line 22:/tmp/kw9WhTJse1␤»
masak submits rakudobug 22:25
jnthn erm
Not sure if that's a bug.
Does the implicit $_ apply to routines as well as blocks?
masak oh wait.
rakudo: sub foo($_) { .say }; given 42 { foo($_) }
p6eval rakudo 2ee5db: OUTPUT«42␤»
masak hm. 22:26
yeah, scratch that one.
that wasn't what I wanted to report.
sjohnson rakudo: for (10 .. 1) { print }
p6eval rakudo 2ee5db: ( no output )
sjohnson anyone's thoughts about making x .. y syntax be able to count backwards? 22:27
masak sjohnson: reverse x .. y
jnthn Or use the series operator
s_mosher sjohnson, I'm strongly opposed to that for subscripts
sjohnson who mentioned anything about subscripts? 22:28
masak sjohnson: just the other day someone came onto the channel saying that the ranges being empty when y>x would actually simplify his code. I agree, and I think that's designed right. 22:29
s_mosher sjohnson, I don't want @a[4..2] to produce anything
masak rakudo: given $_ { sub foo($text) { $text }; say foo($_) } 22:30
p6eval rakudo 2ee5db: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤ in main program body at line 22:/tmp/AwTm3RE33r␤»
masak jnthn: what about now?
sjohnson s_mosher: i dont se ethe harm in it 22:31
see the*
jnthn masak: Something looks rotten there.
masak rakudo: sub foo($text) { $text }; given $_ { foo($_) }
p6eval rakudo 2ee5db: ( no output )
jnthn oh
masak rakudo: sub foo($text) { $text }; given $_ { say foo($_) }
jnthn leaky contextual?
p6eval rakudo 2ee5db: OUTPUT«Any()␤»
masak jnthn: no idea.
jnthn Feels lajk.
masak submits rakudobug
jnthn masak++
s_mosher sjohnson, I've written code that depends on it 22:32
masak jnthn: did I mention I passed 1024 just a day or so ago? :)
jnthn masak: Yes. :P
s_mosher I don't know if that code is correct, mind
jnthn masak: Maybe we should get you a cake with 1024 candles ;-)
masak jnthn: :)
sjohnson rakudo: my @a = 1, 2, 3, 4; say ~@a[3, 1] 22:35
p6eval rakudo 2ee5db: OUTPUT«4 2␤»
sjohnson s_mosher: too late
oh
nevermind
you might be right
rakudo: my @a = 1, 2, 3, 4; say ~@a[3..1]
p6eval rakudo 2ee5db: OUTPUT«␤»
sjohnson masak++'s idea will do then
reverse technology(tm)
s_mosher yeah that's the one
masak sjohnson: I think you'll come to like that way of doing it. 22:36
it reads very well; you can see from a distance that the range is reversed. because it says that it is :)
rakudo: given $_ { sub foo($text) { $text }; say foo() } 22:37
p6eval rakudo 2ee5db: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤ in main program body at line 22:/tmp/r8koc0WU7W␤»
masak there's just no way to please this error.
s_mosher here's where I used it gist.github.com/610694 22:38
masak good night, #perl6 22:39
s_mosher at some point the subscript becomes [1..0] which is a very natural way to progress to something that means [0] 22:40
jnthn night o/
sjohnson cya guys
s_mosher 'night guys
jnthn nightly smoker? Gee, I thought smoking in bed was dangerous... 22:41
TimToady with the new sequence semantics we no longer need a multi for rosettacode.org/wiki/Primality_by_t...ion#Perl_6 22:48
s_mosher TimToady, Perl 6 needs^Wwants a source-to-$language translator which is then verified by an independent grammar when invoked with --verify-readability 22:56
TimToady :)
TimToady method calls would work better in Japanese though 22:57
TimToady and yes, ranges are non-reversing for just the degenerate reasons you pointed out...er, that didn't come out right... 22:57
aloha, aloha 22:58
s_mosher I'm glad you agree
TimToady no, it's you that agree :P 22:59
s_mosher I was terrified that it was going to think I meant something by that
haha :) fair point
TimToady and actually, I was just agreeing with the design of Ada
now if you'd used ... instead of .. it would have tried to dwym it
s_mosher yeah, that's fine by me 23:00
and makes sense
TimToady it'll probably be a FAQ nonetheless
s_mosher I've been trying to solve that Thiele interpolation problem with very little success 23:01
TimToady just cheat and print out pi three times :)
or was it four? 23:02
s_mosher 3 I think
I got it to converge at one point, but not on the right thing
I suspect I'm misinterpreting something 23:03
s_mosher maybe I should try to understand the why and how of it before implementing it 23:03
TimToady I knew if I worked on it I'd never get my slides ready for Friday and Saturday 23:04
(probably still won't :)
rjbs will be there Friday and expects his money's worth. 23:06
jnthn The tyrany of slide writing.
rjbs is writing his own slides now, too.
jnthn What event is it this Fri/Sat? 23:07
rjbs Pittsburgh Perl Workshop is Sat/Sun.
jnthn Aha.
French Perl Workshop is also :-)
jnthn going to that one.
Little nearer by ;-)
TimToady then going straight from Pitt to Tokyo... 23:08
jnthn Ooh
jnthn woulda loved to do Tokyo again
Have fun :-) 23:09
TimToady likewise
jnthn Thanks :-) 23:10
Giving That Signatures Talk again.
And some waffle about meta-models.
jnthn -> sleep 23:15
TimToady night
jnthn o/