»ö« 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.
masak 'night, #perl6. 00:04
00:04 masak left 00:06 bacek left 00:09 jtpalmer joined 00:27 jferrero left 00:30 icwiener left 00:34 [Coke] joined 00:36 jimmy1980 left 00:44 HarryS joined 00:48 bacek joined 00:58 stkowski left 00:59 arlinius left 01:03 aindilis left 01:10 TiMBuS left, arlinius joined, TiMBuS joined 01:13 cotto joined, Chillance left 01:14 jaldhar joined 01:22 jaldhar left 01:23 jaldhar joined 01:25 hercynium joined 01:26 hercynium left 01:52 Rotwang left 01:56 whiteknight left 01:58 joseph_ joined
joseph_ Is there a Perl 6 POD parser built yet, or is the specification still too shaky to do anything with? 02:00
02:06 joseph_ left, joseph_ joined
PerlJam joseph_: you mean one written in Perl 6? 02:07
joseph_ Yes 02:08
PerlJam Not that I know of.
There is Perl6::Pod on CPAN though.
joseph_ Okay.
Do you think the markup is stable enough to build one (without heavy revision later)? 02:09
02:09 cxreg2 is now known as cxreg
PerlJam yes 02:10
joseph_ Great, thanks you.
*thank
PerlJam joseph_: Are you going to write one?
joseph_ I was looking in to it. 02:11
A GSoC project for Parrot.
PerlJam Not Perl?
joseph_ It would be done in Perl (most likely).
PerlJam Seems like an odd gsoc project for parrot then :) 02:12
joseph_ Yeah :) I think they wanted it to be able to parse their source code along with POD in other languages.
PerlJam Where did you read that the parrot folks wanted a Perl 6 POD parser? 02:20
joseph_ On their wiki : trac.parrot.org/parrot/wiki/GSoc2011 02:21
PerlJam interesting ... I must have missed that last time I looked 02:22
joseph_ Thanks for the help. 02:23
02:25 envi joined 02:26 joseph_ left
dalek Heuristic branch merge: pushed 47 commits to nqp by jnthn 02:43
02:58 orafu left, orafu joined 03:02 ymasory joined 03:06 alester joined 03:17 risou joined 03:26 risou_ joined 03:28 risou left 03:39 stresstest5880 joined, xinming_ is now known as xinming 03:42 stresstest5880 left 03:54 woosley left 04:02 woosley joined 04:04 st-6337 joined 04:06 woosley left 04:07 st-6337 left 04:11 st-6404 joined 04:12 st-6404 left 04:22 ymasory left 04:28 st-6603 joined 04:41 [particle] left 05:06 jaldhar left 05:07 jaldhar joined, risou_ left 05:36 lue joined
lue hello world! o/ 05:36
sorear hello lue. 05:37
05:55 jql joined, nymacro joined 05:57 kaare_ joined, envi left, envi joined 05:58 [particle] joined
sorear out 06:10
06:18 Yunga joined 06:29 alester left, alester_ joined 06:46 bacek left, stigma_ joined 06:47 stigma_ left 06:51 donri joined 07:00 st-6603 left 07:07 st-8688 joined 07:12 st-8688 left 07:16 st-8806 joined 07:23 izydor joined 07:26 noganex_ joined 07:29 noganex left
izydor perl6: say "hello, izydor"; 07:37
p6eval pugs, rakudo 792e86, niecza v3-82-g1dc43eb: OUTPUT«hello, izydor␤»
izydor oops 07:39
07:41 izydor left 07:43 araujo joined 07:59 kst joined 08:02 st-8806 left 08:07 kcwu left 08:11 risou joined 08:18 risou left
dalek p/ctmo: e04b77c | jonathan++ | src/metamodel/how/NQPClassHOW.pm:
Make a comment reflect reality a little more.
08:21
p/ctmo: 4150953 | jonathan++ | build/PARROT_REVISION:
Bump to latest Parrot to get fixes to make static lexpad bits work in non-trivial cases.
p/ctmo: 47001b3 | jonathan++ | src/NQP/Actions.pm:
Install $?CLASS as a lexical symbol, not package. Now consistent with roles and classes, and also with nqpclr.
moritz_ \o/ 08:37
masak++ colomon++ Util++ # p6cc 08:38
08:46 alester_ left 09:00 fhelmberger joined 09:06 kst left, nsh_ joined 09:07 kst joined, mux joined 09:10 mux left, nsh_ left, kst left, sftp_ joined 09:11 nsh_ joined, kst joined 09:12 patch__ joined, huf_ joined, starcoder- joined, kst left, nsh_ left 09:13 gfldex_ joined, nsh_ joined, mux joined 09:14 kst joined 09:15 HarryS left, Helios` joined 09:16 sftp left, patch_ left, Helios- left, gfldex left, starcoder- is now known as starcoder 09:17 flatwhatson joined 09:19 st-2451 joined 09:31 masak joined
masak morning, #perl6. 09:31
moritz_ good morning masak 09:33
masak I have a few comments about the Pod parser GSoC project. 09:34
I think if one is going to be written in Perl 5, it probably makes the most sense to start from Damian's. the one that's on CPAN.
the win there could be in having one that's more current. Damian's is a bit dated. 09:35
in the best case, that could lead to a number of spec clarifications, etc.
moritz_ phenny: tell jnthn that on latest nqp/ctmo, I have a test failure in the 3rd test of 55-multi-method.t: Ambiguous dispatch to multi 'bar'. Ambiguous candidates had signatures: (then an empty line) 09:36
phenny moritz_: I'll pass that on when jnthn is around.
masak but the Big Win -- and one I hope to do in a grant some day if nobody beats me to it -- would be to implement the Pod 6 spec in Rakudo.
with all the bindings etc that are possible in a full Perl 6 implementation.
moritz_ phenny: tell jnthn (maybe related) was it intentional the that "Bump to latest Parrot" commit (4150953) just deleted a newline, and didn't actually change the parrot revision? 09:37
phenny moritz_: I'll pass that on when jnthn is around.
donri I wonder if a Perl 6 module installer system would need a way to describe language dependencies
09:37 awoodland left
donri Considering language sharing in Parrot, use :from etc 09:37
moritz_ masak: agreed on all accounts
masak donri: as far as I'm concerned, that's a cop-out and a fantasy. 09:38
09:38 mj41 joined
donri masak: oh? 09:38
moritz_ donri: yes, once HLL interop works to a degree that can be presented to the casual user
masak donri: language interoperability is a problem we haven't even *begus* to tackle yet.
s/begus/begun/
pro tip: check spelling of the words you emphasize. 09:39
moritz_ donri: historically many p6 infrastructure projects have failed to produce usable results due to overengineering. We have learned our lesson, and now start with simple things and gradually evolve them into more complex things
donri Tene had it working with Cardinal I think? 09:40
masak back then, yes.
donri: one of the things a native Rakudo Pod parser would be able to do would be to populate various $=POD variables. :from-ing out to Perl 5 would make that more difficult, since it would entail serialization etc. effort would be spent on the wrong problems. 09:41
09:43 flatwhatson left
Tene donri: I had HLL interop working between rakudo, cardinal, partcl, my scheme impl, and a couple of others about 1.5 - 2 years ago, iirc. It wasn't a priority for anyone else in the parrot community at the time, and we didn't have any cross-language smoke testing, so it kept getting broken by others. 09:44
masak :/
Tene donri: after the third time it was broken and nobody but me cared, I stopped trying. I plan to get back to it after I get cardinal in a good state. 09:45
masak \o/
Tene: do you feel that more design in the HLL interop area would help?
either help making it more architecturally sturdy, or help putting it on the map for people. 09:46
Tene masak: The existing design is pretty solid, IMO. I expect there are some improvements that could be made, but I don't expect they would help at all.
masak ok.
Tene masak: I'm not all that confident in my evaluation there, though. I wouldn't be too surprised to learn that I'd missed something important, etc. 09:47
masak Tene: the way I've always imagined it is that there are all these minute differences between different languages that would cause problems. maybe I'm worrying too much.
Tene: for example, let's say a language without a concept of 'undef' communicates with one with such a concept. what happens when an 'undef' is returned across the barrier? 09:48
Tene masak: My approach has always been that when dealing with another language, you get that language's objects back. If you want to convert them into something more-locally-conventional, that's fairly meaningless to do in general, so you have to do it specifically on a case-by-case basis.
masak ok. that sounds fairly sane, actually. 09:49
the conversion is the task of the caller language.
Tene masak: There are the base vtable operations, like get_bool and get_str and so on. In Ruby, 0 is true, so if you get back a ruby 0 integer, it would be true, unless you explicitly convert it to a Perl integer. 09:50
Exactly.
masak I think the most immediate win for Perl 6 would be a HLL interop with and XML or database library. combined with jnthn's work on reprs, that could be really useful. 09:51
Tene masak: i very much agree.
masak maybe I should have put that up as a GSoC Perl 6 task.
is it too late to do that already?
moritz_ not at all
masak \o/
now I just need to find the tuits... :) 09:52
masak writes something
Tene masak: The two big things for me with hll interop object mapping stuff is that 1) you don't actually want the semantics to change, if the foreign code returns something that it thinks is truthy, you want it to keep being truthy when you use it.
and 2) by far the most-common use case is getting objects from a specific library or class, not primitives. In those cases, you *want* the objects you get back to have the API that's documented in the library docs. 09:53
In the cases that you want something more-specific, you can write your own glue layer to represent the differences, but it's not meaningful to do it in general, and you lose far too much with any kind of least-common-denominator serialization format. 09:54
masak gist.github.com/888173 -- feedback welcome 09:56
I don't know where proposals such as this should really go, so someone is welcome to point me right, or just put it in the right place. 09:57
Tene: I agree on all accounts.
moritz_ masak: epo.means.no/gsoc2011/ideas
masak thank you. 09:58
ooh, "Revive MAD".
Tene masak: The policy that I've maintained over all of this is that I fully acknowledge that I may be insufficiently smart to discover HLL mapping semantics that are good enough to be generally desirable, but every proposal I've seen or come up with to automatically map or whatever has been worse than just doing nothing.
masak :) 09:59
Tene I'm enthusiastic about reviewing any proposals that anyone can come up with, because if someone *can* do it right, that would be pretty great, and I don't want to discourage anyone from trying. 10:00
moritz_ I think it's a good step to do no conversions at all, and then experiment with an automaticaly adapt() multi sub or so that can try such mappings 10:01
masak probably per-language-pair mappings can become popular and adopted. 10:02
moritz_ aye
Tene moritz_: I think that there may be some utility in language-specific glue libraries that you can choose to use if you like. Rakudo could ship with Python.pm and Ruby.pm etc. (or pynie.pm and cardinal.pm).
masak updated: epo.means.no/gsoc2011/ideas
moritz_ or for rakudo I'd provide a basic mapper that turns every RPA into an array or Parcel or so
10:03 nymacro left
Tene and definitely a library for adapting objects from the "parrot" language 10:05
10:05 nymacro joined 10:06 risou joined 10:16 bacek joined
donri masak: Oh, I wasn't talking about the pod parser 10:17
Is HLL interop supposed to work with things like IO streams? 10:22
masak donri: oh! 10:23
donri So a Perl 6 package can say "this requires Python interop"; though then comes the question if it should be able to install Python packages too :P 10:32
masak I wouldn't mind that. :) 10:33
donri: well, I certainly believe in HLL interop in general, it's just that... I haven't seen a good example of it yet.
donri Maybe you can simply run an existing Python installer in Pynie, then
Native libraries are usually preferable, but the cost of porting isn't always worth it 10:35
masak nod. 10:39
10:45 Chillance joined
Tene masak: "good example"? You mean you haven't seen evidence that it's doable, or haven't seen good reasons to use it? 10:47
blogs.gurulabs.com/stephen/2009/05/...ading.html was a blog post I made around the time I had it working. 10:48
10:48 f00li5h left
Tene I also had an example where I defined a class in ruby and subclassed it in rakudo, and then instantiated it in scheme. 10:48
I guess I didn't blog about it, though.
blogs.gurulabs.com/stephen/2009/01/...guage.html -- using lolcode, APL, ruby, and scheme from rakudo. 10:51
masak \o/
I meant something like an example used to accomplish something else that's difficult to do without HLL interop. 10:52
Tene gist.github.com/128499 -- define a class in Ruby and subclass it in Perl 6 10:53
masak: gist.github.com/147853 or gist.github.com/182167 are reasonable examples. Using core parrot libraries from an HLL. 10:54
masak aye, that's what I'm talking about.
Tene masak: more-generally, the idea is to re-use lirbaries from other languages instead of porting or reimplementing them. 10:55
masak right.
I get that. I just want to see it done :)
Tene masak: for example, using Perl 5's CPAN in Perl 6
masak which isn't by far a solved problem, IIUC.
at least I don't see Perl 6 programmers using CPAN on a massive scale.
Tene My traditional example is using ruby's Rails library from python or PErl 6
masak: it's not a solved problem, no. 10:56
masak speaking of which: at some point I'd like to pull together a group of great people and "revive" the idea of Ponie.
I believe the time has come for that, or will come fairly soon.
Tene which was that? reimplementation or porting of Perl 5 to Parrot? 10:57
masak yes.
perhaps a reasonable first step is to spend a weekend hacking effort on STD_P5
10:58 kcwu joined
masak nowadays I'd view it as "porting Perl 5 to PCT/nqp" rather than "porting Perl 5 to Parrot"... 10:58
maybe the right moment for reviving Ponie is just after pmichaud/jnthn manage to get Rakudo running on .NET and/or JVM. 10:59
Tene masak: Sure. 11:00
masak: something I need to investigate more is what exactly MAD is in Perl 5. Check out MAD in perl5100delta 11:01
masak aye. I noticed there was a GSoC project proposal this year to revive it. 11:03
11:20 donri left 11:26 _twitch joined 11:28 risou_ joined, risou_ left, risou_ joined 11:30 whiteknight joined, risou left, risou_ is now known as risou 11:38 Rotwang joined 11:51 Psyche^ joined
kaare_ masak: the winnder? (blog-related) 11:51
11:52 Patterner left, Psyche^ is now known as Patterner
masak kaare_: oh, indeed. fixing. 12:11
fixed. kaare_++ 12:17
12:28 Helios` left
masak perl6: my Int @a; say @a[2].WHAT 12:29
p6eval rakudo 792e86: OUTPUT«(timeout)» 12:30
..niecza v3-82-g1dc43eb: OUTPUT«===SORRY!===␤␤In my declaration, typename 'Int' must be predeclared (or marked as declarative with :: prefix) at /tmp/00BDqKXwIg line 1:␤------> my Int⏏ @a; say @a[2].WHAT␤␤Any()Malformed my at /tmp/00BDqKXwIg line 1:␤------>
..my ⏏…
..pugs: OUTPUT«Scalar␤»
masak rakudo: (my Int @a)[2]; say "alive" 12:31
p6eval rakudo 792e86: OUTPUT«maximum recursion depth exceeded␤ in 'at_pos' at line 1␤ in 'at_pos' at line 5:CORE.setting␤ in 'Any::postcircumfix:<[ ]>' at line 1808:CORE.setting␤ in 'at_pos' at line 5:CORE.setting␤ in 'at_pos' at line 5:CORE.setting␤ in 'Any::postcircumfix:<[ ]>' at line
..1808:CORE.settin…
masak rakudo: (my @a)[2]; say "alive"
p6eval rakudo 792e86: OUTPUT«alive␤»
masak submits rakudobug
rakudo: my Int @a = 0, 1, 2; say @a[2] 12:33
p6eval rakudo 792e86: OUTPUT«maximum recursion depth exceeded␤ in 'at_pos' at line 1␤ in 'at_pos' at line 5:CORE.setting␤ in 'Any::postcircumfix:<[ ]>' at line 1808:CORE.setting␤ in 'at_pos' at line 5:CORE.setting␤ in 'at_pos' at line 5:CORE.setting␤ in 'Any::postcircumfix:<[ ]>' at line
..1808:CORE.settin…
masak son, I am disappoint.
12:35 Helios` joined 12:36 flatwhatson joined
moritz_ that's so long known 13:04
and at least submitted three times to rt
masak I should've guessed. 13:07
hm, a renewed Ponie effort needs to be pulled off in the right way. it needs some minimal buy-in from the Perl 5 side, preferably in the form of Perl 5 people actually in the group of developers. 13:08
it needs frequent contact with p5p and Parrot and #perl6.
it needs both a very concrete early roadmap and a monthly-or-so release cycle. 13:09
sbp for anyone reading the logs who is as confused as I was: "Over the past several years, one key aspect of the migration plan to Perl 6 has been the Ponie project, a fusion of the Perl 5 runtime with Parrot." - www.nntp.perl.org/group/perl.ponie....sg487.html 13:13
masak right. 13:15
I'm guessing that's the "put out to pasture" message by Jesse.
I'm mulling about what can be done about declaring Ponie "undead", five years later. 13:16
new codebase, but same idea.
one of the reasons Ponie was put out to pasture was "Parrot isn't ready; it's changing around too much". perhaps what we have going today with PCT and nqp is a lot more stable a foundation. 13:18
13:20 charsbar_ left 13:21 charsbar_ joined 13:23 icwiener joined
masak which book, in retrospect, is the first one to belong to what has later been named Modern/Enlightened Perl? MJD's "Higher-Order Perl" immediately comes to mind. 13:27
tadzik hai zebras 13:29
masak tadzik! \o/ 13:30
moritz_ masak: I agree (re HOP) 13:35
tadzik I still haven't read that 13:36
masak I think more books like HOP could, and should, be written.
something like Perl and patterns (as in GoF), perhaps. 13:37
basically, I'd love to read anything that assumed Perl and Moose knowledge :)
13:41 gfldex_ is now known as gfldex
masak tadzik: if you're interested in functional programming, and different patterns relating to that, I cannot recommend HOP highly enough. 13:44
arnsholt As one of the professors here likes to say: Learning functional programming makes you a better citizen =) 13:45
masak a First-Class Citizen, even :P 13:50
arnsholt *giggle* =D 13:53
Software that is valgrind-clean makes programmer-man happy. 13:59
So much easier to make sure your hacking hasn't screwed it up =)
14:00 joseph_ joined
masak replied to joseph_ by email 14:01
arnsholt: "Programmer-man"... Homo codiferus. 14:02
arnsholt I'll have to remember that. "Homo Codiferus" =D 14:04
masak it would be just a happenstance if "codiferus" were legit Latin... but it sounds nice :) 14:07
arnsholt Well, "codi-" isn't anything in particular (but so many biological names aren't) 14:11
And ferus means carrying, actually =)
masak oh, indeed. 14:14
14:15 pmurias joined
PerlJam Tene: TimToady can tell you all about MAD 14:15
14:18 HarryS joined 14:19 bacek left
masak giggles 14:20
PerlJam masak: re ponie ... I think you're right; it's time is coming. Though it probably won't have anything to do with Parrot per se IMHO. "Porting" Perl 5 to NQP will make it happen.
masak nod.
14:21 hanekomu joined, arlinius left
PerlJam Though there was a gsoc last year (?) that built a real AST for Perl 5. I wonder whatever happened to that project? 14:21
built and *used* I should say 14:22
masak PerlJam: I task you to find out what happened to the project. this is the first time I hear about it at all. 14:23
masak adds "please" ;) 14:24
PerlJam Well, I think the reason knowledge of it hasn't been widespread is that it had all sorts of problems and no champion within p5p
ergo, it was stillborn 14:25
But I don't really know anything about the project other than it existed
pmurias PerlJam: did it even get accepted? 14:27
masak has a flash of realization that the Age of Perl 6 dialects is imminent 14:28
jnthn: hurry up! :)
jnthn: (but I don't begrudge you your vacation... enjoy, and then hurry!) :P 14:37
14:39 YungaPalatino joined 14:41 Yunga left, YungaPalatino is now known as yunga, risou left 14:42 risou joined
PerlJam oh, I guess it wasn't a gsoc project. 14:48
news.perlfoundation.org/2009/08/200...nging.html
14:55 kst left, kst joined 14:57 hanekomu left 15:00 mberends joined
masak mberends! \o/ 15:00
mberends o/ masak
moritz_ \o
mberends masak++ #`[ nice wrap up of p6cc] moritz_++ #`[ p6cc winner ] 15:02
moritz_ colomon++ # close second
mberends aye 15:03
colomon moritz_++
masak moritz_++ colomon++ # great work, both of you! 15:04
mberends
.oO( I seem to have triggered a karma avalanche. Well, it was due )
15:06
.oO( avalanches usually are )
15:07
masak :) 15:08
15:12 kcwu left 15:16 kcwu joined 15:30 risou_ joined 15:32 risou left 15:33 risou_ is now known as risou
sorear masak! mberends! 15:43
mberends sorear! hi! 15:44
masak sorear! \o/
&
sorear masak: Did joseph_ email you? 15:47
joseph_ I did. 15:48
sorear masak: I've had some vague ideas about adding POD and use v5 to niecza ...
oh joseph_ is here! \o/
hi
joseph_ Hello :)
mberends sorear: niecza use v5 would be awesome! 15:49
sorear mberends: my thoughts have been more directed towards the runtime side of things, in particular the niecza calling system would need to be extended with some kind of wantarray 15:51
masak: do you still plan to do the #=/#| splitting S29 rewrite? 15:53
15:58 noganex_ left 16:17 ymasory joined 16:21 sunnavy joined, M_o_C joined 16:25 jedai joined 16:33 M_o_C left, M_o_C joined 16:37 awoodland joined 16:46 icwiener left
pmurias sorear: hi 16:47
sorear: re wantarray you want to implement a Perl 5 frontend to niecza or embed perl5?
16:50 M_o_C left 16:52 M_o_C joined 16:55 M_o_C left 16:58 whiteknight left, risou_ joined 17:01 risou left, risou_ is now known as risou
masak sorear: yes. only reason I didn't was that I lost momentum. but I still want it just as much. 17:06
joseph_: any questions, any at all -- please ask here or via email. I'm excited about the possibility of a Pod GSoC project. 17:07
17:08 birdwindupbird joined
masak joseph_: continuing the discussion from the email thread: text/HTML/*roff/DocBook -- all those backends would simply be implemented as a module/class implementing some "interface". both Damian's module on CPAN and mberends' Pod parser contain prior art on that. 17:09
17:10 joseph_ left 17:11 joseph_ joined 17:12 flussence_ left
mberends masak: I often think about dialects (or subsets) of Perl 6, but so far the main philosophy has been an all-or-nothing proposition, probably to reduce the possibility of splintering. 17:13
masak well, I see a great market for sublanguages. 17:15
something that doesn't try to replace the main Perl 6 dialect so much as specialize in some small area. 17:16
17:17 flussence joined
mberends masak: but doesn't a sublanguage "extend" Perl 6? If not, there is the danger of diluting the brand, since the "official" definition of Perl 6 is based on full spectest compliance. 17:18
masak mberends: you worry too much :)
moritz_ mberends: every module that imports types or subroutines extends Perl 6 in some sense 17:19
"so what?"
mberends :)
masak mberends: all I want is a constraint solver that has a much better syntax for constraint solving than regular Perl 6, but that "hides" most parts of Perl 6 most of the time.
moritz_ that's something you'd probably just import into a small scope 17:20
masak indeed.
17:22 MayDaniel joined, noganex joined 17:30 MayDaniel left 17:33 Tedd1 joined 17:36 mj41 left
masak uhhh... someone please remind me -- if I want to call the token 'identifier' from my own grammar, what's the syntax? 17:44
17:45 M_o_C joined
masak rakudo: say Perl6::Grammar.identifier() 17:46
p6eval rakudo 792e86: OUTPUT«Null PMC access in get_integer()␤ in main program body at line 125␤»
masak submits rakudobug
rakudo: say "foo" ~~ /:lang(Perl6::Grammar) <identifier>/ 17:49
p6eval rakudo 792e86: OUTPUT«===SORRY!===␤Confused at line 22, near "say \"foo\" "␤»
masak shucks. that was my best guess :(
moritz_ rakudo: say Perl6::Grammar.parse('foo', :rule<identifier>); 17:50
p6eval rakudo 792e86: OUTPUT«foo␤»
masak moritz_++
...and from within an ongoing parse?
moritz_ something like <.Perl6::Grammar::identifer> or so 17:51
masak no, I meant today, now :)
17:52 _twitch left
masak gives up and copies 'token identifier' 17:52
17:55 Hackbinary left 17:57 birdwindupbird left
lue hello world! o/ 17:57
17:58 jferrero joined, jevin left
masak hellue! 17:58
17:58 uniejo joined 17:59 cognominal left, cognominal joined 18:00 M_o_C left 18:03 M_o_C joined
masak ergh. sometimes I find rules (rather than tokens) hinder more than they help when parsing line-oriented formats. 18:04
rules are better for free-form formats. 18:05
18:07 Hackbinary joined 18:10 prammer joined 18:11 jevin joined 18:13 hudnix left, mj41 joined 18:16 envi left 18:17 mberends left
masak rakudo: my %twice = ($_ => $_ * 2 for 5, 42, 4096); say %twice.perl 18:25
p6eval rakudo 792e86: OUTPUT«{"5" => 10, "42" => 84, "4096" => 8192}␤»
masak list comprehensions rock.
benabik That looks more like a hash comprehension... :-) 18:26
masak :P 18:27
the hash is assigned to from a list, just like an array would be.
that's as far as I can see one of the big wins of list (auto-)flattening, that arrays and hashes share the same "interface", making it easy to assign from one to the other. 18:28
g'ah. how did I ever manage to write code before I started with TDD? :P 18:38
moritz_ masak: when I started programming I would write 40 lines of code, and they didn't work... 18:47
masak: then I started doing incremental coding, and basically tested everything along the way with print statements
that's also testing, just not unit tests 18:48
tadzik gah. On my University there are still some people who write 200-300 lines of code before they even try to compile it
the sad fact is that these people don't really know that they need help with programming from the very basics, they just keep on going 18:49
18:55 arlinius joined, wooden left
lue tadzik: I remember doing that once (>100 lines of code w/o tests). Part of it was that I didn't know about TDD or other testing methods, part of it was that the code couldn't be tested until most of it was coded. (never finished the project, btw) 19:05
19:06 wooden joined 19:07 Rotwang left, st-2451 left
masak moritz_: it would be interesting to have some hybrid of a REPL and some IDE's debug mode. so each time you write a method, you basically have code running with test parameters as you write it. 19:10
19:10 st-7097 joined
tadzik lue: that has nothing to do with testing. It's like building a house of cards wearing a blind fold, you never know if even a one card stands when you put on another one 19:11
lue Well, does it have something to do with it when I tell you I never compiled/ran said project? :) [granted, you don't compile Python, but...] 19:12
tadzik you do 19:13
19:15 dju joined, dju left
lue I vaguely remember .pyc files. When I say "you don't compile Python", in my head, compilation is something you do purposefully and lets the product run without the compiler. 19:16
masak lue: compilation means preparing something, anything, which is then run.
lue: the term stands in opposition to another term, 'interpretation'. 19:17
moritz_ wonders who you compile code with interpreting it :-)
masak thich is when you go statement by statement, parsing and evaluating as you run.
s/thich/which/
19:18 st-7097 left
masak lue: Perl, Python, Ruby. all of them compile code down to some sort of bytecode and then interpret that bytecode. even if you don't see it. 19:18
lue My definition of compilation is different then. (Is there a word for how I see it, where I would say you "compile" C, C++, but I wouldn't say you "compile" Perl, Python? Or is it just two different forms of compilation w/o their own words yet?)
masak lue: it's just you having been unaware of the compilation phase until now.
19:19 dju_ is now known as dju
masak it's really quite invisible in these dynamic languages. 19:19
but it happens, or the programs would run much slower :)
moritz_ lue: point is that compiling C and Perl isn't very different in essence. It's just that one of them writes the compilation to disc, and the otehr not
masak lue: anyway, not knowing anything about your project, "the code couldn't be tested until most of it was coded" sounds like a phony excuse. :) 19:20
moritz_ the least you can do is to find out if it runs up to a certain point without throwing errors 19:21
even if you don't know what the data should look like
lue I'll now be reconciling the real definition of "compile" with how I see it. To me (until just now), the compilation process for C and for Perl6 were completely different things.
19:21 joseph_ left
masak lue: if it helps, I've once held your exact view. :) 19:21
there's a nice web page out there completely demolishing the compile/interpret dichotomy. I don't remember who wrote it. someone like MJD or Alias, probably. 19:22
19:22 st-7523 joined
lue masak: My project was an NES emulator. If I were to do it all over again (some day!), I would test the individual methods as I coded them. But the best way to test this sort of project is to code up to a point where it can execute some machine code. 19:23
masak lue: why? 19:24
lue Probably that's a holdover from how I saw the programming world pre-#perl6 :) 19:25
19:26 yunga left
masak I would suggest it is :) 19:27
lue afk for just a moment.
moritz_ could say so much about it, but it's probably like carrying coals to Newcastle 19:28
19:28 lue left
masak now, it's not an absolute *obligation* to write the test first, but it's a very nice crutch to lean on until one masters TDD. 19:28
it really helps.
19:30 nymacro left 19:31 lue joined
lue hello again o/ 19:31
masak lue: I'm doing TDD development as we speak. turns out the second test "required" me to write >50 lines of code. that's quite a lot by my standards. 19:33
but during that time, running and re-running the two tests I have ~10 times has informed me on how the coding of those >50 lines is going.
lue: have you tried tote? maybe you'd like it :) 19:34
lue googles tote -bag 19:36
masak gist.github.com/834500 19:37
lue: that's how it looks so far.
also strangelyconsistent.org/blog/helpfu...d-on-crack and strangelyconsistent.org/blog/some-t...ts-on-tote 19:38
basically, it's a little program that runs the tests for you as soon as you save a .t or .pm file. 19:39
doesn't sound like much, but it boosts productivity and fosters the "right" habits :)
19:40 st-7523 left 19:44 st-7869 joined
masak lue: have we talked about "red-green-refactor"? 19:45
lue yes.
masak oh good. :) 19:46
19:46 st-7869 left
masak I find people sometimes undervalue the importance of seeing the test fail. 19:46
I just had a test unexpectedly succeed in the "red" phase -- and indeed, I had copy-pasted it and not changed it to what I meant. :) 19:47
moritz_ has a love and hate relation to failing tests 19:48
lue That reminds me, I should work on my POD6 parser some more and add some failing tests, 'cos they all pass right now.
masak moritz_: that's a bit like saying that you like traffic lights, except the red ones :P 19:49
moritz_ masak: oh, I don't mind the red ones, as long as they apply to the others :-) 19:51
masak *lol*
Schadenfreude.
moritz_ ... ist die beste Freude.
masak same saying in Swedish, except "beste" is "the only true". 19:52
moritz_ I like that too :-)
masak seems to me that that meme must survive based on its tongue-in-cheek provocativeness. 19:54
I certainly like it too, but I don't really believe it.
moritz_ same here
19:54 st-7943 joined
moritz_ when I see my small one laugh it's certainly neither Schadenfreude on her or my behalf 19:55
masak right. and I bet that Freude is better. QED. 19:56
19:57 st-7943 left
masak is getting to really like list comprehensions 19:57
they're like map {}, but without the {} :)
rakudo: (my %h).push: .denominator => .numerator for 1/2, 4/5, 3/2; say %h.perl 20:01
p6eval rakudo 792e86: OUTPUT«{"2" => [1, 3], "5" => 4}␤»
masak \o/
20:01 st-8196 joined
masak hugs Perl 6 20:01
rakudo: (my %h).push: (.denominator => .numerator for 1/2, 4/5, 3/2); say %h.perl 20:02
p6eval rakudo 792e86: OUTPUT«{"2" => [1, 3], "5" => 4}␤»
masak could be that's slightly more efficient. then again, maybe not. 20:03
20:05 y3llow_ joined, pothos_ joined
lue afk 20:05
20:07 pothos_ is now known as pothos, y3llow left, y3llow_ is now known as y3llow 20:16 whiteknight joined 20:40 donri joined 20:41 birdwindupbird joined 20:46 woldrich joined, woldrich is now known as Guest42867 20:50 ymasory left 20:51 ymasory joined, ymasory left, ymasory joined 20:52 ymasory left 20:54 [particle] left 21:00 [particle] joined 21:03 M_o_C left 21:15 flatwhatson left 21:29 birdwindupbird left 21:31 M_o_C joined 21:32 cotto left, bacek joined
flussence rakudo: say ("\t !" ~~ /^(\s*) (.*)$/).join(' ').perl 21:45
p6eval rakudo 792e86: OUTPUT«"\t !"␤»
21:48 hudnix joined 21:54 st-8196 left 22:04 kst left
masak rakudo: given "\t !" -> $line { my $prefix = ($line ~~ /^ (\h*)/ or '')]0 22:04
p6eval rakudo 792e86: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 22␤»
22:04 kst joined
masak rakudo: given "\t !" -> $line { my ($prefix, $rest) = ($line ~~ /^ (\h*)/ or '')[0, 1]; say $prefix, ' ', $rest } 22:05
p6eval rakudo 792e86: OUTPUT« ␤»
masak oh right.
rakudo: given "\t !" -> $line { my ($prefix, $rest) = ($line ~~ /^ (\h*) (.*)/ or '')[0, 1]; say $prefix, ' ', $rest }
p6eval rakudo 792e86: OUTPUT« !␤»
masak rakudo: given "\t !" -> $line { my ($prefix, $rest) = ($line ~~ /^ (\h*) (.*)/ or '', $line)[0, 1]; say $prefix, ' ', $rest }
p6eval rakudo 792e86: OUTPUT« !␤»
masak rakudo: given "\t !" -> $line { my ($prefix, $rest) = ($line ~~ /^ (\h*) (.*)/ or '', $line)[0, 1]; say ($prefix ~ ' ' ~ $rest).perl } 22:06
p6eval rakudo 792e86: OUTPUT«"\t !"␤»
masak hm, the 'or' thing is probably overkill. the regex can't not match. 22:07
'night, #perl6. 22:08
22:08 masak left 22:27 st-8942 joined 22:29 Limbic_Region joined 22:32 ymasory joined 22:37 mathw left 22:39 st-8942 left 22:47 kaare_ left 22:53 starcoder is now known as starcoder-, starcoder2 is now known as starcoder, starcoder- is now known as starcoder2 22:58 risou_ joined 23:01 risou left 23:04 mj41 left 23:20 dorlamm joined 23:22 cognominal left 23:23 cognominal joined 23:25 Blueh joined 23:32 kst left, kst joined 23:46 Blueh left 23:57 pmurias left