svn switch --relocate svn.openfoundry.org/pugs svn.pugscode.org/pugs/ | run.pugscode.org | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com | dev.pugscode.org/ Set by putter on 11 February 2007. |
|||
00:00
CardinalNumber joined
00:01
cognominal joined
00:10
GabrielVieira2 joined
00:15
ruz joined
00:20
cj joined,
CardinalNumber is now known as ProperNoun
00:38
dduncan joined
00:39
ruz joined,
theorb joined
00:48
neonse left
00:55
GabrielVieira2 is now known as GabrielVieira,
autark joined
01:04
offby joined
01:12
kisu left
01:29
ProperNoun joined,
awwaiid joined,
GeJ joined,
orafu joined,
_jcrigby joined,
devbot6 joined,
statico joined
01:37
GabrielVieira2 joined
01:53
explorer joined
02:18
dmq joined
02:28
vel joined
02:29
meppl joined
02:30
REPLeffect joined
03:00
jisom joined
03:01
GabrielVieira2 is now known as GabrielVieira
03:12
justatheory joined
03:27
REPLeffect_ joined
03:32
mako132_ joined
03:34
scw_ is now known as scw
|
|||
devbot6 | dev: Ticket #3 (task updated): Capture fglock/putter interview info to kp6 faq. <dev.pugscode.org/ticket/3#comment:1> | 03:36 | |
03:43
REPLeffect_ is now known as REPLeffect
|
|||
audreyt | oh wow, our first trac spam | 03:46 | |
devbot6 | dev: Ticket #21 (task closed): alarm-based timeout support for "make smoke" <dev.pugscode.org/ticket/21#comment:1> | 03:50 | |
03:59
b00t joined
04:20
REPLeffect left
04:28
mako132_ joined,
dec_ joined
04:31
REPLeffect_ joined
04:32
REPLeffect_ is now known as REPLeffect
04:39
amnesiac joined
04:43
REPLeffect left
04:58
nperez joined
05:06
araujo joined
05:09
offby is now known as offby1`
05:10
Khisanth joined,
offby1`` joined
05:11
offby1`` is now known as offby1
05:17
Gothmog__ joined
05:24
araujo joined
05:28
araujo joined
05:31
offby1 joined
05:36
dec_ is now known as dec
05:38
quink joined
05:40
quink left
05:42
the_dormant joined
|
|||
TimToady | make smoke still leaves a looping process. strace alternates between lines of: | 05:45 | |
sigreturn() = ? (mask now []) | |||
--- SIGALRM (Alarm clock) @ 0 (0) --- | |||
dec | SIGSMOKE | 05:47 | |
allbery_b | whee | 05:50 | |
dec | Or are smoke signals not cool any more? | 05:58 | |
06:07
dduncan left
06:13
BooK joined
|
|||
gaal | TimToady: are you running r15548 or newer? | 06:20 | |
should have been fixed there | |||
allbery_b | ?eval 1 | ||
06:20
evalbot_r15444 is now known as evalbot_r15447
|
|||
evalbot_r15447 | 1 | 06:20 | |
allbery_b | hrrrrrm | 06:21 | |
gaal | not sure evalbot gets its number updated if there had only been non-haskell changes to the tree. | 06:24 | |
rat on the keyboard could be a better condition than tar on the keyboard. more easily removed with cheese, for example. | 06:27 | ||
did I say r15548? sorry, meant r15446 (svk local number...) | 06:28 | ||
06:28
the_dormant joined
|
|||
TimToady | this is with 15447 | 06:29 | |
gaal | do you still have the terminal open? did the last several tasks all take 30 seconds? | 06:31 | |
TimToady | can't really tell anything from what's left in the scrollbar | 06:37 | |
lots and lots of: Use of uninitialized value in subroutine entry at /usr/lib/perl5/site_perl/5.8.8/Test/TAP/Model/File.pm line 89. | |||
allbery_b | sounds like the Test::TAP::Model bug which I think got fixed (at least mine no longer throws it) | 06:38 | |
...as of last night at least | |||
gaal | still trying to reproduce here; TimToady, is your Test::TAP::Model the latest one? | 06:43 | |
TimToady | how should I know? | 06:44 | |
is this an external dependency? | |||
06:45
baest joined,
rfordinal joined
|
|||
allbery_b | yes, it's a perl5 dependency separate from pugs | 06:45 | |
gaal | perl -MTest::TAP::Model -le 'print Test::TAP::Model->VERSION' | 06:48 | |
0.08 is the latest. | 06:49 | ||
TimToady | 0.06 | ||
gaal | I'm not sure if the problem fixed in 0.7 is the one you're reported.. | 06:50 | |
allbery_b: that was actually a Test::Harness API incompatibility | |||
TimToady | well, updated to 0.08 in any event | ||
bbl & | 06:54 | ||
(thanks) | |||
& | |||
gaal | oh, I reproduced the problem here. hmm. | 07:15 | |
close SOME_FH isn't enough apparently... | 07:16 | ||
is there any way to get at the pid of a child started with open-|, without touching the open? | |||
07:16
baest joined
|
|||
TimToady | the return value of the open should be the pid | 07:21 | |
though if a shell got involved, the actual child you're interested in might be a grandkid | 07:22 | ||
gaal | the problem is that the open is in a library we don't really control... | ||
...but I'm looking to see if changing it anyway is any help | 07:23 | ||
07:23
idiocrash joined
07:24
spinclad joined
|
|||
idiocrash | hey guys - I'm new to this channel and just wanted to see if anyone yet had an idea of when it could be likely to see a Perl 6 release. Alpha, beta, whatever. | 07:24 | |
gaal | I'm kinda hoping--but this is maybe futile--that leaving a block with a lexical filehandle on an open-| will kill the child? | ||
07:24
b00t joined
|
|||
gaal | er sorry: i meant leaving it because of a SIGALRM | 07:25 | |
idiocrash: you can try out developement versions of pugs right away! | |||
offby1 | idiocrash: "when it's ready", I bet | ||
gaal | ?eval 40 + 2 | ||
evalbot_r15447 | 42 | 07:26 | |
gaal | see also run.pugscode.org/ | ||
lambdabot | Title: Run Perl 6 Now -- in your browser! | ||
idiocrash | Yeah, everyone says it's done when it's done, but I just want a little smidgen of a timeframe. Randall seemed optimistic of a 12/06 alpha or beta release. But, well, we know how that went by now. | 07:27 | |
offby1 | *shrug* | ||
idiocrash | Only because I'm excited though! | ||
gaal | idiocrash: want a commit bit? | 07:28 | |
idiocrash | nah. | 07:29 | |
I'm not a C hacker | |||
gaal | use your excitement to make it come sooner | ||
there's almost no C code in pugs | |||
idiocrash | Oh? Haskell? | ||
gaal | you can help with Haskell, sure, or with writing test (in Perl 6) | ||
07:30
dolmans joined
|
|||
offby1 | I'm toying with helping with parrot ... gotta learn git, tho' | 07:30 | |
gaal | youch! hacking Straps.pm to use a lexical filehandle there just makes it hang again! I wonder if this is a Perl 5 bug... | ||
idiocrash: so for example you can look at svn.openfoundry.org/pugs/t which helps us generate things like smoke.pugscode.org/ | 07:31 | ||
lambdabot | Title: Revision 15447: /t | ||
gaal | er, oops, did I say openfoundry? I meant svn.pugscode.org/pugs/t/ | 07:32 | |
lambdabot | Title: Revision 15447: /t | ||
gaal | (though the first url is a mirror, it's slow.) | ||
idiocrash | mkay. | 07:33 | |
gaal | so, what's your email address? :) you can /msg me. | ||
(though not unless you're registered in freenode) | 07:34 | ||
idiocrash | I'm not | ||
gaal | idiocrash: /msg nickserv register SOMEPASSWORD | 07:37 | |
idiocrash: /msg nickserv identify SOMEPASSWORD | 07:38 | ||
07:42
baest joined
|
|||
svnbot6 | r15448 | audreyt++ | * Pugs.Eval, Pugs.hs: In the interactive shell, statements are | 07:45 | |
r15448 | audreyt++ | now executed in item context instead of void context, to catch | |||
r15448 | audreyt++ | some of the surprising return values. | |||
r15449 | audreyt++ | * Pugs.Prim: The outermost context is Item, not Void. | 07:46 | ||
gaal | okay, I don't understand the hangs caused by alarm, so I'm inclined to revert those patches | 07:47 | |
svnbot6 | r15450 | audreyt++ | Pugs.Prim.Keyed: Avoid import warnings. | ||
07:47
iblechbot joined
|
|||
audreyt | k, and unresolve the ticket | 07:48 | |
gaal | I suspect a real solution will involve a Straps patch too, but I'm too fuzzy to work on that right now :( | ||
svnbot6 | r15451 | audreyt++ | * Pugs.AST: The ./ notation is (for now) invoking OldVal and | ||
r15451 | audreyt++ | returning OldVal; we'll switch en masse to NewVal eventually. | |||
r15451 | audreyt++ | * Pugs.Class: Add instance for (obj ./ "string"); also add default | |||
r15451 | audreyt++ | ITEM/LIST methods to boxed pure classes. | |||
audreyt | that's fine :) | 07:50 | |
svnbot6 | r15452 | audreyt++ | * Pugs.Meta.Perl5: Add HOW/WHAT/WHICH/ITEM/LIST stub declarations | 07:51 | |
r15452 | audreyt++ | to boxed Perl 5 objects. | |||
r15453 | gaal++ | * revert r15429 and r15446 as they seem to have more harm than good. | 07:52 | ||
r15454 | audreyt++ | * Pugs.Eval.Var: Since the oldland (./) takes care of vvToVal, | |||
r15454 | audreyt++ | we simple invoke the VV dispatch with ./ now. | |||
devbot6 | dev: Ticket #21 (task reopened): alarm-based timeout support for "make smoke" <dev.pugscode.org/ticket/21#comment:2> | 07:55 | |
svnbot6 | r15455 | audreyt++ | * Pugs.Eval: add .ITEM and .LIST for magic rvalue contexification | 07:57 | |
gaal | what does 'iv' stand for in ivDispatch? | 08:00 | |
svnbot6 | r15456 | audreyt++ | * Pugs.Monads: Support for rvalue contextification for newVals. | ||
gaal | how does "val ./ cxt" work? (where's the code eventually dispatched when invoking ./ with a context?) | 08:03 | |
audreyt | bbiab | 08:05 | |
iv = invocant | |||
see instance in .AST | |||
./ "ITEM" or "LIST" | |||
gaal | Is MO/ meant to be a pseudo-independent project? I want to change the accessors to pugsstyle | 08:08 | |
sm_moose instead of smMoose etc. | 08:09 | ||
08:17
marmic joined
|
|||
gaal | what does MI stand for in MI m, defined in MO.Compile.Class? | 08:24 | |
how is it distinct from MethodInvocation defined in MO.Run? | 08:25 | ||
(mi_name would clash and I want to know how to rename one of them) | 08:27 | ||
brb | |||
rehi. I still don't understand what MI stands for :) | 08:43 | ||
08:47
aukjan|gone joined
08:48
aukjan|gone is now known as aukjan
08:52
lisppaste3 joined
08:53
dec_ joined
|
|||
Patterner | Not MethodInvocation? | 08:53 | |
gaal | then "how is it distinct from MethodInvocation defined in MO.Run?" | 08:54 | |
Patterner | you're the expert | 08:58 | |
gaal | cmarcelo is I think | 09:00 | |
09:08
TimToady_ joined,
forsaken joined
09:16
drrho joined
09:18
the_dormant joined
09:25
dec_ is now known as dec
09:29
ofer0 joined
09:35
aukjan is now known as aukjan|gone
|
|||
audreyt | gaal: MI? it's very bad name | 09:37 | |
MI stands for MultipleInheritance | |||
09:38
agentzh joined
|
|||
audreyt | so just call it PugsClass or something | 09:38 | |
gaal | there's an alias PugsClass = MI Eval | 09:40 | |
also, it's defined in MO, so "Pugs" is sorta verbotten there isn't it? | |||
MOClass perhaps? | 09:41 | ||
fixing. | |||
audreyt | MO is conceptuall independent | 09:48 | |
though it does use Pugs.Val.Capt | |||
so it's of questionable independence | 09:49 | ||
gaal | okay, comitting in a bit | ||
audreyt | dunno. I'm fine about eventually move MO into Pugs-space | ||
but there seems to be little reason to rush that | |||
09:50
andara joined
|
|||
gaal | and yet, if we're the only users, it's nice if it uses our conventions.. | 09:50 | |
audreyt | aye, so feel free to conventionalize it | 09:51 | |
svnbot6 | r15457 | gaal++ | * MO and users: use Pugs::Doc::Hack::Style naming conventions | 09:53 | |
audreyt | @pl \cls methods self -> fix . moose cls methods self | 10:06 | |
lambdabot | (((fix .) .) .) . moose | ||
audreyt | I see, so _that_ is the answer | ||
(if we're to refactor mkBoxPureClass to contain the "fix" itself) | |||
gaal | I was wondering how to do that! | 10:07 | |
I've seen few moose as hairy | |||
audreyt | @pl \cls methods -> fix . moose cls methods | ||
lambdabot | ((fix .) .) . moose | ||
audreyt | feel free to moose it into place if you feel like | 10:08 | |
10:08
rindolf joined
|
|||
audreyt | I'll commit first | 10:08 | |
gaal | sure. probably rename mkBoxPureClass to mkPureClass too while I'm at it | ||
rindolf | Hi all. | ||
Hi audreyt | |||
Hi gaal | |||
gaal | hello rindolf | ||
audreyt | yup | ||
rindolf | gaal: what's up? | ||
gaal: I didn't had a chance to make smoke the pugs build after your changes. Sorry. | 10:09 | ||
gaal | me, despite bronchitis. antibiotics++ | ||
10:09
jrockway_ joined
|
|||
gaal | rindolf: i've reverted them, as they didn't work. if you want to look into this, it'd be grand! | 10:10 | |
moritz | so what does "make smoke" do? loop? | 10:11 | |
rindolf | gaal: I can try. I'm at work now. I'm not sure I have ghc here.\ | ||
Oh, I do. And version 6.6 too. | |||
gaal | moritz: what does it do now? loop when we have a looping test, but work correctly when we don't. :) | ||
as opposed to work incorrectly if a test takes more than 30 seconds to complete. | 10:12 | ||
moritz | gaal: I don't know, I'm just building a deb package | ||
gaal | hold on, are you saying that make smoke doesn't work for you? | 10:13 | |
moritz | without smoking, so ;) | ||
no, I'm just asking... | |||
because there were two regex tests that looped previously | 10:14 | ||
and I don't know if these tests where commented out, or what their current status is | |||
gaal | I made one skipped; don't know about the other. | ||
do you remember what it was? | |||
moritz | no | 10:15 | |
audreyt | one is capture and one is exhaust | 10:17 | |
svnbot6 | r15458 | audreyt++ | * Make "Boxable" specific to the Eval monad, since Pugs.Class | 10:19 | |
r15458 | audreyt++ | is within Pugs-space and not MO-space anyway. | |||
r15458 | audreyt++ | Eventually the class name will be renamed back to "Value". | |||
audreyt | gaal: feel free to fixfix now | ||
gaal | sure | ||
audreyt | newval is almost there :D | 10:20 | |
gaal | yay :) | ||
audreyt | after VObject is gone | ||
we'll deal with VRef | |||
everything else should be Just Very Trivial | |||
oh I guess I can just slash VOpaque | |||
hm | 10:21 | ||
I'm tempted to say | |||
instance (Typeable a, Show a) => Boxable a | |||
but that will be so wrong | |||
instance (Typeable a, Show a) => Boxable (Maybe a) -- but this seems reasonable | 10:22 | ||
and use Nothing as the prototype | |||
then I don't have to write crazy number of stub instances | |||
and all haskell types are automagically perl6 types | |||
gaal | ! | 10:23 | |
audreyt goes to do that | |||
the "constructor" is just "Just" | |||
and the "destructor" is just "fromJust" | |||
let obj = mkVal (Just aboutAnything) | |||
;) | |||
gaal | ! | 10:24 | |
audreyt again feels a powerful ray of pure oleg | 10:26 | ||
gaal | I wanna see her meet the monadic oleg | 10:27 | |
clkao | audreyt: hola | 10:28 | |
audreyt | yo | 10:31 | |
gaal | hm actually I don't see (the fix thing). | ||
we do need to give "self" some name | 10:32 | ||
audreyt | gaal: consider you currently have | ||
foo self x = x + self | 10:33 | ||
bar = fix $ foo xx | |||
then you can refactor it into | |||
bar = moose xx | |||
moose = fix . foo | |||
no? | |||
or, to go pointful: | |||
moose xx = fix (foo xx) | 10:34 | ||
mkPureClass cls methods = fix (mkBoxPureClass cls methods) | |||
should be sufficient? | |||
(I'm not exactly sure, myself, but it seems reasonable) | 10:35 | ||
gaal | let me muster my antlers | ||
audreyt | anything that has anything to do with fix seems fixish | ||
rindolf | gaal: OK, built Pugs. Now I'll try to run make smoke. | 10:36 | |
audreyt | rindolf: please svn up to r15459 | 10:38 | |
10:38
aukjan|gone is now known as aukjan
|
|||
svnbot6 | r15459 | audreyt++ | * exhaustive.t - skip looping test. | 10:38 | |
rindolf | audreyt: OK. Hmmppf. | ||
gaal | all right, I think I got it :) | ||
audreyt | moose :) | 10:39 | |
@pl fix (\self -> err self) | 10:40 | ||
lambdabot | fix err | ||
gaal | ok, comitting... | 10:43 | |
for some reason mkBoxClass and mkPureClass want slightly different sigs now, moosin' it up | 10:45 | ||
sec :) | |||
audreyt | meanwhile I fixed my fix in keyed :) | 10:47 | |
gaal | ~/~ Happiness is a warm gun ~/~ | ||
svnbot6 | r15460 | audreyt++ | * Pugs.Prim.Keyed: Finally got the fixpoint trick right this time. | ||
audreyt | PIL^N -> Moose -> MO.pm -> MO.hs -> Pugs.Class | 10:48 | |
the road to 6.28.0 is full of quantum tunnels :) | 10:49 | ||
gaal | quantlers. | 10:51 | |
audreyt | quantumoose | ||
gaal | caribous | 10:52 | |
moritz | quantum mechanics is like functional programming: you can't really understand it, but after a while you learn how to cope with it ;) | ||
Patterner | infinite sisters have been bitten by a quantumoose | 10:53 | |
gaal | in constant time | 10:54 | |
svnbot6 | r15461 | gaal++ | * affix "fix" to mkPureClass (heretofore called "mkBoxPureClass") | 10:58 | |
r15461 | gaal++ | freeing callers from worrying about wild Y combinators. | |||
audreyt | gaal++ | 10:59 | |
10:59
IllvilJa joined
|
|||
gaal | audreyt++ :) | 11:01 | |
fix++ | |||
unwords . map (join (liftM2 if' isMoose (++ "++"))) words | 11:09 | ||
11:09
justatheory joined
11:14
ofer1 joined
11:16
ruoso joined
|
|||
svnbot6 | r15462 | audreyt++ | * More Boxable reshuffling - migrate Pugs.Val.Base into Pugs.Class | 11:16 | |
r15462 | audreyt++ | and start to work through an easier method/instance definition. | |||
11:21
fglock joined
11:33
DHGE joined
|
|||
rindolf | gaal: can I run make test instead of make smoke? | 11:35 | |
Or make check | 11:36 | ||
gaal | make test should work. but why do you need it? | 11:40 | |
what's make check? is it a standard target in perl? | 11:41 | ||
rindolf | gaal: no, it isn't. | 11:43 | |
gaal: well, because make smoke requires a bunch of modules that I don't have. | |||
And they have their own dependencies. | |||
I have them at home, but not here at work. | |||
gaal | oh, then sure, make test should work as usual. | 11:44 | |
bbiab& | 11:51 | ||
11:57
autark_ joined
11:59
elmex joined
12:08
chris2 joined
12:09
drupek12 joined
12:23
_Orco_ joined
|
|||
pasteling | "rindolf" at 192.114.83.18 pasted "Pugs' "make test" results." (52 lines, 3.6K) at sial.org/pbot/23285 | 12:39 | |
rindolf | gaal: sial.org/pbot/23285 | ||
lambdabot | Title: Paste #23285 from "rindolf" at 192.114.83.18 | ||
rindolf | Well, at least it didn't get stuck this time. :-) | 12:41 | |
svnbot6 | r15463 | audreyt++ | * MO: Remove (for now) the Codeable abstraction. | ||
12:43
bernhard joined
12:52
weinig is now known as weinig_
13:00
the_dormant joined
|
|||
rindolf | audreyt: ping. | 13:07 | |
13:10
drbean joined
13:12
cmarcelo joined
13:14
_Orco_ joined
|
|||
gaal | rehi | 13:15 | |
svnbot6 | r15464 | audreyt++ | * It turned out that Typeable instances can be written manually | ||
r15464 | audreyt++ | (and rather trivially), so we proceed to do that instead of | |||
r15464 | audreyt++ | using kluges like *_Type or typeOf (). | |||
gaal | oh? interesting | ||
rindolf | gaal: who are you talking to? | 13:17 | |
gaal | to r15464 | ||
cmarcelo | moose! | 13:18 | |
gaal | cmarcelo: moose indeed! | ||
cmarcelo | gaal: both SI and MI names were initially related to something named Class (or similar), so the context would make easier to understand. but then we drop SI because MI was a superset. (but I admit I usually give crappy names to things :o) ) | 13:20 | |
gaal | cmarcelo: are you ok with MOClass as a replacement? | 13:21 | |
(it fits pugsstyle better too...) | 13:22 | ||
cmarcelo | np | ||
gaal | okay :) | ||
hmm, I wonder if there's a nicer way to write this (that isn't totally crazy): | 13:23 | ||
instance (Typeable1 m, Monad m) => Eq (MOClass m) where | |||
x == y = moc_name x == moc_name y | |||
distributive composition or something | 13:24 | ||
cmarcelo | distributive composition meaning? somehow telling hs to delegate (==) to (moc_name x) equality in a declarative way? | 13:25 | |
gaal | yeah. just a random wonder :) | ||
I mean in Perl you'd do something akin to (==) $ map moc_name | 13:26 | ||
but you can do that there because @_ is so flexible (read, weakly typed) | |||
if xerox were around I'd bet he'd find some crazy way to do it with (->) :-) | 13:28 | ||
cmarcelo | well, some "delegate" function typed: (a -> b) -> (b -> b -> c) -> a -> a -> c, could do the trick.. so MOClass' (==) = delegate moc_name (==).. | 13:32 | |
gaal | @hoogle (a -> b) -> (b -> b -> c) -> a -> a -> c | 13:33 | |
lambdabot | No matches, try a more general search | ||
gaal | @pl \tr bi x y -> tr x `bi` tr y | 13:34 | |
lambdabot | flip =<< ((flip . ((.) .)) .) . flip (.) | ||
gaal | simple! :-P | ||
cmarcelo | . o O ( hoogle could be smarter sometimes and look for variants like (bbc) -> (ab) -> a -> a -> c instead.. or maybe it does ) | ||
hehe | 13:35 | ||
gaal | it does, yes | ||
13:36
fglock joined
|
|||
gaal | @type ((flip . ((.) .)) .) . flip (.) | 13:36 | |
lambdabot | forall b c a b1 a1. (a1 -> b1) -> (b1 -> b -> c) -> (a -> b) -> a1 -> a -> c | ||
gaal | what monad is that bind in? | ||
cmarcelo | (identity?) | 13:37 | |
gaal | hm then why use a monad at all? | ||
I'm guessing list or something to do with -> | |||
after all, | 13:38 | ||
cmarcelo | (=<<) w/ Identity probably is a shorthand to something "bigger and pointed".. | ||
gaal | @type flip | ||
lambdabot | forall a b c. (a -> b -> c) -> b -> a -> c | ||
gaal | say, where do I read up to understand ghc's strategy for naming type parameters? like, why a1 and not e? | 13:39 | |
cmarcelo | maybe there are someplace in the GHC Commentary. You should look there... but heard people saying that there's a klingon comment passage explaining everything, somewhere in GHC source. :o) | 13:41 | |
gaal | :) | ||
cmarcelo | ( www.scannedinavian.com/hope/entry/61 ) | ||
gaal | hehehe | 13:42 | |
cmarcelo | aren't the bots suppose to make a tinyurl and tell me the page title? | ||
gaal | they are. maybe shapr has a robots.txt? | ||
hmm. I'm wanting a version of @src that works on methods. (maybe there is one?) | 13:43 | ||
@help src | |||
lambdabot | src <id>. Display the implementation of a standard function | ||
moritz | and I guess the URL ist too short to automagically generate a tinyurl | 13:44 | |
gaal | anyway, instance Monad Identity where ... m >>= k = k (runIdentity m) | 13:45 | |
which is basically a noop | |||
13:46
iblechbot joined
|
|||
svnbot6 | r15465 | audreyt++ | * Pugs.Class: Refactor out methodsOf and classNameOf as the | 13:48 | |
r15465 | audreyt++ | two methods one would (normally) define. | |||
cmarcelo | @type flip =<< ((flip . ((.) .)) .) . flip (.) | 13:50 | |
lambdabot | forall b c a. (a -> b) -> (b -> b -> c) -> a -> a -> c | ||
audreyt | @djinn (a -> b) -> (b -> b -> c) -> a -> a -> c | 13:51 | |
lambdabot | f a b c _ = b (a c) (a c) | ||
cmarcelo | hmm, almost there, we wanted "b (a c) (a d)" (not that djinn cares). | 13:53 | |
gaal | so what monad _is_ that bind in? | ||
audreyt | the ((->)a) monad | ||
I think | |||
aka, reader monad | |||
gaal | yeah, i thought -> must have had something to do with it | ||
because of the arity voodoo | 13:54 | ||
13:54
sahadev joined
|
|||
gaal | lessee: | 13:54 | |
instance Monad ((->) r) where ... m >>= k = \r -> k (m r) r | 13:55 | ||
audreyt | instance Monad ((->) a) where return = const m >>= k = \r -> (k (m r)) r | ||
you beat me to it :) | |||
gaal | that's a first :) | 13:56 | |
audreyt | :D | ||
my excuse is that I'm half lost in Lost | |||
13:56
jonh joined
|
|||
audreyt | so I'm refactoring "..." so it can subsume "!!!" | 13:56 | |
and also represent n-ary (n>1) functions | 13:57 | ||
cmarcelo curious to see how.. | |||
audreyt | oh, trivial | ||
(...) x y = (cast x, cast y) | |||
:D | |||
gaal | audreyt is susceptible to kate and sawyer, heh | ||
audreyt | dunno, I just started watching season 1 episode 1 | 13:58 | |
may or may not be interesting | |||
gaal | S2xE1's really good but only if you endure S1 :) | ||
audreyt | ok... | 13:59 | |
gaal | I don't get how that (...) thing works | ||
oh, again with the (->)? | |||
audreyt | type MethodPrim a = (a -> [:Val:] -> Eval Val) | ||
(...) :: (Boxable b, ((:>:) (MethodPrim b)) a) => String -> a -> (ID, MethodPrim b) | |||
yeah, basically you write cast instances from functions to the uniform MethodPrim | 14:00 | ||
instance ((:>:) MethodPrim) Val where cast x = const . const . return -- constant function | |||
gaal | ooh I wonder if there's a way to dynamically moose pugstypes through lambdabot! | ||
audreyt | mm that's a thought | 14:01 | |
gaal | let bardger = const in badger . badger . return | 14:02 | |
s/r// | 14:03 | ||
fglock looks around for little things to do | 14:08 | ||
lambdabot | fglock: You have 2 new messages. '/msg lambdabot @messages' to read them. | ||
audreyt | fglock: fix the two regex breakage? | 14:09 | |
looping at capture.t and exhaustive.t (look for the one after skip_all) | |||
fglock | audreyt: looking | 14:10 | |
does pugs use PERL5LIB when looking for PCR? | 14:12 | ||
14:13
weinig_ is now known as weinig|away
|
|||
audreyt | fglock: no, it hardwires path | 14:14 | |
perl5/.../ when noninstalled | |||
fglock | ok | ||
cmarcelo | in Pugs.Internals.Cast: (a :>: b) or "((:>:) a) b" is intended to *mean* that b can be seen as "subtype" of a, right? | 14:15 | |
audreyt | yes | 14:16 | |
as is the standard notation | |||
"cast" is widening cast, or "upcast" | |||
it must not lose information | |||
cmarcelo | k | 14:18 | |
14:18
aukjan is now known as aukjan|gone,
aukjan|gone is now known as aukjan
|
|||
svnbot6 | r15466 | audreyt++ | * Pugs.Internals.Cast: The "cast = return . cast" instance is too | 14:21 | |
r15466 | audreyt++ | dangerous as it crosses kinds (from (a -> b) to (a -> m b)), | |||
r15466 | audreyt++ | which can lead to surprising bugs, so we nix it for now. | |||
r15467 | audreyt++ | * Adjust the "return . cast" as needed. | 14:24 | ||
gaal | huh: | 14:28 | |
@kind m a | |||
lambdabot | Not in scope: type variable `m' | ||
<interactive>:1:2: Not in scope: type variable `a' | |||
gaal | hey, another labmdabot died when I tried that | ||
cmarcelo | @help kind | ||
lambdabot | kind <type>. Return the kind of a type | ||
cmarcelo | @kind a | 14:29 | |
lambdabot | Not in scope: type variable `a' | ||
cmarcelo | @kind forall a. a | ||
gaal | @find forall a . a | ||
lambdabot | * | ||
gaal | er | ||
hehe. | |||
cmarcelo | @kind forall a. (Monad m) => m a | ||
lambdabot | Not in scope: type variable `m' | ||
<interactive>:1:23: Not in scope: type variable `m' | |||
cmarcelo | @kind forall a m. (Monad m) => m a | 14:30 | |
gaal | quanitfy m too | ||
lambdabot | * | ||
cmarcelo | @kind forall m. (Monad m) => m | ||
lambdabot | `m' is not applied to enough type arguments | ||
Expected kind `*', but `m' has kind `* -> *' | |||
xerox | gaal: check out `on` in GHC 6.7 | ||
gaal | url? | ||
cmarcelo | @kind Monad | 14:31 | |
lambdabot | Class `Monad' used as a type | ||
xerox | on f g x y -> g x `f` g y | ||
?type let on f g x y -> g x `f` g y in comparing `on` fst | |||
lambdabot | parse error on input `->' | ||
xerox | ?type let on f g x y = g x `f` g y in comparing `on` fst | ||
lambdabot | Occurs check: cannot construct the infinite type: b = b -> a | ||
Probable cause: `comparing' is applied to too few arguments | |||
xerox | Auhm. | ||
?type let on f g x y = g x `f` g y in compare `on` fst | 14:32 | ||
lambdabot | forall a b. (Ord a) => (a, b) -> (a, b) -> Ordering | ||
gaal | are the docs for 6.7 online? | ||
oh found them | |||
haskell.org/ghc/dist/current/docs/ | |||
xerox | docs/latest ? | 14:33 | |
lambdabot | Title: GHC Documentation | ||
audreyt | haskell.org/ghc/docs/latest/html/li...index.html | ||
xerox | ah, current. | ||
14:33
Psyche^ joined
|
|||
gaal | oh! haha, all right, I understand what you were telling me now. :) | 14:34 | |
thanks | 14:35 | ||
xerox | ^_^ | ||
cmarcelo | gaal: on = delegate | ||
fglock | re regex breakage: it's an old bug, infinite loop on '<null><null>' - I'll try to fix it | ||
audreyt | fglock: but it only started croaking after your recent PCR checkin... | ||
fglock | mm - that was just a grammar update | 14:37 | |
gaal | shower& | ||
audreyt | fg | 14:38 | |
oops | |||
14:44
CardinalNumber joined
|
|||
svnbot6 | r15468 | audreyt++ | * Pugs.Instead.Cast: Instead of allowing random Functors, | 14:44 | |
r15468 | audreyt++ | explicitly list [a] and [:a:] as the things that can | |||
r15468 | audreyt++ | be implciitly mapcasted. | |||
14:45
Psyche^ is now known as Patterner
14:46
vel joined
|
|||
svnbot6 | r15469 | audreyt++ | * Adjust cast invocations as needed. | 14:46 | |
fglock | what is the proper syntax to get a previous revision? I was trying: svk checkout -r 15450 perl5/Pugs-Compiler-Rule | 14:49 | |
clkao | up -r | ||
fglock | thank | ||
thanks | |||
jamessan | probably better to use merge | 14:50 | |
I'm not sure if svn's up -r has the same problems as CVS' | |||
14:50
statico joined
|
|||
audreyt | svk's doesn't :) | 14:53 | |
jamessan | does svn even have a concept of sticky tags? | ||
I'd assume not, but I'm not as well versed in svn as I should be | 14:54 | ||
args | no, there are no sticky tags in sv[nk] | 14:55 | |
that's a feature :) | |||
allbery_b | sticky tags make sticky messes :) | 14:56 | |
jamessan | agreed | 14:57 | |
gaal | remoose | ||
"Pugs.Instead.Cast"? | 14:59 | ||
Internals of allowing random Functors... | |||
15:01
CardinalNumber is now known as ProperNoun
|
|||
audreyt | heh | 15:02 | |
15:14
rindolf joined
15:23
thepler joined
15:34
the_dormant joined,
fglock joined
|
|||
devbot6 | dev: Ticket #3 (task updated): Capture fglock/putter interview info to kp6 faq. <dev.pugscode.org/ticket/3#comment:1> | 15:55 | |
svnbot6 | r15470 | fglock++ | PCR - worked around a bug in regex backtracking, that prevented pugs tests capture.t and exhaustive.t from finishing | 16:00 | |
allbery_b | yay | ||
16:03
aukjan is now known as aukjan|gone
16:04
amnesiac joined
|
|||
audreyt | hm, annoying comment spam again | 16:05 | |
audreyt sighs and locks down ticket_comment priv | |||
devbot6 | dev: Ticket #21 (task reopened): alarm-based timeout support for "make smoke" <dev.pugscode.org/ticket/21#comment:2> | 16:07 | |
rindolf | audreyt: my site got link-spammed, and it was static HTML pages. | 16:08 | |
So someone compromised it. | |||
moritz | pwnd | ||
rindolf: did you find out how it wwas done? | 16:09 | ||
16:10
Psyche^ joined
|
|||
rindolf | moritz: well, all the pages were changed roughly one after the other so it was a script. | 16:10 | |
moritz: but no, I don't know how the server was compromised. | |||
moritz: I had a very long password there. | 16:11 | ||
I also had autorised some SSH public keys. | |||
moritz | rindolf: do you have your own server? or hosted somewhere? | ||
rindolf | moritz: it's hosted. | ||
audreyt | s/t// | ||
moritz | rindolf: ok, so it might have been a leak at the hoster | 16:12 | |
rindolf | moritz: possibly. | ||
16:13
[particle] joined
|
|||
svnbot6 | r15471 | audreyt++ | * Pugs.Class: Finish the Very Flexible (...) construction | 16:18 | |
r15471 | audreyt++ | via the new IsPrim class, so all sorts of functions can | |||
r15471 | audreyt++ | be promoted to methods. | |||
16:21
kanru joined,
Psyche^ is now known as Patterner
|
|||
specbot6 | r14309 | audreyt++ | * S05: Minor fixup for this sentence no verb. | 16:25 | |
gaal | why is the type annotation needed in instanceMethods :: [(ID, MethodPrim a)] ? | 16:28 | |
audreyt | it's a class method | 16:29 | |
the body is optional, the type not | |||
I just reread (and recommitted) S12, and discoverd that HOW/WHAT/WHICH/ITEM/LIST etc are not actually methods | 16:30 | ||
specbot6 | r14310 | audreyt++ | * S12: Clarify that VAR(1) and VAR(@foo) are simply no-ops; | ||
r14310 | audreyt++ | i.e., it applies to thiings other than Scalars, too. | |||
r14310 | audreyt++ | Also fixed the postfix macro name and nomenclature | |||
r14310 | audreyt++ | around .VAR. | |||
audreyt | so they need to become new Boxable clsmeths in Hs-land | ||
this is good; I was worrying about Meta.Perl5's interception of .HOW calls to p5 land | |||
gaal | what does Is mean in IsMethodPrim ? | 16:31 | |
16:31
chris2 joined
|
|||
gaal | about the type annotation, I was asking why doesn't the inferencer deduce it itself | 16:32 | |
audreyt | TimToady++ # brilliant use of those interrogative adverbs | ||
gaal: you can't omit type annotations in class methods! | |||
class Foo a where f = [] | |||
is ill-formed :) | |||
TimToady_ | :D | ||
it occurred to me this morning that longest-token matching is basically just transaction support for :ratchet. :) | 16:33 | ||
gaal | oh, because a is parametric... | ||
okay... and abut that Is thing? | 16:34 | ||
audreyt | it means "is subtype of" and means "can be casted to" | 16:36 | |
gaal | like the "able" in Boxable? | 16:37 | |
audreyt | yeah | ||
MethodPrimable? | |||
Methodable? | 16:38 | ||
gaal | we used either C or I for classes earlier.. I forger | ||
s:last/r/t/ | |||
I, in ICoercible | 16:39 | ||
but there was the -ible there too | |||
reason I don't like IsMethodPrim is that hey, if it *is* a Prim, why do you need to call *asPrim* on it? | 16:40 | ||
@index !: | |||
lambdabot | bzzt | ||
gaal | @index (!:) | ||
lambdabot | bzzt | ||
gaal | what's (args !: 0) ? | 16:41 | |
cmarcelo | gaal: (!:) is like !! for pArrs, AFAIK there's no haddock in the web because haddock isn't ready for this syntax.. | ||
audreyt | gaal: sure, please change to *able or something... | ||
what cmarcelo said, yes | |||
gaal | oh right, ":" is a mnemonic for "..." | 16:42 | |
as in, the docs fall short | 16:43 | ||
audreyt | heh | ||
gaal | Looking for an English expression meaning Prime-ready. | ||
or Prim-ready rather | 16:44 | ||
cmarcelo | what's the #ifdef to target 6.6 release (not targetting 6.7+)? (/me wants to include `on` combinator...) | ||
TimToady_ | Er, "Primready"? | ||
audreyt | cmarcelo: #if __GLASGOW_HASKELL__ == 606 | 16:45 | |
16:45
GabrielVieira2 joined
|
|||
gaal | #if __GLASGOW_HASKELL__ | 16:46 | |
primprime | |||
-d | |||
ok, simply Primable's probably best | 16:48 | ||
16:49
Alias_ joined
|
|||
Alias_ | audreyt: ping... | 16:49 | |
When you read me email I just sent, poke me | 16:50 | ||
audreyt | pong | ||
url to your svn? | |||
Alias_ | All of it or just M:I? | 16:52 | |
audreyt | mi | ||
Alias_ | svn.phase-n.com/svn/cpan/trunk/Module-Install/ | ||
audreyt | and do I have a commit bit? | 16:53 | |
Alias_ | I imagine so | 16:54 | |
audreyt | k, syncing. | ||
Alias_ | checking... | ||
wow, actually, apparently you don't | |||
Wonder how you managed to go so long without one | |||
Adding [email@hidden.address] | 16:55 | ||
audreyt | thanks | ||
Alias_ | I finally realise why your module count has been dropping so much :) | ||
<-- thick | 16:56 | ||
agentzh | autrijus != audreyt? | ||
cmarcelo | the #if is causing a lexical error in 'make soon'... :P | ||
Alias_ | New user EMail sent to [email@hidden.address] | 16:57 | |
audreyt | danke | ||
Alias_ | agentzh: www.thegestalt.org/simon/perl/wholecpan.html | ||
lambdabot | Title: CPAN Leaderboard | ||
audreyt | agentzh: autrijus =:= audreyt | ||
Alias_ | Because the leaderboard doesn't fold the two | ||
agentzh | audreyt: :) | ||
Alias_ | So autrijus module count falling gradually as audreyt count rises | 16:58 | |
agentzh | i gathered so :) | ||
audreyt | it's better that way :) | ||
Alias_ | audreyt: You probably should rerelease a bunch of modules to fix that (and mostly to upgrade Module::Install) | ||
audreyt | I'd hate to release things just because of name change | ||
well, upgrade M::I is a good reason | |||
Alias_ nods | |||
Check with the CPANTS data to see which ones actually need it | |||
audreyt | actually since you have only one commit in your M-I | 16:59 | |
why don't you take the tarball I sent to tels and reapply the commit locally? | |||
easiest that way | |||
Alias_ | uh | ||
audreyt | and then I'll nuke the openfoundry one and leave a note there to tell people to switch to phase-n | ||
Alias_ | OR... I could just use a merge tool to resolve it | ||
(Araxis Merge)++ | 17:00 | ||
audreyt | yup. the best one so far I've seen | ||
agentzh | audreyt: any plan to add more POD to M::I? | ||
Alias_ | agentzh: Alas, that was kind of my job :( | ||
audreyt | agentzh: why, yes. meet Alias_, he'll hand you a commit bit to M::I | ||
agentzh | i've been learning M::I by real examples, such as Jifty's Makefile.PL and pugs' | ||
audreyt | and then you can add PODs into it :) | ||
Alias_ | Initially it was my job to document M:I | ||
agentzh | :D | ||
Alias_ | Unfortunately, that involved reading the source code | ||
audreyt | Alias_: meet agentzh, his cpan it is AGENT | 17:01 | |
*id | |||
Alias_ | New user EMail sent to [email@hidden.address] | ||
You now have commit to everything I've ever written on CPAN | |||
HAVE A NICE DAY :) | 17:02 | ||
agentzh | received :) | ||
thanks! | |||
Alias: wow | |||
audreyt | CPAN: The Trust Matrix | ||
agentzh needs to be very very careful :) | |||
Alias_ | Inspired by Audrey, but with a few more sanity checks before getting the bit, but much more power afterwards :) | 17:03 | |
agentzh | i'll add some POD to M::I once I've got my own modules released. :) | 17:04 | |
err, that's Makefile::DOM which is based on PPI. :) | |||
Alias_ | suuure you will :) | ||
You'll try to, and then get annoyed at bugs and start hacking on M:I instead | 17:05 | ||
cmarcelo | (for the logs, I was missing a GHC_OPTION -cpp in the .hs file) | ||
agentzh | Alias: right | ||
Alias_ | audreyt: So what are the new commands? | ||
audreyt | Alias_: see ChangeLog | 17:06 | |
Alias_ | I hate this installdirs concept | 17:08 | |
svnbot6 | r15472 | cmarcelo++ | * MO: Added the `on` combinator to simplify delegation of functions | ||
r15472 | cmarcelo++ | like (==) and `compare` to 'parts' of a datatype. Stoled the GHC 6.7 | |||
r15472 | cmarcelo++ | implementation pointed by xerox++ after an idea from gaal++. | |||
Alias_ | Never makes any sense | ||
xerox | ++ \o/ | ||
audreyt | Alias_: at least we eliminated the string constant which I find very very annoying | ||
Alias_ | I'm not a huge fan of the replacement though | 17:09 | |
gaal | what, flip =<< ((flip . ((.) .)) .) . flip (.) wasn't good enough for you? | ||
audreyt | but I agree, this whole core/site/vendor hack is not exactly intuitive | ||
Alias_ | install_dirs_site? | ||
Why not just install_site | |||
audreyt | becaus install_perl reads yucky | ||
Alias_ | huh? | ||
install_core, install_site, install_vendor | 17:10 | ||
audreyt | but the key was 'perl' | ||
not 'core' | |||
Alias_ | oh | ||
audreyt | again, I wished it was "core" | ||
Alias_ | right, ew | ||
what does it do exactly | |||
cmarcelo | gaal: looked too much like lisp, so I dropped :) | ||
Alias_ | core means a cpan module installs over the top of existing core module | ||
audreyt | with install_site_perl it installs to C:\Perl\lib | 17:11 | |
Alias_ | What's site vs vendor | ||
audreyt | er, install_dirs_perl | ||
17:11
GabrielVieira2 is now known as GabrielVieira
|
|||
audreyt | there's no difference on win32 | 17:11 | |
Alias_ | Well, conceptually ... | ||
core == core, perl == cpan, vendor == darkpan? | |||
audreyt | perl = core, site = cpan, vendor = debian/freebsd/whatnot | 17:12 | |
gaal | cmarcelo: yeah you could tell I was only kidding :) | ||
audreyt | TimToady_: currently, aside from the VAR macro which does absolutely nothing (it merely cancels rvaluization), we have: | 17:14 | |
svnbot6 | r15473 | audreyt++ | * MO.Run: Drop the unused (and generally impossible to satisfy) | ||
r15473 | audreyt++ | toNameList for Responder before we go ahead and add several | |||
r15473 | audreyt++ | magical macros. | |||
Alias_ | hrm | ||
So could we make up our own scheme? :/ | |||
audreyt | WHO/WHAT/WHICH/WHERE/HOW | ||
Alias_ | core_module | ||
cpan_module | |||
vendor_module | |||
audreyt | Alias_: but vendor_module doesn't quite make sense :/ | ||
audreyt ponders | |||
install_as_core | |||
Alias_ | core_distribution | ||
ya | |||
install_as_core | 17:15 | ||
install_as_cpan|site | |||
install_as_vendor | |||
audreyt | yeah. good enough | ||
Alias_ | ok | ||
audreyt | maybe simply expose install_as_core... | ||
and install_as_vendor | |||
site is default anyway | |||
so install_as_cpan/install_as_site is redundant, maybe | |||
Alias_ | Well, that's IT's default | ||
I've been pondering the idea of fixing this license problem | 17:16 | ||
cmarcelo | gaal: yup, I was only joking on top of a joke (not a very translat_able_ fun sometimes).. | ||
Alias_ | By defaulting license to "proprietary" | ||
audreyt | TimToady_: anyway, I'm thinking about two more magicals, ITEM and LIST, for the two rvalue variants | ||
Alias_ | So that PAUSE can catch them | ||
Then M:I could catch that there's a clash between the license and the install_as | 17:17 | ||
audreyt | TimToady_: do you think we need more magical macros along that line? ruby has a magical to_s (would be spelled STR here) | ||
Alias_ | BTW, I dunno if that whole XX thing is hanging around, but it made be shudder a bit | 17:18 | |
s/be/me/ | |||
audreyt | TimToady_: or are there objects that just can't stringify, such that when you say "foo $obj bar" it dies? | ||
agentzh | Alias: why not default to the "perl" license? | ||
Alias_ | Because if we can't detect a license, it means the code probably has NO license | 17:19 | |
And that's a big big problem on the CPAN | |||
agentzh | hmm | ||
audreyt | currently we warn... | ||
bbiab food | 17:20 | ||
agentzh | i like such warnings | ||
Alias_ | I dislike code making it to CPAN without licenses | ||
Causes many many hours of pain for CPAN admins | |||
I'd like to warn "No license found, defaulting to 'proprietary'" | |||
agentzh wonders if it's 1:20 AM for audreyt's timezone. | |||
Alias_ | or hell, "none" | ||
agentzh | Alias_: agreed | 17:21 | |
Alias_ | in which case it's perfectly sane for PAUSE to bitch "I'm not legally allowed to take that code" | ||
agentzh | lol | ||
Alias_ | Which is the ultimate point in the end | ||
Making the uploader do some non-stupid license-based rejections | |||
agentzh | that would be very interesting | 17:22 | |
Alias_ | audreyt: I don't see a preop implementation in your code | ||
oh wait, yes I do | 17:23 | ||
Must have grabbed the code before you added the Changes entry | |||
agentzh: As it is I add C< license 'proprietary'; > to all my commercial modules | 17:24 | ||
That way it's quite clear it's not for use anywhere else | |||
agentzh | hey | 17:26 | |
agentzh is hungry too. | 17:27 | ||
Alias_ | ? | ||
ya, me too | |||
Cue the Hunger Cascade | |||
agentzh | hehe. I can't follow Audrey time and have to go to sleep... | 17:29 | |
1:30 AM already | |||
Alias_ | 4:28am here | 17:30 | |
But then I got up at 7:30pm | |||
agentzh | wow... | ||
gaal | what Snn is context discussed in? S06 has this and I'm wondering if it's a fossil: | ||
much like an array would be, that is, as a scalar in scalar context, and as a | |||
list in list context. | |||
(is there still "scalar" context?) | 17:31 | ||
17:32
agentzh left
|
|||
Alias_ | agentzh: Oh man, I just discovered "Human and Machine"... you use Windows Live Space? :/ | 17:37 | |
aaaaand he's left | |||
heh, Makefile::DOM looks awfully familiar | 17:40 | ||
audreyt | xerox: wow, (*) can be used as identifier in patterns... | 17:43 | |
xerox | > let x * 2 = 42 in 0 * 2 | 17:44 | |
lambdabot | 42 | ||
audreyt | > let (*) + (/) = 1 * 2 / 3 in (-) + (-) | 17:45 | |
lambdabot | -4 | ||
audreyt | I was referring to this | ||
Alias_ | dear god that's scary | ||
xerox | :O | ||
It _is_. | |||
audreyt | consistency, when executed carefully and successfully, results in great horror... | 17:46 | |
17:47
macli joined
|
|||
Alias_ | indeed | 17:48 | |
gaal | what is that, some kind of argument against Kant? | ||
xerox chomps chili chocolate | 17:49 | ||
moritz | gaal: againts mathematics | 17:50 | |
gaal: mathematics is scary as well ;) | |||
gaal | let enough = enough in enough | 17:51 | |
> let enough = enough in enough | |||
lambdabot | Exception: <<loop>> | ||
svnbot6 | r15474 | audreyt++ | * MO.Util: `on` doesn't really need #ifdef, since we don't | 17:52 | |
r15474 | audreyt++ | import Data.Function anyway. ;) unbreak 6.7 | |||
xerox | ^_^ | 17:53 | |
gaal | oh, I'da thought it'd be added to the prelude... *looks at Data.Function for sick ideas* | ||
cmarcelo | audreyt: 'fix' is in Data.Function, so I thought maybe we would need sometime.. 6.7 was broking even with #if ? | 17:54 | |
audreyt | there's only fix and on | ||
cmarcelo: the #if broke it | |||
cmarcelo: we got fix from Control.Monad.Fix | |||
so we can define on locally | |||
at least till 6.8 | |||
cmarcelo | how? __GLASGOW* == 606 for 607? | 17:55 | |
audreyt | no | ||
see, `on` is not in 607 prelude | |||
cmarcelo | oh, we didn't import D.Function | ||
audreyt | ayeaye | ||
but we don't really need to | |||
cmarcelo | I see :) | ||
audreyt | local def is just as good :) | ||
audreyt avoids -cpp whenever possible | |||
gaal | -favoid-cpp | 17:56 | |
cmarcelo | k | ||
xerox | > fix (\swim xs -> case xs of (x:[]) -> x; (_:ys) -> swim ys) [1..100] | ||
lambdabot | 100 | ||
Alias_ | It scares me I have no idea what I'm looking at | 17:57 | |
(with those lamdabot samples) | |||
xerox | One can go crazy with those. | 17:58 | |
Alias_ | audreyt: ok, releasing M:I 0.65 | ||
gaal | Alias_: xerox was providing an interesting implementation of @list[-1] using anonymous recursion | ||
17:59
theorb is now known as theorbtwo
|
|||
Alias_ | now you've told me, I still don't see what it means :) | 17:59 | |
but ok | |||
Module::Install is done | |||
xerox | Alias_: it's fun, because it's a direct reification of how you would write |last| toplevel | ||
gaal | Alias_: "fix" lets mooses a Code so that it gets an extra parameter -- its own coderef | ||
Alias_ | "lets mooses" ? | ||
gaal | s/lets// | 18:00 | |
Alias_ | You realise that makes even less sense than the actual thing :) | ||
gaal | uh.. okok | ||
look at this p5 code: | |||
xerox | Alias_: you know how to define map? | ||
gaal: you explain Haskell with p5?! (: | |||
18:00
xinming_ joined
|
|||
Alias_ | sub map {&@} { ... } right | 18:00 | |
er (..) | |||
but yes | |||
audreyt | Alias_: well... let's see | ||
?eval { (@$_ == 1) ?? $_[0] !! &?BLOCK($_[1..*]) }([1..100]) | |||
18:00
evalbot_r15447 is now known as evalbot_r15464
|
|||
evalbot_r15464 | \100 | 18:00 | |
xerox | :O | 18:01 | |
gaal | my $closure; $closure = { blah..... ; $closure->(); .... } | ||
audreyt | see, we don't even _need_ fix | ||
xerox | ....wait it's simple. | ||
?src map | |||
lambdabot | map _ [] = [] | ||
map f (x:xs) = f x : map f xs | |||
gaal | interestingly the following does NOT work in p5: | ||
my $closure = { blah..... ; $closure->(); .... } | |||
Alias_ gets audrey's version | |||
So it's just a VERY inefficient way of doing it :) | |||
audreyt | yeah :) | ||
xerox | > fix (\map f xs -> case xs of [] -> []; (x:xs) -> f x : map f xs) (^2) [1..5] | 18:02 | |
lambdabot | [1,4,9,16,25] | ||
18:02
andara left
|
|||
xerox | you see it's identical to the other definition? | 18:02 | |
gaal | so now suppose you had a combinator -- that's "function that modifies functions and returns the modified version" -- | ||
that wraps a closure in such a way that it has itself as a reference | |||
sure, you can say "&?BLOCK" in Perl 6, but not in p5 | 18:03 | ||
so take audreyt's example: { (@$_ == 2) ?? $_[1] !! $_[0]($_[1..*]) }([1..100]) | 18:04 | ||
I just unshifted this magical self thing | |||
[particle] considers using himself as a reference in a search for programming jobs | 18:05 | ||
gaal | actually I need to fix it up so that the inside call remains consistent: { (@$_ == 2) ?? $_[1] !! $_[0]($_[0], $_[1..*]) }([1..100]) | ||
audreyt | [particle]: Circular, Inc. would hire you | 18:06 | |
ingy dereferences [particle] | |||
[particle] | but i already work there! | ||
gaal | only problem they's ask you to pay your own salary | ||
audreyt | but that's a feature! | ||
gaal | so, "fix", aslo known as "the Y combinator" and other names, does that | ||
never mind its haskell implementation, which *is* kinda spooky | 18:07 | ||
in fact never mind its implementation at all | |||
or rather, sure, mind it, but not necessarily now | |||
because to use it effectively you don't need to necessarily know its implementation | |||
18:08
fridim joined
|
|||
gaal | Alias_: so audreyt and I both had occasion to use this recently in pugs | 18:08 | |
xerox | ?src fix | ||
lambdabot | fix f = let x = f x in x | ||
xerox | yes? | ||
gaal | I wanted to refactor something that creates classes | 18:09 | |
basically there was a function | |||
audreyt | sub Y (&) { my $rec = shift; my $sub; $sub = my $tmp = sub { $rec->($sub)->(@_) }; weaken($sub); $tmp } | ||
svnbot6 | r15475 | moritz++ | eval()ed test in t/builtins/math/sqrt.t that doesn't compile | ||
audreyt | is a p5 implementation that (should) work | ||
gaal | mkClass "Str" [ ("reverse", sub {....implementation of reverse}), ("split", sub {...}), ... ] | 18:10 | |
Alias_: only thing is, that like any class, Str wants to have methods like HOW, WHAT, WHICH | |||
so mkClass needs to add these methods to the list at the caller site | 18:11 | ||
now, the implementations of WHAT and HOW are actually recursive! | 18:12 | ||
that is, Str's HOW should return the Str class (that's how the metamodel is accessed in Perl 6) | |||
but the Str (meta)class is precisely the thing being defined when I say C<< mkClass "Str" [...] >> | 18:13 | ||
audreyt | Alias_: for a nonhaskelly explanation see use.perl.org/~Aristotle/journal/30896 | ||
lambdabot | Title: Journal of Aristotle (5147) | ||
gaal | MJD used to have a talk online about this, too, but I don't know if it's still accessible. | 18:14 | |
18:14
marmic joined
18:17
dec_ joined
18:21
mr_ank joined
|
|||
svnbot6 | r15476 | moritz++ | replaced parsefails with flunk("FIXME parsefail") in smartmatch tests | 18:24 | |
r15477 | audreyt++ | * Instead of inventing a complicated "special dispatch" for | 18:26 | ||
r15477 | audreyt++ | super-magical pseudomethods like WHO/WHICH/ITEM/LIST, we | |||
r15477 | audreyt++ | for now use the very convenient, very pythonesque treatment | |||
r15477 | audreyt++ | of simply calling special method names like __WHO__, __WHICH__, | |||
r15477 | audreyt++ | etc and hope that nobody mucks with them. ;) | |||
gaal | is that need? S12 mentions $o."WHERE" if you really need a method of that name, and that the METAS are macros | 18:27 | |
*needed | |||
but I'm zonked for today... see y'all tomorrow & | |||
audreyt | gaal: right, question is what does the macro translate to | 18:31 | |
svnbot6 | r15478 | gaal++ | * rename IsMethodPrim to MethodPrimable | ||
audreyt | and I chose for now to translate it to ."__WHERE__" | ||
because it's simplest :) | |||
but it's just implementation detail... | |||
zgh | whoa... python flashback | ||
well no then it would be lower case... | |||
18:32
dduncan joined
|
|||
audreyt | see changelog: "very convenient, very pythonesque" | 18:32 | |
zgh | hehe | ||
audreyt | but I need to sleep too :) | ||
bbl, more tomorrow... & | |||
gaal | __HERE_BE_PYTHONS__WHERE__HERE_BE_PYTHONS__ | ||
audreyt | lol | ||
Alias_ | :) | ||
fglock | re Y combinator: this makes me feel better about kp6 unreadability | ||
zgh | that explanation made my eyes glaze over... | 18:37 | |
18:37
_Orco_ joined
|
|||
Daveman | WHENCE | 18:38 | |
18:44
justatheory joined
|
|||
offby1 | hence, thence. | 18:51 | |
svnbot6 | r15479 | cmarcelo++ | * MO: Some comments, a little overview (in MO.Run), and some | ||
r15479 | cmarcelo++ | code reordering. Review and corrections are *very* welcome. | |||
cmarcelo | (bbiab &) | 18:52 | |
18:58
drupek12 joined
19:14
larsen_ joined
19:17
wilx joined
19:19
araujo joined
19:26
polettix joined
19:39
rindolf joined
|
|||
rindolf | Hi all. | 19:39 | |
Can you guys please svn checkout svn.perl.org/modules/XML-RSS/trunk/ and then do perl Makefile.PL; HARNESS_PERL_SWITCHES="-MDevel::Cover" make test; ? | |||
lambdabot | Title: Revision 9211: /XML-RSS/trunk | ||
rindolf | Devel::Cover reports coverage for the DateTime::Format modules. | 19:40 | |
For me at least. | |||
moritz is co'ing | |||
rindolf | perl-Devel-Cover-0.61-1mdv2007.1 | 19:41 | |
moritz: thanks. | |||
moritz | rindolf: Warning: prerequisite DateTime::Format::Mail 0 not found. | ||
rindolf: should I ignore these? | 19:42 | ||
rindolf | moritz: you need to install it. | ||
moritz: no, you need it. | |||
moritz | *installing* | 19:43 | |
rindolf | moritz: thanks. | 19:45 | |
moritz | at least the prerequisites are available as .debs ;) | ||
19:46
IllvilJa joined
|
|||
moritz | rindolf: any other dependencies that I should know of? | 19:46 | |
rindolf: the tests can't find Devel::Cover and therefore fail | 19:47 | ||
19:48
araujo joined
|
|||
moritz | rindolf: and after installing Devel::Cover: All tests successful, 4 tests skipped | 19:51 | |
19:55
jrockway joined
|
|||
jrockway | hey, what's the status of feed operators in pugs? | 19:56 | |
i was thinking about it a while ago, and it seems like they can be implemented in perl as infix operators | |||
am i missing something? | 19:57 | ||
allbery_b | have you checked Perl-6.0.0-STD yet? | ||
20:01
GabrielVieira2 joined
|
|||
jrockway | nope, nor do i know what that is :( | 20:06 | |
20:06
jisom joined
20:07
fridim joined
20:08
jisom left,
jisom joined
|
|||
allbery_b | lwall's been creating the formal description for perl6.0.0 in Perl-6.0.0-STD.pm, which you'll find in the pugs distribution tree. | 20:10 | |
consider that the final word on how things are going to be parsed | |||
moritz | allbery_b: so will it be really used some day? | 20:11 | |
svnbot6 | r15480 | fglock++ | PCR - added failing test (from pugs capture.t) | ||
allbery_b | I believe the intent is that that will be loaded in response to "use v6;" to define the "standard" perl 6.0.0 language, yes | 20:12 | |
right now the implementations are all stubs, but the parse information should be there for most stuff | |||
i.e. what syntactic and/or semantic class things belong to | 20:13 | ||
moritz | I'll take a look ;) | 20:16 | |
rindolf | moritz: I found out what my problem was - I had stale .pm files under site_perl. | ||
moritz | rindolf: ok ;) | 20:19 | |
21:00
GabrielVieira2 is now known as GabrielVieira
21:02
[particle] joined
21:10
Minidin joined
21:13
Aankhen`` joined
21:23
marmic joined
21:43
awwaiid_ joined
21:47
Roman_ joined
21:58
nwc10 joined
22:17
gnuvince_ joined
22:29
Minidin joined
22:38
amnesiac joined,
Psyche^ joined
22:44
the_dormant joined
22:49
cognominal joined
22:53
Psyche^ is now known as Patterner
22:55
explorer joined
22:57
rodi joined
23:06
weinig|away joined
23:17
IllvilJa left
23:21
Limbic_Region joined
23:30
ayrnieu joined
23:58
mdiep joined
|