feb autrijus: you're welcome 13:46
autrijus irclog frontpaged on pugscode.org. 13:48
Steve_p autrijus, < autrijus> nah. I'll just ask steve. ? 13:54
autrijus steve fink
not Steve_p :)
ingy hola
autrijus hihi ingy
ingy hi autrijus 13:55
did the /doc thing work for you?
Steve_p OK :)
Odin- Odin- places a sane-o-meter on the channel, wondering if it'll score above zero.
autrijus ingy: uhm no, so I moved it to lib/Perl6/lib
ingy hmmm 13:56
autrijus rationale is that I'd like it installed.
and become part of standard perl6 library.
as such it can't live in doc/. 13:57
(oh and we already have docs/.)
ingy it was supposed to be like the /pod/ dir in the perl dist
autrijus ah. I consider that layout rather broken, honestly
because you need special makefile magic 13:58
hi scw!
ingy and I thought docs was more like project docs
I see
ok by me sir
autrijus ok :) not saying it's the only Right Thing 13:59
but feels workable for now
we'll see how it goes :)
ingy kwid is working out oh so nice
did you try diffing the doc?
autrijus mm? 14:00
I looked at it when I moved it
not diffing
or you mean the kwiki page?
ingy diff -u perlpod.pod perlkwid.kwid
autrijus ohh 14:01
interesting. 14:02
it looks truly nice. 14:03
ingy the translation exercise was very interesting for me
autrijus bootstrapping++
ingy I varied from kwiki in some ways
autrijus torgox++ # worked on perlpod and perlpodspec
ingy and used pod norms where appropriate
autrijus cool.
it's still supportable by a kwiki plugin of course, right?
ingy [...] == L<...> (for the most part) 14:04
of course
my favorite newbie is `...` == C<...>
it cleans things up so much 14:05
autrijus yup
ingy I'll take another pass today
autrijus fwiw I ate [=...].
I mean, I hate.
ingy hate
yes, I hate it too 14:06
it was never a candidate for kwid :)
autrijus good :) 14:07
ingy autrijus: can you make pugs recognize '=kwid'
I tried but failed
autrijus and still ends by =cut?
ingy yes
(it's in the spec)
the spec being perlkid for now
perlkwid 14:08
Steve_p Steve_p sees more pair goodness to test
ingy actually perl should ignore /^=[a-zA-Z0-9]+/ - =cut 14:09
so =kwid is valid even in perl5 today
btw, does perl6 have __END__ ? 14:10
autrijus no, it's =begin END 14:13
Steve_p heh
pjcj Now that's just copying Windows! 14:14
Steve_p I was thinking Pascal or PL/SQL myself :) 14:16
ingy there is one major podism I need to resolve 14:17
I note it in my checkin 14:18
the whole =over =item =back dance has its merit 14:19
not for the nominal list case
but for the more complicated lists
ingy has to run 14:20
stay tuned...
statico statico won't touch that dial! 14:22
ingy++ # moving forward with kwid 14:23
Steve_p Steve_p guesses the preview was discussed on #kwiki last night
integral integral thinks pod's problem there is not that =over etc dance, but reusing it for numbered and bulleted lists
Steve_p Yes. Hate. 14:24
ingy integral: but what's worse is another kind of list
that is not bulleted or numbered but worded
=item this
blah blah
=item that
more stuff 14:25
integral just separate all the things out, surely?
ingy I need to find a sane roundtrip
btw {{*bold*}} == {*bold*} == *bold* 14:26
{{ leave asis }} == { leave asis } 14:27
`` C<stuff> == `stuff` `` 14:29
I think I can handle the insane edge cases sanely and beautifully
but I really gotta run
shapr I gotta unicycle! w00! 14:32
Steve_p Steve_p watches shapr's first attempt and hands him an icepack ;) 14:33
shapr www.scannedinavian.com/images/uni-hop.jpg
Steve_p Does Perl 6 have a "defined"
shapr Steve_p: I got my first stitches in 33 years almost a year ago when I was learning :-) 14:34
almost a
huh, weird C-q C-m typo
Steve_p heh
wolverian Steve_p: yes 14:37
(pugs has tests for it) 14:38
Steve_p wolverian, it appears to have some issues
Damn, no nopaste! 14:39
this seems to choke t/op/not.t
ok ! defined $not, "not() returns undef in sclalar context";
Steve_p is being bothered by an attentio-seeking cat 14:40
shapr shapr has five of them :-/ 14:41
autrijus hm 14:49
podBlock parsing harder than I thought.
but then, I'm being diverted by $work
I'll commit what little I have first 14:51
maybe someone who wants to trace parsec can give it a try -- it's r315.
otherwise I'll come back in a bit
rehi 14:54
scw autrijus: Oh! so when I login, it's yourself instead of bot said "autrijus> hi scw!" ! 15:03
autrijus uh.
yes.
I am not a bot.
but then, maybe I am, but I'm not self-aware.
hard to tell :)
Steve_p heh 15:06
autrijus yay. 17:10
finally got $dayJob nailed
ultra complex requirement :-/
however managed to get it done in 2hrs thanks to haskell. 17:11
autrijus wonders if perl6 will make it even easier.
wolverian I'm slightly annoyed that perl6's pattern matching (mmd) isn't syntactically as nice as haskell's 17:13
autrijus wolverian: if you can list specific points, we may be able to propose on p6l. 17:14
I'd like to have full pattern match facility as well.
wolverian I'm not sure how I'd go about fixing it.
I'll think about it tonight, though.
autrijus it applies to := and ::= too
which is the same as letrec
wolverian hmm. do you have any ideas there?
autrijus have you seen array unpacking syntax? 17:15
and hash unpacking
in parameter binding
wolverian pairs to pairs? yes.
autrijus hash unpacking is really like record pattern matching in haskell, and array to list
s/array to list/array unpacking is like list pattern binding as well/ 17:16
I think the magical _ helps.
and the use of constants as part of unpacking
but I think that's minor
the real deal is to use ~~ in binding.
if you can use ~~, you're set.
because ~~ is even more powerful than haskell patterns :) 17:17
wolverian hrm.
autrijus (you can use parsec-like Rules, for example.)
# dev.perl.org/perl6/synopsis/S04.html "Smart matching" 17:18
so yes, I'd like to see 17:19
multi sub foo ($x ~~ foo(), $y ~~ bar()) { ... }
where foo() and bar() may be rules, roles, lists, hashes, etc.
wolverian my (Foo @bar, Baz @quux) <== get_foos_and_bazes(); # if <== worked like this..
integral hmm, maybe some new code layout habits could help 17:20
maybe even being able to put multiple signatures and bodies after a single 'multi sub foo'
autrijus wolverian: that's :=
wolverian autrijus: oh, that works?
autrijus yup.
so it's not that bad :)
wolverian I thought it only distributes pairs
autrijus no, it distributes using the same rule as mmd.
or rather, as parameter binding. 17:21
wolverian oh, that's okay then.
autrijus I still miss pattern guards.
I think allowing ~~ in signature is like pattern guards.
wolverian it would enlargen signatures a lot, I think.
autrijus true.
and there's the nasty side effect thing.
which is why I'd like a functional sublanguage :) 17:22
but I already mentioned it.
wolverian is 'Foo $bar' in the signature a .does() test?
autrijus it is a ~~ test.
multi sub baz (&bar<Code, Int, Int>) 17:23
code unpacking works too.
wolverian and $bar ~~ Foo is a .does() test. okay.
autrijus yup.
so allowing explicit ~~
is merely generalizing things. 17:24
wolverian (I love perl6 already just because it's .does(), not .isa())
autrijus duck typing ++ :)
wolverian yes.
autrijus and .does can be made to do side effects as well
so there's already side effect bug
I think explicit ~~ won't hurt.
wolverian where is &bar<Code, Int, Int> defined?
autrijus S06 17:25
grep for "The closure parameter"
wolverian hadn't noticed that before. thanks!
autrijus np :)
wolverian 6
er, wrong window 17:26
autrijus so yeah, there's this trait ~~
and class/role ~~
wolverian (it takes so time to get used to ratpoison)
autrijus and sigil ~~
but no explicit ~~
multi sub foo ("constant") { ... }
wolverian this is going to be a p6l suggestion, isn't it?
autrijus which is made into --> multi sub foo ($dontCare ~~ "constant") { ... } 17:27
it is if you'd like to write it :)
wolverian I wouldn't probably be coherent enough.
autrijus or ask for another kind soul for summarization
that is fine. p6l is very constructive nowadays.
fancy that.
wolverian horrid.
:)
autrijus :)
the dontCare defaulting is actually pretty strong. 17:29
wolverian what is the haskell term for thsi? 17:30
this, rather.
pattern guards? 17:31
autrijus "Pattern bindings"
that's unpacking
assertion at binding level is called "guards" 17:32
and using binding as assertion is called "pattern guard"
you can refer to www.haskell.org/tutorial/patterns.html
wolverian thanks. so this isn't valid right now? my ($foo ~~ bar(), $baz ~~ quux()) := ...; 17:33
autrijus nope. far from it.
the haskell case expression is like perl's given expression
wolverian yeah.
autrijus so same idea can be used there.
(i.e. haskell can also do guards and bindings inside case conditions) 17:34
wolverian using ~~ like that directly would be special syntax, and I don't think that would fly. it'd be special syntax in signatures as well, but those are already special, so..
autrijus if I have to pick one feature in haskell that really shines, that is it :)
you mean ~~ in LHS being special?
wolverian yes.
autrijus but there is already implicit ~~ all around
so it's just unifying this idea
wolverian hrm. well, yes. 17:35
autrijus (pattern guards isn't in haskell 98 either, it's GHCism.)
I refer you to the excellent paper, " Pattern Guards and Transformational Patterns"
# scholar.google.com/scholar?hl=en&am...l+Patterns 17:36
wolverian thanks :)
autrijus =)
spj++ # full of good ideas 17:37
wolverian how would you state a less than/larger than assertion with ~~? 17:38
(can you do that in haskell? I'm woefully ignorant.)
I guess '$foo ~~ $min..$max' might work :) 17:41
the problem here is that ~~ is ugly when it's extended to do so much. 17:42
autrijus uh 17:44
smart matching is inherent in p6 17:45
wolverian yes, that's not what I meant, obviously
I think, anyway
autrijus $foo ~~ { $_ < 3 }
is how you assert for less than 17:46
wolverian right. that's probably a fair bit more efficient than smart matching against a range :)
autrijus depends on how good the optimizer is :)
journal up. 18:13
obra goes to read 18:22
nnunley does, too. 18:29
autrijus -c support in trunk now. 18:33
nnunley autrijus: So $work allows you to hack in Haskell? Most excellent. 18:34
autrijus :) 18:35
the good thing about owning a small consulting company is that you can usually choose your tools :)
nnunley nnunley nods.
True.
So... If we were to use QuickCheck to validate the Haskell side, would you inject it the same way you injected Parsec? 18:39
autrijus uhm, no
I inject parsec because I plan to port it into a state transformer
inside the Eval monad
I think I can use QC as-is. 18:40
nnunley nnunley nods. "It does have a side effect of increasing the portablity of the code to other Haskell implementations."
autrijus I did not find a way to StateTify Parsec without modifying the small source.
nnunley nnunley nods.
autrijus true, but we already must use binary IO
and lotsa pattern guards
and eventually unboxed types
so we're pretty tied to GHC right now.
nnunley Ok. 18:41
I think I'm going to try to make QuickCheck my vector into learning Haskell.
autrijus that's wonderful.
perlmonks.org/?node_id=434803 # AST
anyone think adopting Text.PrettyPrint in Pretty.hs will help? :) 18:42
that will give us beautiful deparse and AST output.
if someone is looking for a small haskell intro project, that could be it :)
nnunley nnunley grins.
autrijus T.PrettiPrint is a joy to use :) 18:43
and Pretty.hs is pretty much self explanatory.
s/PrettiPrint/PrettyPrint/
nnunley I remember basing a pretty printer API in Java on it. 18:44
autrijus :) 18:45
but, sleep. & boarding in 11 hrs
hmm, 10.
nnunley autrijus: Sleep good. 18:46
autrijus :)
autrijus waves &
nnunley Safe journey. 18:49
shapr nnunley: QuickCheck is most nifty, if you need help with it, bug me. I wrote a Test-Driven-Development version of QuickCheck. 18:57
nnunley shapr: Thanks. It feels a little daunting to start out with in Pugs. 18:59
shapr: Given that there's no Arbitrarys for the AST yet. :)
shapr: I guess I'm just trying to figure out a good cut point to start with. 19:02
shapr: Hrm. Do you have a reference to your TDD version that I can look at? 19:13
shapr nnunley: www.scannedinavian.org/~shae/tdd-qc.tar.gz 19:14
nnunley: Check out the README, and be warned that I'm probably the only regular user of that code :-)
If you think of a better way to save failing test cases, or if you find bugs where it no longer does some original QC stuff, please tell me. 19:15
nnunley No problem. As long as I don't start gibbering and chanting 'aie, aie, cthulu, cthulu', I should be fine. 19:16
shapr shapr snickers
Hastur, Hastur, Hast-urk! 19:17
nnunley nnunley installs hugs. 19:20
Aie... Aie... 19:47
Back to the YaHT :)
shapr hehe 19:49
Any specific questions?
nnunley Just that I don't have enough Haskell yet. I've read through SOE... But since I never tried to apply it, it's all a little nebulous for me right now. 19:50
shapr: So I stand at the foot of the cliff and wonder, 'How do I start climbing?' 19:53
buu Am I missing something trying to check out pugs?
shapr nnunley: Have you written any Haskell yet?