|
Run Perl6 Now! | pugscode.org ('Overview', 'Journal') | pugs.kwiki.org | channel log: xrl.us/e98m Set by autrijus on 6 March 2005. |
|||
| theorbtwo | & | 00:16 | |
| dan2 | where can I get a copy of the perl6 distribution | 00:30 | |
| safrican | well its not yet fully completed | 00:31 | |
| but i think Perl6::Bundle | |||
| dan2 | and pugs? | ||
| safrican | or Bundle::Perl6 should be good enough | ||
| Steve_p | There is no Perl 6 yet | 00:34 | |
| pugs is an initial implementation of Perl 6 | |||
| Limbic_Region | dan2 - to explain a bit further Perl6::Bundle is Perl5 that looks/feels like Perl6 | 00:36 | |
| Pugs is an implementation of Perl6 in Haskell, but is as of yet uncomplete | |||
| but given that Perl6 is still not fully spec'd, it is simply amazing | 00:37 | ||
| safrican | Perl6::Bundle is what I use | 00:38 | |
| :P | 02:46 | ||
| sorry | |||
| my irssi got messed up | 02:47 | ||
| ingy | hola all | 03:40 | |
| Steve_p | Hey ingy | 03:57 | |
| ingy | hi Steve_p | 03:58 | |
|
05:25
mandarin is now known as Qiang
|
|||
| gugod | hi perl6, I let my bot report the rss headlines of pugs | 06:55 | |
|
06:57
wilx` is now known as wilx
|
|||
| autrijus | \camels -> greetings | 07:29 | |
| www.perlmonks.org/index.pl?node_id=438876 made my day :) | 07:30 | ||
| autrijus ponders golf-driven development | |||
| lunch & | 07:41 | ||
| rgs | heh | 07:45 | |
| when perl 6 attracts golfers, you know the advocacy case is being won. | |||
| b6s | web.media.mit.edu/~hugo/publication...etafor.pdf #visualizing stories as code | 07:56 | |
| Khisanth | hrm something odd seems to be going on with Perl6::Pugs metadata | 08:00 | |
| autrijus | back | 08:55 | |
| Khisanth: mm? | |||
| lwall++ # detailed response | 08:58 | ||
| I wish I had access to that info when I started writing Parser.hs ;) | |||
| (p6c) | |||
| down to 1 test file failing. | 09:40 | ||
| autrijus fixing that | |||
| Aankhen`` cheers for autrijus. | |||
| autrijus | =) | 09:41 | |
| 6.0.11 looks in pretty good shape! | |||
| the mad Andrew Savige is now a committer! | 09:47 | ||
| autrijus praises golf-driven development | 09:48 | ||
| ||= etc works. | 10:13 | ||
| theorbtwo | Yey! | 10:14 | |
| autrijus | now I wonder if all infix symbol op automatically has a "=" form. | ||
| theorbtwo | I was looking into that last night. | ||
| autrijus | or if they are hard coded. | ||
| theorbtwo | Well, they only make sense for a -> a -> a ops. | ||
| autrijus | sure. | ||
| theorbtwo: the trick in the lexer, add | into the ahead | |||
| (line 90) | 10:15 | ||
| and in Eval's Syn category add: | |||
| syn | last syn == '=' -> do | |||
| let [lhs, exp] = exps | |||
| op = "&infix:" ++ init syn | |||
| evalExp (Syn "=" [lhs, App op [lhs, exp] []]) | |||
| that's all. | |||
| theorbtwo | Aaah! | ||
| autrijus | it says basically: "when you see X xx= Y, translate it into X = X xx Y" | ||
| theorbtwo | I didn't really think of cheating like that. | ||
| autrijus | cheating is of course the best. | ||
| theorbtwo | Anyway, not all binary ops make sense with an assignment form. | 10:18 | |
| ==, the assignment form of =, for example. | |||
| autrijus | right. but it's already in the table | 10:19 | |
| so that's okay | |||
| theorbtwo | And $x =:== $y, which sets $x to true if $x and $y are bound to the same thing. | ||
| autrijus | i.e. we can set it up so it won't shadow existing stuff. | ||
| theorbtwo | Of course, something being nonsensical has never stopped perl from doing it before. | ||
| autrijus | true. | ||
| theorbtwo | Oh, along the same lines: Is @foo.=sort; parsed? | 10:20 | |
| (Equiv @foo = @foo.sort.) | |||
| autrijus | don't think so. | ||
| let me try | |||
| $foo .= 1..10; | |||
| what does this mean? | 10:21 | ||
| theorbtwo | Well, that'd mean the same as $foo.(1..10) -- which AFAIK is meaningless. | ||
| Or possibly it stringifies the list, and tries to find that as a method of $foo. | |||
| autrijus | "meaningless" ne good enough :) | ||
| write a test for .= for me? | |||
| theorbtwo | Hmm, that means I need to find a reference on it. | 10:22 | |
| Do you know an easy way to download all the Apoc, Syn, and Exg? | |||
| Why is Synopsis under t and not doc or docs? | |||
| And for that matter, why do we have both doc and docs? | |||
| autrijus | $foo .= bar(3); # what does this mean, hmm? | 10:23 | |
| theorbtwo: I don't know, ask ingy. I think it should all be docs. | |||
| but he apparently disagrees for some reason, can't remember. | |||
| theorbtwo | $foo = $foo.bar(3); | ||
| Hmm, making the <op>= parser not allow shadowing would allow for us to implement ||= directly for better performance. | 10:24 | ||
| autrijus | performance not a top concern for me | 10:25 | |
| and how will it help again? | 10:26 | ||
| theorbtwo | Hmm, you know, I'm not sure. | ||
| autrijus | .= implemented. | ||
| theorbtwo | Cool. | ||
| autrijus | committing | ||
| r597. | 10:27 | ||
| i'd appreciate a .= test | |||
| rarely nowadays did I commit something and found that there's no UNEXPECTEDLY SUCCEEDED :) | 10:28 | ||
| theorbtwo | t/op/inplace.t? | 10:29 | |
| autrijus | ok. | 10:32 | |
| bbiab & | |||
| theorbtwo | r598 -- tested; list LHS works but not scalar? | 10:40 | |
| r599 -- You forgot yourself in AUTHORS, autrijus. | 10:48 | ||
| Allo, almost-symmetric. | 10:59 | ||
| Hello, fayland. | 11:00 | ||
| fayland | hello. | 11:02 | |
| larsen | Hello. | ||
| fayland | theorbtwo: anything to say? | ||
| theorbtwo | Just saying a friendly hello. | 11:03 | |
| fayland | ya.:) | 11:04 | |
| theorbtwo | Hmm, Mr. Muskrat on PM is having problems installing with GHC 6.4 | 11:12 | |
| Yep, and downgrading to 6.2.2 made it work for him. | 11:15 | ||
| jabbot | pugs - 599 - Um, Autrijus, you forgot yourself... | 11:34 | |
| pugs - 598 - Test .= inplace modification operator | |||
| pugs - 597 - .= implemented | |||
| pugs - 596 - * ||= and //= etc now works; list as LHS | |||
| metaperl | sub foo { return "$?CALLER::POSITION" } | 11:38 | |
| what does $? indicate | |||
| the question mark confuses me | |||
| theorbtwo | The bit between the $ and the name proper is called a secondary sigil. | 11:47 | |
| I'm afraid I don't know what each of them is off the top of my head. | |||
| metaperl | theorbtwo, thanks. It is discussed here: dev.perl.org/perl6/synopsis/S02.html | 12:01 | |
| Juerd_ | "Is it nanoseconds this week? | 12:05 | |
| That's the sort of arbitrary complexity that doesn't belong in Perl 6. | |||
| Solving the real problems is hard enough. | |||
| "" | |||
| argh, stupid pasting system in irssi | |||
| Anyway, we have to wonder what the $op operator is this week, but the units for time are set in stone :) | |||
| theorbtwo | Issues with GHC 6.4: use.perl.org/~Mr.%20Muskrat/journal/23622 | 12:19 | |
| malaire | last revision is working with GHC 6.4, at least for me - but it does give quite many warnings while compiling | 12:21 | |
| theorbtwo | Oh, OK. | ||
| malaire | Mostly about deprecated things like Data.FiniteMap | 12:22 | |
| theorbtwo | Ah, OK. He's using release, not SVN. | 12:23 | |
| wilx | Huh, why is Data.FiniteMap deprecated? | 12:25 | |
| malaire | warning says to use Data.Map instead | 12:26 | |
| but for some reason online-documentation for Data.Map is missing | 12:27 | ||
| (at www.haskell.org/ghc/docs/6.4/html/l...ndex.html) | |||
| so I'm not sure where to check about differences between Data.FiniteMap and Data.Map | |||
| nothingmuch | List = Nothing | 12:42 | |
| | Cons a (List a) | |||
| List.hs:5: parse error on input `|' | |||
| que? | |||
| <tab>Lis...\n<tab><space>+\| | 12:43 | ||
| metaperl | is that not data List = Nothing | Cons a (List a) | ||
| data in frnt | |||
| nothingmuch, they can help you on #haskell | 12:44 | ||
| nothingmuch | oh crap | ||
| #haskell is usually less helpful | |||
| the tend to get on about funky stuff | |||
| and ignore me | |||
| except if i'm lucky | |||
| metaperl | I've found them to be most helpful and friendly | 12:49 | |
| theorbtwo | Well, that's not very nice of them. | ||
| metaperl | theorbtwo, form your own opinions | 12:50 | |
| theorbtwo | What's the difference between "chain" and "list" in the initSyms table in Prim.hs? | ||
| (Is that properly Prim.initSyms?) | |||
| s/that's not/that doesn't sound/ | 12:51 | ||
| malaire | it seems to me that "list" is used in things that creates lists, or junctions (junction-ops, dot, ;) | 13:06 | |
| chain is used for ops like '<' which can be chained together like a < b < c - and results a boolean | |||
| theorbtwo | Hm, I don't see the difference there. | ||
| Oh, context, of course. | |||
| Juerd_ | xerox: I need a new fuser for my xerox phaser 6100 :) | 14:07 | |
| xerox: Get me one :P | |||
| xerox grumbles | |||
| autrijus | greetings. | 14:16 | |
| theorbtwo: not only context, and also different evaluation rules | |||
| "list" means list-associative | |||
| "chain" means chain-associative | |||
| autrijus likes this "wireless taipei" thing | 14:17 | ||
| free wireless almost everywhere :) | |||
| <- in a random small foodplace | |||
| clkao giggles at autrijus | 14:22 | ||
| nothingmuch | autrijus++ # haskell instructor extraordinaire | 14:26 | |
| autrijus | :) | 14:27 | |
| nothingmuch | perlbot karma autrijus | ||
| perlbot | Karma for autrijus: 8 | ||
| nothingmuch | ah, it's up! | ||
| l~r was complaining for nothing | 14:28 | ||
| autrijus | bbiab. :) | 14:36 | |
| autrijus back | 15:17 | ||
| fixing | |||
| my ($a, $b, @c, @d) = (1,2,3,4); | |||
| this should make $a == 1, $b == 2, @c == (3,4) and @d == () | |||
| right? | |||
| hcchien | yes | 15:18 | |
| I think so. :) | |||
| autrijus ponders about porting CPANPLUS to Pugs. | 15:23 | ||
| jabbot | pugs - 600 - Autrijus made some todo_is test work so | 15:24 | |
| ingy | hola | 16:52 | |
| autrijus | greetings! | 16:53 | |
| ingy | I'm am heading off to do a bike race | 16:54 | |
| nothing to report | |||
| metaperl | wow another one | 16:55 | |
| where do you live ingy? | 16:56 | ||
| ingy | autrijus: docs is for adhoc documents about pugs. doc is where the installable perlxxx.{kwid|pod} files go | ||
| Seattle | |||
| I have at least one race per week until September | |||
| autrijus | ingy: I find that very confusing. | ||
| metaperl | for a team with nothing but outside shooters, the Sonics are kicking some A this year | 16:57 | |
| autrijus | I'd much rather unify them as kwids and all in doc/, or all docs/, etc. | ||
| ingy | autrijus: well 01Overview.html is not an installable doc per se | ||
| autrijus | why not? | ||
| provided that we kwidify it | |||
| ingy | so I just made a place for the installable kwids | ||
| sure... | |||
| autrijus | and even in html form, what's stopping us from installing html? :) | 16:58 | |
| ingy | but for now it is nice to have a place where we put stuff that is not really intended to be part of the final dist, like yaht.kwid | ||
| ie helpful stuff that is not in MANIFEST | 16:59 | ||
| but it's your call | |||
| I'll kwidify 01Overview.html and move it to doc | |||
| autrijus | ok. I think that works. | ||
| and maybe the uninstalled stuff is notes/. | 17:00 | ||
| ingy | I need to add doc install support to make install | ||
| autrijus | s/uninstalled/not-installed/ | ||
| ingy | coming soon | ||
| autrijus | just to avoid confusion. | ||
| ingy | ok. gotta race! & | ||
| metaperl | have fun ingy | 17:01 | |
| Limbic_Region | autrijus - any guestimate as to which release of pugs will have classes? | 17:04 | |
| autrijus | 6.28.0 of course! | ||
| autrijus points people to PA01 | |||
| Limbic_Region read PA01 | 17:05 | ||
| hmmm - don't remember that bit | |||
| is there a link to PA01 from pugscode.org/ | 17:06 | ||
| autrijus | "Overview" | ||
| Limbic_Region | nevermind - found it | ||
| nothingmuch | anybody got a spare YAHT 4.11 solution? | ||
| filter/map in CPS | |||
| Limbic_Region | found the roadmap - thanks | 17:07 | |
| autrijus | np | 17:08 | |
| xerox | nothingmuch, yep. | ||
| nothingmuch, are you having problems? | |||
| nothingmuch | well, i got it | ||
| sort of | |||
| but i don't like my solution | |||
| because consing is done in the compatible wrapper | |||
| instead of the cont one | 17:09 | ||
| autrijus | that is not unlike mapM | ||
| Limbic_Region | autrijus - did you see Larry's replies to the Replaying Santa Claus Golf Apocalypse with Pugs/Perl6 thread at the Monastery? | ||
| autrijus | no. reading | ||
| heh. | 17:11 | ||
| I think that means we have to implement reverse() now. | |||
| any takers? | |||
| nothingmuch | hah | 17:12 | |
| you know what? | |||
| with some hand holding, why not | |||
| Limbic_Region | well - I am no longer employed with 2 jobs, I might very well become more than just a lurker soon | ||
| nothingmuch | xerox: can you post your 4.11 somewhere? | ||
| xerox | cfold? | 17:13 | |
| nothingmuch | map in CPS | 17:14 | |
| xerox | map. Okay. | ||
| autrijus | nothingmuch: yay! | ||
| nothingmuch | my_reverse [] = [] | ||
| my_reverse (x:xs) = (reverse xs) ++ [x] | |||
| will it look similar? | |||
| autrijus | nothingmuch: you can start by write a reverse test :) | ||
| nothingmuch | or can i use the reverse builtin? | 17:15 | |
| good point ;-) | |||
| autrijus | sure you could! | ||
| so let's write a reverse for string | |||
| ready? :) | |||
| 1. you need to figure out its signature. | |||
| nothingmuch | one sec | ||
| committing reverse.t | |||
| autrijus | ok. | 17:16 | |
| I'll type away. | |||
| xerox | haskell.org/hawiki/HaskellIrcPastePage | ||
| nothingmuch | autrijus - see? | ||
| autrijus | I'd rather do it on irc | ||
| it's very simple | 17:17 | ||
| and I want it logged here :) | |||
| nothingmuch | ok, one minute then | ||
| autrijus | when you're ready, open Prim.hs. | ||
| xerox | nothingmuch, was for you. | ||
| nothingmuch | xerox: you seem to have done it the same as I have | ||
| i was wondering if the consing could have been done inside mapC' someway | |||
| xerox | Why? | 17:18 | |
| nothingmuch | err, i dunno | ||
| just wondering | 17:19 | ||
| ok, reverse.t comitted | |||
| ... | |||
| autrijus | cool. | ||
| nothingmuch | done | ||
| and prim.hs gvimmed | |||
| autrijus | ok. let's do the string part first. | ||
| nothingmuch | pugs strings eq haskell strings? | 17:20 | |
| autrijus | sort of. you can say that. | ||
| type VStr = String | |||
| same thing, but we consistently use a "V" prefix | |||
| on line 583 you see | |||
| \\n Scalar pre scalar (Scalar)\ | |||
| nothingmuch | ok | ||
| exactly what i was going to guess | |||
| autrijus | that is prototype for "scalar" | 17:21 | |
| so you copy that line | |||
| and add another line after it | |||
| nothingmuch | one minute, svn up time | ||
| autrijus | and change "Scalar" to "Str" and "scalar" to "reverse" | ||
| and voila we have a function. | |||
| nothingmuch | my 583 doesn't look like that | ||
| larsen | nothingmuch: I think there's a typo in the test | ||
| autrijus | what does your 583 look like? | ||
| oh. svn up. | |||
| nothingmuch | larsen - it ran and todoed fine, but that does not mean it's correct | 17:22 | |
| what's wrong? | |||
| larsen | line 9 | ||
| nothingmuch | autrijus: ... | ||
| larsen | it should be my @a ... | ||
| nothingmuch | no | ||
| @e is expected | |||
| @a is got | |||
| my @a; eval '@a is reversed 1..4' | 17:23 | ||
| my @e = what we want | |||
| larsen | ah sure | ||
| nothingmuch | todo_is(~@a, ~@e) | ||
| larsen | ok | ||
| nothingmuch | someday we'd like to implement todo_is and is with ~~, i hope =) | ||
| autrijus | nothingmuch: so, your line 583 synced? :) | ||
| nothingmuch | yup yup | ||
| autrijus | sure. | ||
| nothingmuch | and i changed it | ||
| autrijus | ok. add that line of prototype | ||
| and now implement it | |||
| jabbot | pugs - 601 - Test string and list reverse op | 17:24 | |
| xerox | autrijus, sorry, did you say GHC 6.4 doesn't write "forall a." anymore? | ||
| nothingmuch | jabbot announces svn up? | ||
| or is it not a bot at all? | |||
| autrijus | it is a bot. | ||
| xerox: I mean it's :t function. | |||
| nothingmuch | line 89 | ||
| op1 "reverse" = reverse | |||
| autrijus | right. | ||
| nothingmuch | right? | ||
| autrijus | not quite :) | 17:25 | |
| op1 :: Ident -> Val -> Eval Val | |||
| type Ident = String | |||
| xerox | autrijus, can you give me an example? It seems to show "forall" here :( | ||
| autrijus | so "reverse" fills the Ident slot | ||
| xerox: if shows forall if you launch it with -fglasgow-exts | |||
| or if it loads a file that has OPTIONS -fglasgow-exts | |||
| like all pugs files | |||
| xerox | Ah, okay, thank you. | ||
| nothingmuch thinks a little | |||
| no help! | |||
| autrijus | nothingmuch: so the function on the right of "=" needs to be of type | 17:26 | |
| Val -> Eval Val | |||
| nothingmuch | nono! don't help! | ||
| autrijus | vCast | ||
| oh ok | |||
| nothingmuch covers ears and sings | |||
| autrijus stops helping | |||
| you'll figure it out :) | |||
| xerox | Ah ah. :) | ||
| autrijus | nothingmuch: and when you're done implementing string op, look at op1 "=" for how to do the list part. | 17:27 | |
| that'd be all :) | |||
| oh, and "Eval" is just a monad. think of it like "IO". | |||
| nothingmuch | beh beh beh, phone distracting | 17:28 | |
| xerox | ``just a monad'' | ||
| autrijus | yeah. be glad it is not an arrow parameterized on polymorphic existential endofunctors inside a ST thread under STM. | 17:29 | |
| xerox panics | 17:30 | ||
| autrijus reboots xerox | |||
| xerox happily beeps | 17:31 | ||
| autrijus | hm. I can't quite believe it only took two lines. | 17:32 | |
| nothingmuch doesn't get it | 17:34 | ||
| i create a function | |||
| which happens to reverse val | |||
| autrijus | nothingmuch: ok... may I help? :) | ||
| cool. | |||
| nothingmuch | which accepts a Val | ||
| autrijus | and gives out Val. | ||
| nothingmuch | and returns something which is an evaluation | ||
| which i have no idea how to construct yet | 17:35 | ||
| autrijus | now, the type of "return" is | ||
| a -> Eval a | |||
| :) | |||
| actually it is | |||
| nothingmuch | what is the . operator in haskell? | ||
| autrijus | (Monad m) => a -> m a | ||
| and Eval is indeed Monad | |||
| nothingmuch: it means function composition. | |||
| f . g | |||
| is like, in perl | |||
| sub f_dot_g { f(g($_[0])) } | 17:36 | ||
| nothingmuch | it returns an anoynmous function which accepts the type that g accepts | ||
| and calls g on it's param | |||
| and calls f on that? | |||
| autrijus | exactly! | ||
| (b -> c) -> (a -> b) -> a -> c | 17:37 | ||
| is the type of (.) | |||
| you can clearly see how "a" flows to g | |||
| and becomes "b" which flows to f | |||
| and gives out c. | |||
| so whenever you find yourself writing | |||
| nothingmuch | what is an Ident? | ||
| autrijus | foo (bar baz) | ||
| then you can write | |||
| (foo . bar) baz | |||
| Ident is String. | 17:38 | ||
| nothingmuch | oh, the "reverse" | ||
| the operators name | |||
| autrijus | yup. | ||
| yup. "Identifier name" | |||
| nothingmuch | ok, not the variable it's acting on or something like that | ||
| ok, dealt with | |||
| autrijus | nope. | ||
| nothingmuch | and Val is a class VStr belongs to? | ||
| autrijus | Value is a class VStr belongs to. | ||
| nothingmuch | err | 17:39 | |
| autrijus | AST.hs line 149 is the instance declaration (that you probably don't need to read) | ||
| nothingmuch | so why isn't return . reverse doing what I meant? | ||
| Couldn't match `Val' against `[a]' | |||
| Expected type: Val -> Eval Val | |||
| Inferred type: Val -> ContT Val (ReaderT Env IO) [a] | |||
| autrijus | because reverse expects VStr | ||
| but you give it a Val | |||
| nothingmuch | isn't [a], err, in this case [Char] basically a member of Val? | ||
| autrijus | you can get a VStr from a Val | 17:40 | |
| by using vCast. | |||
| nothingmuch | ah, ok | ||
| autrijus | vCast :: (Value n) => Val -> n | ||
| note that "Value" is the class | |||
| and "Val" is a type. | |||
| now you'll run into another problem :) | |||
| i.e. reverse can work on lots of things, not only VStr. | |||
| so you need to instrument it: | |||
| (reverse :: VStr -> VStr) | |||
| but that is not neccessary. | 17:41 | ||
| because you needs to return a Val, not a VStr | |||
| to make a Val from a VStr | |||
| you use... "VStr" | |||
| this time in constructor form. | |||
| VStr :: VStr -> Val | |||
| the convention of pugs is that the constructor takes, as the only parameter, the type with the same name, and promote it to the "more abstracted" type. | 17:42 | ||
| so constructor "VStr" promotes a VStr into Val | |||
| constructor "Val" promotes a Val into Exp | |||
| (but you don't need to know that yet) :) | |||
| All tests successful. | |||
| Files=84, Tests=1419, 53 wallclock secs ( 0.00 cusr + 0.00 csys = 0.00 CPU) | |||
| assign.t bug squashed. | 17:43 | ||
| nothingmuch | yay! | ||
| autrijus | it works!? | ||
| nothingmuch | bah, it's dinner time | ||
| no, that assign.t is good | |||
| autrijus | oh :) | ||
| jabbot | pugs - 603 - * unify my()=() with ()=(); that makes a | 17:44 | |
| nothingmuch | i tried both return .VStr . reverse .vCast thinking it would cause it to infer stuff into reverse | ||
| jabbot | pugs - 602 - * unary op following .= is unimplemented | ||
| nothingmuch | but this confuses the next line | ||
| and before i tried vStr . vCast | |||
| but that caused a different problem | |||
| err, compile cycle too long to check | |||
| autrijus | !. | ||
| nothingmuch | anyway, i have to go, i will be back soon to finish | ||
| autrijus | you should be able to just use ghci | ||
| and keep using :r | |||
| ghci -isrc src/Main.hs | 17:45 | ||
| that's all you need to do :) | |||
| uh | |||
| op1 "reverse" = return . VStr . reverse . vCast | |||
| is actually The Correct Solution. | |||
| not sure what confuses the next line. | 17:46 | ||
| indent maybe | |||
| anyway, I await your commit after dinner. | |||
| journal time :) | |||
| jabbot | pugs - 604 - * my $a == $b should not mean my $a = = | 17:54 | |
| autrijus | rg0now++ | 18:02 | |
| say*(split"",int(7e10+ +*(=open@ARGS[0])))[1..11] | |||
| aw, aw. | |||
| pugs gold! | |||
| err. pugs golf! | |||
| (that implements 'wc') | 18:03 | ||
| nothingmuch | ok | 18:06 | |
| ick | 18:10 | ||
| autrijus | all larry's golfs now works. | ||
| nothingmuch | why is it not working | ||
| autrijus | ??:: inside parens | 18:11 | |
| and posfix ... | |||
| nothingmuch | woo! ??:: inside parens! | ||
| autrijus | was parsed wrong. | ||
| yeah. thanks to golf-driven development | |||
| nested ??:: now works too. | |||
| nothingmuch | ya ya ya | ||
| now for reverse | 18:12 | ||
| Juerd_ | autrijus: I thought that was known for a while | ||
| autrijus | what was known? | ||
| xerox wonders what's the good thing about incompresible syntax.. | |||
| nothingmuch | Juerd_: the problem was known, and even tested, just not fixed =) | 18:13 | |
| Juerd_ | autrijus: In fact, I thought that that was why tests mostly had if (cond) { say ... } else { say ... } instead of say(cond ?? ... :: ...) | ||
| nothingmuch: Ah, okay | |||
| autrijus | true. tests needs to use try{} and ??:: more. | ||
| nothingmuch | and yes, that is why the tests did that | ||
| autrijus | oh and postfix conditionals is now part of expression. | ||
| nothingmuch will try to clean some stuff up when he returns from alcohol place tonight | |||
| Juerd_ | Yay for sanity | ||
| jabbot | pugs - 606 - * ??:: in parens works now; thanks to rg | 18:14 | |
| pugs - 605 - * postfix ... works again. | |||
| autrijus | 1 ?? 3 if 2 :: 4 if 0 | ||
| Juerd_ | autrijus: Good. That means you get stacked statement modifiers :) | ||
| FOR FREE | |||
| autrijus | that too. | ||
| FOR FREE. | |||
| Juerd_ | larry-- autrijus++ # ;) | ||
| autrijus | and it's all very clean. | ||
| I'll keep it that way until larry shouts at me to cripple it :) | |||
| xerox | What is "1 ?? 3 if 2 :: 4 if 0" supposed to mean? | ||
| nothingmuch | 1 ?? -> yes | ||
| so evaluate '3 if 2' | 18:15 | ||
| 2 -> yes | |||
| so 3 | |||
| if 1 was false, then :: 4 if 0 is evaled | |||
| if 0? -> no | |||
| so no on the 4 | |||
| Juerd_ | Not that it's readable, though, when written like that | ||
| autrijus | pugs> . 1 ?? 3 if 2 :: 4 if 2 | ||
| {{ Syn "if" { | |||
| 1; | |||
| Syn "if" {2; 3; undef}; | |||
| Syn "if" {2; 4; undef}} | |||
| Juerd_ | 1 | ||
| autrijus | }} | ||
| Juerd_ | ?? 3 if 2 | ||
| :: 4 if 0 | |||
| autrijus | thanks to nnunley we have a pretty AST. | ||
| nothingmuch | i have no idea what that returns, though | 18:16 | |
| undef? | |||
| autrijus | which should makes everything clear | ||
| Juerd_ | nothingmuch: undef makes sense | ||
| nothingmuch | autrijus: so what do we do about reverse? | ||
| autrijus | no, it returns 3. :) | ||
| nothingmuch | see it and see why it's broken? | ||
| autrijus | nothingmuch: I thought you've implemented it | ||
| nothingmuch | i can't tell | ||
| autrijus | sure. just commit. | ||
| Juerd_ | 3?! | ||
| nothingmuch | i have | ||
| and even in a way which you said is ok | |||
| but it doesn't compile | |||
| autrijus | Juerd_: "3 if 2" is 3 | ||
| nothingmuch | is ?! an operator? | ||
| Juerd_ | OH DUH | ||
| autrijus | just commit it. | ||
| Juerd_ | HAHA | ||
| Juerd_ for some reason assumed ~~ semantics for if | |||
| But that's spelled "when" | |||
| autrijus | riiight. | 18:17 | |
| nothingmuch | autrijus: *cough* /what/?! | ||
| autrijus | nothingmuch: just commit whatever code you have and I'll see the compile error | ||
| Juerd_ | This is what happens if you don't touch any code for a few weeks :( | ||
| nothingmuch | fine | ||
| beh beh beh! | |||
| autrijus | brb. | ||
| Juerd_ | nothingmuch: ?! should be ?(!(...) | ||
| Prefix that is | |||
| ! implies ? though | 18:18 | ||
| nothingmuch | so boolean prefix of !? | ||
| err, | |||
| Juerd_ | Yes. | ||
| nothingmuch | !? is not an expression ;-) | ||
| boolean context, not prefix | |||
| well, it's like saying 'scalar 0 | |||
| ' | |||
| Juerd_ | scalar is a prefix operator too | ||
| nothingmuch | like in perl5 | ||
| Juerd_ | ! and ? are the same thing | 18:19 | |
| But ! negates the outcome | |||
| nothingmuch | aye | ||
| Juerd_ | The low precedence versions are called "not" and "true" | 18:20 | |
| nothingmuch | and scalar is still a prefix operator | ||
| Juerd_ | NOte: not "false" and "true", not "not" and "too" | ||
| :) | |||
| nothingmuch | so zeronary ? is basically '1 == 1'? | ||
| Juerd_ | I think "true" is special | ||
| Hm, it is not | 18:21 | ||
| nullary true and ? don't exist | |||
| The true value is Bool::true, not true | |||
| nothingmuch | ah | ||
| that's what nullary means | |||
| Juerd_ | To avoid that people actually use it. | ||
| nullary = having 0 arguments | |||
| nothingmuch | i always read it as 'null array', not 'nulery' | ||
| Juerd_ | unary = having 1 argument | ||
| binary = having 2 arguments | |||
| ternary = having 3 arguments | |||
| listary = having any number of arguments :) | 18:22 | ||
| nothingmuch | heh | ||
| that's cute | |||
| Juerd_ | unary can be prefix or postfix | ||
| nothingmuch | for irc log completeness: infix postfix prefix etc say where the arguments are nibbed from | ||
| Juerd_ | binary is infix | ||
| unary can also be circumfix | |||
| listary is always prefix | |||
| nothingmuch | circumfix? que? | ||
| Juerd_ | but could in theory be postfix | ||
| nothingmuch: circum == around | |||
| nothingmuch: () is circumfix | |||
| nothingmuch | is hyper a circumfix op taking an op | 18:23 | |
| Juerd_ | nothingmuch: "" is circumfix | ||
| It is *around* the argument | |||
| nothingmuch: hyper is a meta-op | |||
| nothingmuch | and converting it to a binary infix listrefferry op? | ||
| ;-) | |||
| Juerd_ | Either prefix, postfix or both (sort-of circumfix), but to an op, not a term | ||
| jabbot | pugs - 607 - Implemented reverse for strings, and thr | 18:24 | |
| Juerd_ | jabbot: Neato. Let me see the tests for that | ||
| jabbot | Juerd_: I'm not sure I understand you fully. | ||
| nothingmuch | do we get to declare meta ops, btw? | ||
| Juerd_ | As list reverse "foo" should still be "foo" | ||
| nothingmuch | jabbot->isa bot | ||
| Limbic_Region | heh | ||
| nothingmuch | t/op/reverse.t was very hackishly thrown together | ||
| Juerd_ | nothingmuch: Good question; ask p5l | ||
| nothingmuch | i'll add more stuff | ||
| Juerd_ | nothingmuch: I don't see why we shouldn't talk to bots. | 18:25 | |
| I have long nocternal conversations with purl. | |||
| Limbic_Region | jabbot: tobbaj? | ||
| jabbot | Limbic_Region: That is interesting. Please continue. | ||
| nothingmuch | hah | ||
| great | |||
| now i can't check that the new test is actually sane | 18:26 | ||
| because i can't compile pugs | |||
| Juerd_ | I like how perl is very persistent in trying to parse input | ||
| perl Makefile | |||
| nothingmuch | yes, that always amuses me =) | ||
| Juerd_ | Eventually giving up past line 757. | ||
| nothingmuch | Can't find string terminator '"' anywhere before EOF at Makefile line 765. | 18:27 | |
| *MY* perl is trigger happier than *YOUR* perl | |||
| Juerd_: | 18:28 | ||
| my $a = "foo"; | |||
| my @a; eval '@a = reverse $a'; | |||
| autrijus | rehi. | ||
| nothingmuch | my @e = ("foo"); | ||
| todo_is(@a, @e, "reversed string in array context is actually a no-op"); | |||
| hola autrijus | |||
| Juerd_ | A no op that, when the argument is a simple scalar, should very probably emit a warning | 18:29 | |
| This requires introspection of the argument list | |||
| nothingmuch | and what about reverse($a)? | ||
| or reverse *$a? | |||
| Juerd_ | list reverse $a returns $a and should emit a warning | 18:30 | |
| nothingmuch | testing my @a = ("foo"); and reversing that seems silly | ||
| Juerd_ | scalar reverse $a should reverse $a and return that | ||
| autrijus | hey | ||
| nothingmuch: you accidentally touched "list" | |||
| that's all. | |||
| "reverse" is fine. | |||
| fixed. | |||
| "svn di" is your friend | |||
| nothingmuch | how did i touch it? | ||
| svn st next time | |||
| grazie | 18:31 | ||
| autrijus | right. | ||
| nothingmuch | now on to list reverse | ||
| autrijus | op1 "reverse" = return . VList . reverse . vCast | ||
| is actually all there is. | |||
| the trick lies in how to trigger the correct one depending on context. | |||
| Juerd_ | Does the list list operator exist? | ||
| autrijus | yes. | ||
| nothingmuch | is it tested? | 18:32 | |
| hard to say based on grep -r | |||
| autrijus | not sure. | ||
| autrijus writing journal | |||
| nothingmuch | i'll look into that | 18:33 | |
| autrijus | nothingmuch: so should I implement the context dispatch code | ||
| or are you doing it? | |||
| nothingmuch | how will it look? | ||
| like you said? | |||
| or more scary? | |||
| autrijus | line 198. | ||
| I'll do that. | 18:34 | ||
| gives me chance to unify the context dispatcher. | |||
| nothingmuch looks at op1 "=" | |||
| oh, which is 198 | |||
| xerox | brb | ||
| nothingmuch | ok | ||
| i'll svn ci list reverse | |||
| jabbot | pugs - 608 - * fix breakage | ||
| nothingmuch | oi vey, what have i done to op1 "list" | 18:35 | |
| sorry, autrijus | 18:36 | ||
| Juerd_ | I've commited some more reverse tests | ||
| Can't run them, though, as I still have broken pugs | |||
| nothingmuch | svn up should fix it | ||
| Juerd_ | nothingmuch: I'm in fact already compiling | ||
| autrijus: Can you implement -I? | 18:39 | ||
| nothingmuch | -l, i.e. the is file a link -X function? | ||
| Juerd_ | no, -I | 18:40 | |
| Not -l | |||
| Juerd_ can't count, by the way | |||
| It's official now. | |||
| Juerd_ changes the plan. | |||
| autrijus | what? what? | ||
| Juerd_ | -Iblib6/lib | ||
| autrijus | I need context! | ||
| Juerd_ | Include. | ||
| autrijus | ah. | ||
| nothingmuch | ah | ||
| Juerd_ doesn't like environment variables :) | |||
| KDE Technologies: Get Hot New Stuff | 18:41 | ||
| nothingmuch | Juerd_: i've untodoed the first str test | ||
| Juerd_ | The KDE people really know their target audience too well :( | ||
| Is this the first test where a method behaves different from a list op? | 18:42 | ||
| autrijus | nothingmuch: bah. | ||
| no context dispatch needed | |||
| op0 "reverse" = return . VList . reverse | |||
| op1 "reverse" = return . VStr . reverse . vCast | |||
| Juerd_ | (i.e. @foo.reverse in scalar context should return an arrayref, and not do stringy reverse) | ||
| autrijus | \\n Str pre reverse (Str)\ | ||
| \\n List pre reverse (List)\ | |||
| that's all! | |||
| nothingmuch | what about reverse @list? | 18:43 | |
| autrijus | MMD. | ||
| nothingmuch | it's op0? | ||
| autrijus | but that depends on the fact that pugs does retval MMD. | ||
|
18:43
khisanth__ is now known as Khisanth
|
|||
| autrijus | op0 means listOp | 18:43 | |
| nothingmuch | ah | ||
| i assumed nullary | |||
| autrijus | no, that won't be an op | ||
| for obvious reasons. | |||
| Juerd_ | New word, already using it! :) | ||
| jabbot | pugs - 610 - untodo str reverse | 18:44 | |
| pugs - 609 - more reverse tests | |||
| Juerd_ | jabbot too can't count | ||
| autrijus | C:\work\pugs>pugs t\op\reverse.t | ||
| 1..2 | |||
| ok 1 - list was reversed # TODO | |||
| ok 2 - string was reversed # TODO | |||
| Juerd_ | It has the reverse commits in reverse. The irony. | ||
| nothingmuch | Juerd++ | ||
| Khisanth | autrijus: a bit delayed but is Perl6::Pugs not meant to be upgradable from the cpan/cpanp shells? | ||
| autrijus | Khisanth: what do you mean? | 18:45 | |
| Khisanth | well according to both of them the most recent version is 6.0 | ||
| autrijus | ah. you have version.pm installed? | 18:46 | |
| Khisanth checks | |||
| nope | |||
| nothingmuch | is there a gcov for haskell? | 18:47 | |
| i think for fp gcov really makes sense, with it being pure and all | |||
| autrijus | I agree. | ||
| Juerd_ | autrijus: Can we have .=? | ||
| autrijus | Juerd_: we already have .=. | ||
| Juerd_ | Hmm | 18:48 | |
| Khisanth | autrijus: having it installed gives the same result ... | ||
| nothingmuch | i think i saw a ci log for .=, no? | ||
| Juerd_ | Then why isn't my test script compiling anymore, after I added that? | ||
| autrijus | Khisanth: aw. it's a cpanplus/cpan.pm bug. | ||
| nothingmuch | oh, is 'unimplemented' | ||
| autrijus | Juerd_: if you added an "unary op" after .= | ||
| then it's unimplemented. | |||
| Juerd_ | No, list op | ||
| autrijus | iiinteresting. | ||
| Juerd_ | @a.reverse | ||
| autrijus | what is it? | ||
| Juerd_ | eh | ||
| @a.=reverse | |||
| autrijus | ah. I see why. | ||
| hmm, .= is very special. | 18:49 | ||
| nothingmuch | special-- | ||
| Juerd_ | .= is just . | ||
| nothingmuch | simple++ | ||
| Juerd_ | Or, well, can very well be implemented like that for now | ||
| Assigning the result back to its LHS | |||
| autrijus | ok. doing it. | ||
| Juerd_ | That also automatically gives you the right context | 18:50 | |
| nothingmuch | Juerd_: 'for now'.... what do you mean? | ||
| autrijus | ok, doing so. | ||
| nothingmuch | it has more complicated semantics? | ||
| (with objs, i see, but lists?) | |||
| Juerd_ | nothingmuch: Later on, it should be able to call a specific, more optimized version of the method that avoids copying | ||
| nothingmuch: The classic example being @foo.=sort | |||
| nothingmuch | will @foo.sort in void context automatically upgrade to @foo.=sort? | ||
| Juerd_ | That shouldn't have to be @foo = @foo.sort with weird recognition of self-assignment | ||
| nothingmuch | (although i don't know what it will really do to ops) | ||
| ah | 18:51 | ||
| Juerd_ | Being special in void context is perl 4 | ||
| See split. | |||
| Only optimizations may be made | |||
| (See map) | |||
| Aankhen`` | Hi Juerd_. | ||
| Juerd_ | Hello | ||
| autrijus | ok, implemented according what Juerd_ said. | ||
| nothingmuch | btw, if object $foo has a method, blah | 18:52 | |
| autrijus | testing. | ||
| nothingmuch | which retturns an object | ||
| of $foo's class | |||
| does $foo.=blah replace all instances of $foo with the returned object? | |||
| only the one in the container? | |||
| i'm curios, because i'd like a nicer way to do Object::Realize::Later type wackiness | 18:53 | ||
| Juerd_ | nothingmuch: The return type is irrelevant. If $foo.isa(Foo) and $foo.Bar returns a Bar, then $foo.=Bar should still turn $foo into Bar, discarding the previous Foo $foo | ||
| nothingmuch | ok, so $foo.=clone probably makes sense in the way most people mean? | ||
| Juerd_ | Eh | ||
| nothingmuch | what about objects changing their thingy instead of their references? | ||
| Juerd_ | I don't know why you'd clone and then dump the original... | ||
| jabbot | pugs - 612 - * fix plans | 18:54 | |
| pugs - 611 - * reverse implemented in full. thanks no | |||
| Juerd_ | Unless you want $dbh.=clone to really mean $dbh.reconnect | ||
| nothingmuch | well, given my $foo = get_fooo_from_some_place | ||
| where if you modify $foo you change some_place's copy | |||
| so you $foo.=clone, and it's yours | |||
| autrijus | ok 4 - inplace int # TODO | ||
| Juerd_ | I can't parse it | ||
| Rereading. | |||
| nothingmuch | my $foo = @array_of_objects[1]; | 18:55 | |
| $foo->blah; | |||
| b6s | "#perl6 is already talking about improving GHC's tool chain by writing a code coverage tool, based on pjcj's excellent Devel::Cover module, so we can identify untested conders in Pugs. 'Tsall good. :-) " #use.perl.org/~autrijus/journal/23389 ? | ||
| Juerd_ | nothingmuch: No, that can't work, because = copies. | ||
| It'd work only if $foo is a reference. | |||
| nothingmuch | wait wait wait | ||
| autrijus | b6s: right. gcov is one such possibility. | ||
| nothingmuch | $foo refers to a thingy | 18:56 | |
| be it a blessed strucure or an opaque | |||
| an object in that sense | |||
| it is a copy of the reference @array_of_objects[4] | |||
| autrijus | Juerd_: svn up and check your .reverse again? | ||
| nothingmuch | but if i call a destructive method on $foo | ||
| like $foo->increment_your_mojo | 18:57 | ||
| then @array_of_objects[4] also changes | |||
| Juerd_ | autrijus: I've commited it already | ||
| nothingmuch | because otherwise it just doesn't make sense | ||
| now, if i don't want @array_of_objects[4] to change | |||
| then i say $foo.=clone | |||
| autrijus | aw. you and your fast fingers | ||
| Juerd_ | nothingmuch: Ah, yes. | ||
| nothingmuch | or $foo = @array_of_objects[4].clone | ||
| which is the same thing | |||
| Juerd_ | nothingmuch: Like that | ||
| nothingmuch | ok, good | ||
| Juerd_ is compiling | |||
| nothingmuch | so how do i not clone, but destroy the original copy in silly ways? | ||
| i want a proper Object::Realize::Later | |||
| Juerd_ | It takes thrice as long as it did when I last wrote tests | ||
| autrijus | mmm fat dog | 18:59 | |
| Juerd_ | nothingmuch: I don't know O::R::L (and dislike its name) | ||
| nothingmuch | i'll mail p6l about it | ||
| Khisanth | autrijus: I'm just cursious but any idea where the shells are getting the 6.0 from? | 19:00 | |
| Juerd_ | autrijus: test script compiles and runs now | ||
| autrijus | Khisanth: sure, it only accept x.yy not x.y.z | ||
| nothingmuch | basically it's an generic object that delays heavyweight construction to a later time | ||
| autrijus | Juerd_: woot. | ||
| Khisanth: they need fixing. not me | |||
| nothingmuch | by compositing with delegation you get incremental on demand vivication of needed data | ||
| autrijus | maybe I should try the vstring form. | ||
| nothingmuch | and thus you can optimise for lazy loading | ||
| without losing a simple, naive implementation that uses the object on the outside | 19:01 | ||
| Khisanth | ah didn't know that | 19:02 | |
| autrijus | Khisanth: ok, switched to vstrings. | ||
| let's see how much havoc it will wreck. | |||
| nothingmuch | no! vstring bad! | ||
| autrijus | nothingmuch: "6.0.11" is arguably badder. | ||
| and we need perl 5.6 anyway. | |||
| nothingmuch | autrijus--; # why not just inline the int? perl will parse that, no? | ||
| autrijus | 6.0.11? | ||
| nothingmuch | oi, nevermind | ||
| Juerd_ | vstrings aren't bad | 19:03 | |
| The perl 5 implementation of them is. | |||
| autrijus | sure that'd work, but I like v6.0.11. | ||
| Juerd_ | However - we still get version *objects* for Perl 6 | ||
| Not just strings. | |||
| autrijus | what Juerd_ said. | ||
| nothingmuch | no, i meant '\000\006\000\014' | ||
| autrijus | nothingmuch: ... | ||
| ... NO. | |||
| nothingmuch | but really inline | ||
| exactly | |||
| Juerd_ | nothingmuch: That's not a bad representation, as long as it's internal :) | ||
| autrijus | v6.0.11 in perl 5.9 will produce a version object. | ||
| I'm counting on that. | |||
| nothingmuch | Juerd_: that's what vStrings are =) | ||
| Juerd_ | Counting on a version object; heh | ||
| jabbot | pugs - 616 - $plan += $N; s/todo// for @tests[-1]; | 19:04 | |
| pugs - 615 - * use vStrings! | |||
| pugs - 614 - resolved conflict | |||
| pugs - 613 - * .= implemented cleanly thanks to Juerd | |||
| autrijus | hi our glorious golfer! | ||
| nothingmuch | autrijus: but with an icky icky warning | ||
| rg0now | hi! | ||
| Juerd_ | nothingmuch: 65.66.67 eq "ABC" is where vstrings are bad | ||
| rg0now | I am happy to be here at last... | ||
| autrijus | nothingmuch: not sure what you mean. I don't get warnings. | ||
| Juerd_ | autrijus: I notice you prefix * to commit messages. What does it mean? | ||
| rg0now | Just came here to tell you that 'reverse' seems to be broken in current svn tree | ||
| Juerd_ | rg0now: Really? ;) | 19:05 | |
| rg0now | it reverses everything on eart | ||
| autrijus | say reverse=<> | ||
| works. | |||
| Juerd_ | rg0now: We were just working on this the past hour :) | ||
| rg0now | sorry, i am completely new to irc | ||
| autrijus | it reverses what on earth? | ||
| rg0now | yes, sure | ||
| autrijus | damn, my journal keeps getting obsoleted by #perl6. | ||
| and I had not even written half of it! | 19:06 | ||
| Juerd_ | Run Perl6 Now! | pugscode.org ('Overview', 'Journal') | pugs.kwiki.org | channel log: xrl.us/e98m | < autrijus> damn, my journal keeps getting obsoleted by #perl6. | 19:06 | |
| Juerd_ | Hm | 19:06 | |
| In fact | |||
| rg0now | I tried: print reverse =open@ARGS[0] | ||
| Juerd_ | Run Perl6 Now! & pugscode.org ('Overview', 'Journal') & pugs.kwiki.org & channel log: xrl.us/e98m & < autrijus> damn, my journal keeps getting obsoleted by #perl6. | 19:06 | |
| nothingmuch | rg0now: when did you last svn up? | 19:06 | |
| Juerd_ | :) | ||
| rg0now | about 3 minutes | ||
| nothingmuch | Juerd++ | ||
| Juerd_ | Why choose if you can have them all()? :) | ||
| autrijus | rg0now: oh I see. it didn't reverse lines | 19:07 | |
| right? | |||
| Khisanth | autrijus: be lazy, write some to extract a summary from #perl6.log :) | ||
| nothingmuch | print scalar contextifies? | ||
| autrijus | eww eww. | ||
| rg0now | I mean, you reverse not just the order in the list, but the list elements themselves too | ||
| autrijus | nothingmuch: right, that seems to be what it did | ||
| Juerd_ | rg0now: That's what the list op reverse does in scalar context | ||
| rg0now | really? | ||
| Juerd_ | rg0now: Not in list context, though | ||
| autrijus | but it should be in list context! | ||
| rg0now | sorry, go back to Synopses | 19:08 | |
| autrijus | \\n Bool pre print (List)\ | ||
| nothingmuch | rg0now: that was the equiv of 'print scalar reverse scalar =open@ARGS[0]' | ||
| sort of | |||
| autrijus | rg0now: no, we're saying pugs is wrong | ||
| nothingmuch | except that scalar was implied | ||
| autrijus | and trying to find the problem | ||
| Juerd_ | rg0now: reverse isn't discussed in synopses, so I'm assuming Perl 5 behaviour for the non-method semantics. | ||
| autrijus | ok, I see why. | ||
| rg0now | shoul this work: print *reverse =open@ARGS[0] | ||
| autrijus | it's parser precedence thing. | ||
| nothingmuch | it first stringified the =open@ARGS[0] into a big concat, and then reversed the chars of that | ||
| autrijus | I shouldn't rely on the MMD. | ||
| a sec. | |||
| nothingmuch | Juerd_: is 'list' == '*'? | 19:09 | |
| Juerd_ | nothingmuch: No | ||
| nothingmuch | but both enforce list context? | ||
| Juerd_ | list in scalar context returns an arrayref, afaict | ||
| Yes | |||
| nothingmuch | list @array remains an array? | ||
| Juerd_ | list is for lists what scalar is for scalars | ||
| nothingmuch | but splat array is forced flattenned? | ||
| Juerd_ | It merely provides context | ||
| TO THE ARGUMENT | |||
| The context the op itself is in it cannot determine | 19:10 | ||
| nothingmuch always saw scalar as the smushtogether or count operator in perl5 | |||
| Juerd_ | nothingmuch: Splat is for distributing a list to multiple non-slurpy parameters | ||
| While list just provides list context where otherwise you'd have scalar conetxt | 19:11 | ||
| nothingmuch | do we have a 'splat' keyword? | ||
| Juerd_ | I don't believe so | ||
| low precedence splat doesn't make sense either, I think | |||
| nothingmuch | right | ||
| Juerd_ | The very rare occasion you want to splat two things, double * makes much more sense | ||
| That is: foo(*@foo, *@bar) makes more sense than foo(splat @foo, @bar) | 19:12 | ||
| Making low precedence splat is easy though | |||
| macro splat { "*" . @_.perl } | |||
| eh | |||
| macro splat { "*" ~ @_.perl } | |||
| I'm not sure if that'd work for rw args | 19:13 | ||
| Holy $bovine, 74 nicks in this channel already! | |||
| rg0now | Sorry folks, I can not really follow you. Though, I will be lurking around here and report, if I can get reverse to work, eventually | ||
| Juerd_ | rg0now: See t/op/reverse.t | 19:14 | |
| rg0now: That's how we want it to work, eventually | |||
| rg0now | oh, the test, I always forget to use... | 19:15 | |
| autrijus | ok, I think I fixed it. | ||
| Juerd_ | The way reverse currently works isn't complete | ||
| autrijus | testing. | ||
| Juerd_ | Hmmm | ||
| rg0now | ok, currently this reverses everything, even list elements: my @l = =open@ARGS[0]; @l = reverse @l; print @l; | ||
| Juerd_ | Don't you all agree that ~@array should return join('', @array) instead of join(' ', @array)? | ||
| OR that reverse LIST in scalar context should also join on ' ', not ''? | 19:16 | ||
| And that current design is inconsistent? | |||
| rg0now: Can you please not use open in simple examples? @l = <foo bar> is much easier to understand | 19:17 | ||
| Are you saying that that prints raboof instead of barfoo? | 19:18 | ||
| rg0now | ok, now I see that it is in todo, sorry folks... | ||
| Juerd_ | Answer, please | 19:19 | |
| autrijus | rg0now: try again. | ||
| I think you'll be happy. | |||
| rg0now | ok, here is the test code: my @l = <foo bar>; @l = reverse @l; say @l; | ||
| autrijus | 18 out of 23 works now. | ||
| rg0now | prints: rab oof | ||
| Juerd_ | autrijus: Exciting | ||
| autrijus | please update to r617 and resume your discussion. | ||
| also, help me in finding out why the 5 are failing. | 19:20 | ||
| i.e. passing in the wrong context. | |||
| autrijus goes back to journaling | |||
| nothingmuch mailed p6l about O::R::L style behavior | 19:21 | ||
| rg0now | it seems to work with r617, the result is: barfoo | ||
| autrijus reminds folks that Pugs stands for "Perl6 User's Golfing System" | |||
| Juerd_ never really understood the name | 19:22 | ||
| autrijus | so only golf-driven development can do it justice :) | ||
| rg0now | ok, I am going back to PerlMonks for golfing on... | ||
| nothingmuch | and who the hell uses OOP in golf? | ||
| autrijus | :)) | ||
| nothingmuch | all my tests were for nothing?! | ||
| autrijus | uh. perl6 will make using oop in golf much more competitive. | 19:23 | |
| as will fp | |||
| it won't be always regex now! | |||
| the other schools will have a chance! | |||
| nothingmuch | well, maybe for complex golfs | ||
| autrijus | and especially us unicoders! | ||
| autrijus grins | |||
| nothingmuch | but oop syntax is anything but concise | ||
| ah | |||
| that is something | |||
| hyper and junctions are probably the most golfy features ever | |||
| jabbot | pugs - 617 - * a different set of reverse.t tests fai | 19:24 | |
| autrijus | riight | ||
| Juerd_ | nothingmuch: I use Data::Swap in Perl 5 to change an object's state | ||
| autrijus | so nondet school will have its day | ||
| in fact I expect p6 golf to be much much more fun than p5. | |||
| Juerd_ | nothingmuch: For example, in DBIx::Simple, I swap existing objects for DBIx::Simple::Dead for objects that no longer serve any purpose, but do have references to them | ||
| nothingmuch | ah | ||
| puurdy | |||
| nothingmuch makes note, especially for recent dabblings with stevan and lazy subclasses of Tree::Simple | 19:25 | ||
| thanks, Juerd! | |||
| Juerd_ | Welcome as always | ||
| nothingmuch | i wonder why no one mentioned Data::Alias when i needed it | 19:27 | |
| but with a much more vague name | |||
| Array::RefElem got the job done | 19:28 | ||
| Juerd_ | p6l consulted re lists in scalar context | 19:32 | |
| autrijus | Juerd_: good. I was about to. | 19:33 | |
| Juerd_ | Eh, no | ||
| p6l consulted re lists in STRING context | |||
| Sorry | |||
| autrijus | ah. I'll followup as needed anyway. | ||
| Juerd_ | Hm | ||
| That's weird tohugh | |||
| though | |||
| I've requested something strange | |||
| scalar reverse LIST should of course be an arrayref | 19:34 | ||
| 4~reverse "LI", "ST" should be TSIL | |||
| lucs | Er, can you prefix that with some non-Unicode please? | 19:36 | |
| Juerd_ | It's non unicode | ||
| It's IRC colouring | |||
| lucs | Oh :) | ||
| Juerd_ | <red>~</red>reverse | ||
| I suggest you seek a more capable IRC client | |||
| lucs | You want me to have color, eh. | ||
| Juerd_ | Yes, it has very practical use | ||
| Juerd_ hates colour abuse as much as everyone else | |||
| lucs | You're probably right :) | 19:37 | |
| Anyway, you were saying ~reverse ... | |||
| Juerd_ | See p6l | 19:38 | |
| lucs | Okay, thanks. | ||
| nothingmuch | autrijus: are there any docs explaining how pugs is implemented? | ||
| Juerd_ | Just after typing the first message, autrijus' comment made me realise I had been careless when composing it. | ||
| lucs | (I'm not spending enough time following all this.) | ||
| Juerd_ | Neither am I | ||
| I'm thinking of the details of how things work in Perl 5 and 6 | 19:39 | ||
| While most people are discussing only the new features | |||
| autrijus | nothingmuch: PA02. | ||
| Juerd_ | Which don't intruige me as much | ||
| I'm still looking for a better Perl 5 | |||
| nothingmuch | which is being written as we speak? | 19:40 | |
| autrijus | yes. | ||
| Juerd_ | Instead of a new language. Autothreading, MMD, ML, etc., will all come and I'll start learning them as soon as Perl 6 is in useful state. | ||
| autrijus | will be published at end of March. | ||
| probably debutted at YAPC::Taipei. | |||
| March 27 | |||
| Juerd_ doesn't join these big discussions about that | |||
| And is still thinking on a syntactic level of strings and numbers. | 19:41 | ||
| autrijus | pugs is already dangerously close to an useful state :) | ||
| Juerd_ | #1/usr/bin/pugs | ||
| How - who wrote that :) | |||
| autrijus | you! | 19:42 | |
| Juerd_ | No | ||
| autrijus | or nothingmuch? | ||
| Juerd_ | I didn't write the initial reverse.t | ||
| I only added some tests to ti | |||
| autrijus | fixed. | ||
| Juerd_ | it | ||
| Hm | |||
| autrijus | er. | ||
| Juerd_ | Yes, but have we now both fixed the same thing? | ||
| autrijus | you beat me to it. | ||
| Juerd_ | Heh. | ||
| autrijus | journal up. | ||
| I'll sleep now. :) | |||
| nothingmuch | which file is that? | ||
| Juerd_ | Neat, /me goes to read | 19:43 | |
| autrijus | or at least, try to | ||
| nothingmuch | ⢠[syeeda:/usr/local/src/pugs] nothingmuch % svn blame t/op/reverse.t | ||
| 601 nothingmuch #1/usr/bin/pugs | |||
| Juerd_ | Rest well, autrijus | ||
| autrijus waves & | |||
| nothingmuch always does crap like that | |||
| sorry | |||
| good night, autrijus! | |||
| thanks for all the haskell help today! | |||
| rg0now | Folks! I have just uploaded the final Golf scripts to PerlMonks. It seems to work pretty nice, feel free to add them to the tests... | ||
| have a nice Perl 6 hacking... | |||
| nothingmuch | rg0now: do you have commit access? | ||
| rg0now | no I don't | ||
| nothingmuch | well, why don't you get some, and do it yourself? | 19:44 | |
| it's easy | |||
| autrijus | right. | ||
| rg0now | might I write a series of tests out of it? | ||
| nothingmuch | err, one minute | ||
| autrijus | give me your email. | ||
| nothingmuch | yes you may | ||
| and i will be glad to help | |||
| rg0now | [email@hidden.address] | ||
| where should I put the tests? | |||
| autrijus | Schwern! you're in golfer's realm now! :) | ||
| rg0now | I men, inot which dir? | ||
| Schwern | Great | ||
| rg0now | :-))) | 19:45 | |
| nothingmuch | well, uh | ||
| autrijus | t/golf/santa/ | ||
| ;) | |||
| rg0now | ok | ||
| autrijus | if not in test form, examples/golf/ | ||
| (I don't really know.) | |||
| nothingmuch | what about t/ext/golf/santa? | ||
| autrijus | ext? | ||
| nothingmuch | i think that's a better place to put 'generic' tests | ||
| extra, external, whatever you want | |||
| t/bonus/golf | |||
| maybe that is nicer ;-) | |||
| like perl5's japhs | 19:46 | ||
| they are sort of stress tests | |||
| Juerd_ | We need the examples to be tests | ||
| nothingmuch | golfs and japhs usually annoy the parser | ||
| Juerd_ | I'll see if I can think of a way | ||
| nothingmuch | Juerd_: i'm thinking we should keep them as they are mostlyh | ||
| perhaps refactor | |||
| and unit test the examples | |||
| Juerd_ | nothingmuch: As they are, yes | ||
| nothingmuch | thus testing both the examples and pugs | ||
| Juerd_ | But included in the test suite. | ||
| Still in the examples directory and all | |||
| But where output is static, it can be tested | |||
| And their compilation should always succeed | 19:47 | ||
| nothingmuch | hmm | ||
| autrijus | yup | ||
| at least test compilation. | |||
| nothingmuch | well, what about t/bonus/examples/progname.t containing unit tests for examples? | ||
| Juerd_ | Nothing is as shameful as having examples that don't work :) | ||
| autrijus | I'll leave the layout for you. but no "bonus" please :) | ||
| Juerd_ | nothingmuch: I was thinking of examples/output/scriptname | ||
| And t/examples.t which tests them all | |||
| autrijus really sleep & | |||
| nothingmuch | i tried doing that with exegesis 02's program | ||
| but had too many features that were not yet ready | 19:48 | ||
| ciao autrijus! | |||
| Juerd_: but then that file may bloat | |||
| autrijus | rg0now: invitation sent. welcome aboard | ||
| nothingmuch | if it really does unit test | ||
| Juerd_ | nothingmuch: Not really | ||
| nothingmuch: It tests compilation for each, and output for those of which static output is known | |||
| Nicely generating a plan of @examples + @outputs | |||
| nothingmuch | why not take it one step further? | ||
| put it in t/examples/sanity.t | |||
| Juerd_ | What'd that do? | 19:49 | |
| nothingmuch | exactly what your t/examples.t | ||
| Juerd_ | I'm not suggesting duplicating ANY of the example code | ||
| nothingmuch | but with t/examples/send_more_money.t checking that it actually works | ||
| no, not duplicating | |||
| Juerd_ | Why one test script per example? | ||
| Why not write one very simple harness for it? | |||
| nothingmuch | unit tests for the actual functions therein | ||
| Juerd_ | And store output with pugs $example > output/$example | ||
| Hm | 19:50 | ||
| Okay, you do that, I do this :) | |||
| nothingmuch | ok | ||
| Juerd_ | Why argue if we can have both :) | ||
| nothingmuch | maybe you should todo t/examples.t with backticks and todo_ok? | ||
| we could argue this is golf driven development and autrijus will implement backticks by the time we wake up tomorrow | |||
| Juerd_ | Hm | 19:51 | |
| Does pugs support pipes yet even? :) | |||
| nothingmuch | hmm | ||
| maybe we should port IPC::Run | |||
| Juerd_ | And spawning processes etc | ||
| stevan | pugs does read files and can eval strings :) | ||
| nothingmuch | we do have system() | ||
| Juerd_ | stevan: Ah! good point! | ||
| stevan | but that might blow up | ||
| nothingmuch | i think | ||
| Juerd_ | Now, does it have glob or readdir? | ||
| stevan | yeah I think we have system | ||
| Juerd_ | We can hard code this for now | ||
| nothingmuch | stevan: Tree::Simple lazification made sane: | ||
| no Object::Realize::Later crap | 19:52 | ||
| stevan | nothingmuch: ok | ||
| I assume you have been thinking about it more | |||
| nothingmuch | enter Data::Swap (really Data::Alias) (Juerd_++, xmath++) | ||
| stevan | nothingmuch: I am not familiar with it | ||
|
19:52
Juerd_ is now known as Juerd
|
|||
| Juerd | Good point | 19:52 | |
| stevan goes to CPAN and looks | |||
| nothingmuch | not really, i have been thinking about personal issues mostly | 19:53 | |
| and work | |||
| and hiking | |||
| neither was I | |||
| stevan | nothingmuch: yeah, my parents are down visiting, so my time has been limited | ||
| that and I was trying to hack a kwid2pod converter | |||
| jabbot | pugs - 618 - s/#1/#!/ | 19:54 | |
| stevan | so I can at least see my kwid :P | ||
| nothingmuch | demerphq's new japh is way cute: | 19:55 | |
| perl -Mre=debug -e "/just|another|perl|hacker/" | |||
| Juerd: for unit testing I propose each example script should have a sort of marker | 19:57 | ||
| err, maybe | |||
| Juerd | No | ||
| Example scripts should be pure and have no indication they're anything more than examples. | |||
| nothingmuch | and we could eval everything but the thing that runs the actual demo | ||
| Juerd | We're practically testing documentation | ||
| nothingmuch | so how test we they? | ||
| both Test::Output? | 19:58 | ||
| and unit tests, in one? | |||
| Juerd | I've no idea what you mean even. | ||
| nothingmuch | err, nevermind then | ||
| i'll find something clever to do | |||
| how do i capture stdout in pugs given current devel? | 19:59 | ||
| is there any test doing that? | |||
| Juerd | nothingmuch: tnx.nl/3650AZSG | 20:00 | |
| nothingmuch | pretty | 20:01 | |
| Juerd | It doesn't at al work though | 20:02 | |
| at all | |||
| autrijus: I don't think $_.foo should interpolate, or should it? | 20:03 | ||
| Schwern | It should, IMHO. Dunno what p6l decided. | 20:04 | |
| Else you're once again stuck writing "Your name is "_$_.name_"\n" | |||
| Instead of the more natural "Your name is $_.name\n" | |||
| ie. make accessors as easy to use as hash keys | 20:05 | ||
| Juerd | "Your name is {.name}" | 20:06 | |
| "Your name is {$_.name}" | |||
| Schwern | Ahh | ||
| Eh. | |||
| nothingmuch | $*OUT = open(">examples/output/quicksort"); | ||
| require "examples/quicksort.p6"; | |||
| Juerd | Scary, but you will get used to it. | ||
| nothingmuch | isn't that supposed to get me what I want? | ||
| Juerd | WEIRD | 20:07 | |
| I have REALLY WEIRD behaviour here | |||
| I'll commit so you can have a look | |||
| done; r619 | 20:08 | ||
| Run t/examples.t | |||
| Why is it iterating over only fp and quicksort? | |||
| Hm | |||
| <> isn't <.*> with greedy .*, right? :) | 20:09 | ||
| Uh oh. Let's see. | |||
| No, can't be. | |||
| @outputs is properly declared. | |||
| nothingmuch | i get 1 .. 10 | 20:11 | |
| Juerd | That is correct | ||
| After that, I get: | |||
| 1 ok # skip: Try to compile fp.p6 | |||
| 2 ok # skip: Try to run fp.p6 and compare to output/fp | |||
| 3 ok # skip: Try to compile quicksort.p6 | |||
| 4 ok # skip: Try to run quicksort.p6 and compare to output/quicksort | |||
| Which makes absolutely no sense | 20:12 | ||
| nothingmuch | only 4 | ||
| Juerd | What happens to hanoi? | ||
| And the others? | |||
| lightstep | i thought hanoi never worked | ||
| nothingmuch | oddly, 'for (@examples){ say $_ }' works | ||
| Juerd | lightstep: That's irrelevant right now, as I'm not even executing | 20:13 | |
| Or even compiling | |||
| I'm just iterating over hard coded arrays... | |||
| jabbot | pugs - 620 - fixed stupid hardcoding | 20:14 | |
| pugs - 619 - Adding stub for testing examples. Weird | |||
| nothingmuch | could it have something to do with 'expr if blah?' | ||
| when i comment if ($_ eq any(@outputs)) { }; it works | |||
| Juerd | No, hanoi is in outputs | ||
| nothingmuch | but with 'if ($_ eq any(@outputs)) { };', nothing in the block, it doesn't | ||
| good point | |||
| and shuffle/life aren't | 20:15 | ||
| how would you implement listary zip? | 20:26 | ||
| in haskell | |||
| i can get binary going | |||
| map head lists? | |||
| lightstep | transpose? | ||
| nothingmuch | what does that mean? | ||
| nothingmuch is a haskell noob | 20:27 | ||
| lightstep | transpose [[1,2,3],[4,5,6]] == [[1,4],[2,5],[3,6]] | ||
| nothingmuch | hmm | ||
| i don't have a transpose | 20:28 | ||
| where does it come from? | |||
| lightstep | it's in List | 20:29 | |
| nothingmuch | thanks | 20:30 | |
| nothingmuch tries zip.t op | 20:40 | ||
| how do i specify a list of lists? | 20:45 | ||
| in pugs internals? | |||
| Juerd | They don't exist. | ||
| Oh. | |||
| I don't know. | 20:46 | ||
| nothingmuch | i.e., greater list comma? | ||
| op1 "zip" = return . VList . foldr (++) [] . transpose . VListOfList . vCast | |||
| err, sort of | |||
| nothingmuch gives autrijus nightmares, so he wakes up and comes to IRC | 20:49 | ||
| Juerd | That's un-nice. | ||
| nothingmuch | it's for a good cause ;-) | 20:50 | |
| lightstep | foldr (++) [] = concat | 21:01 | |
| nothingmuch | ah | 21:02 | |
| maybe there is a 'zip_like_pugs_would_like_to' builtin too | |||
| lightstep: are you familiar with how pugs represents it's data types? | 21:03 | ||
| lightstep | i looked at the source twice | ||
| what is VListOfList ? | 21:04 | ||
| nothingmuch | imaginary | 21:05 | |
| the zip operator takes arrays like this: zip(@a;@b;$c) | |||
| tr/$/@/ | 21:06 | ||
| lightstep | if VList is always guarenteed to be a synonym to [Val], you can use id | ||
| nothingmuch | i'd like to feed that list, [[@a], [@b], [@c]] to transpose | ||
| what is id? | |||
| brb phone | |||
| lightstep | the identity function | ||
| Khisanth | hrm that was a couple of pages ago :) | 21:07 | |
| nothingmuch | id :: forall a. a -> a | ||
| what does that mean? | 21:08 | ||
| lightstep | that it works for any type of argument | ||
| you can feed it value of whatever type, and it returns something of the same type | |||
| nothingmuch | so is it a no-op? | 21:09 | |
| lightstep | no, it's useful in a situation with combinators, for example | ||
| nothingmuch | got a reference i could slurp? | ||
| lightstep | haskell.org/onlinereport | 21:10 | |
| nothingmuch | thanks | ||
| lucs | Juerd: Try this: tnx.nl/3651DNDH | 21:12 | |
| Juerd | "Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal)." | 21:13 | |
| I believe that's the old fashioned version of: Learn Perl 6 | |||
| www.norvig.com/21-days.html | |||
| integral | Haskell also fits quite a few of those | 21:14 | |
| Juerd | lucs: EEEEEEEEEk. | ||
| lucs | :-) | ||
| Juerd | for is descructive!?! | ||
| !!?!!! | |||
| (Enough drama.) | |||
| lucs | There's your examples.t bug in a nutshell. | ||
| Juerd | Great detective work | 21:15 | |
| nothingmuch | !!?!!! is an op i've not yet heard of | 21:16 | |
| Juerd | nothingmuch: !!?!!!expr is just !(!(?(!(!(!(expr)))))) | ||
| nothingmuch | i wasn't serious, Juerd... =) | 21:17 | |
| Juerd | ?!!?$foo is just a very elaborate way of saying ?$foo, but documenting that you're surprised about it being true ;) | ||
| die if ?!!?$foo | |||
| qmole | lol | ||
| Juerd | It's the symbolic equivalent of WTF?! | ||
| theorbtwo waits for somebody to create a $foo!? suffix operator... | |||
| Juerd | Hm | 21:18 | |
| !? :: | |||
| Or, better | |||
| ?! :: | |||
| $foo ?! die :: "pfew" | |||
| theorbtwo | ...which dies unless it's argument is true. | ||
| Juerd | hee hee | ||
| nothingmuch | i think ?! should be ternary ?? :: | 21:19 | |
| but with ?? die implied | |||
| Juerd | p6l | ||
| hm | 21:20 | ||
| In fact, POSTFIX ?! is probably more useful | |||
| For assertions | |||
| With postfix ? for the other way around | |||
| open "/etc/shadow" ?; | |||
| Nahh | |||
| We need :(, which implies ; | 21:21 | ||
| nothingmuch | open "/etc/shadow" ?; asserts that it must work or we die? | ||
| theorbtwo | Er, when I said "suffix", I meant postfix. | ||
| Juerd | open "/etc/shadow" :( | ||
| theorbtwo | print "foo" ?!; | ||
| Means print "foo" or die. | |||
| Juerd | postfix and suffix are the same word :) | ||
| lucs | Where's the best place to report the "$_ $_" in 'for' bug? | ||
| nothingmuch | except that sufix can't send email | ||
| theorbtwo | Nah, suffix = prefix | postfix | ||
| Wait, no, that's afix. | |||
| Juerd | lucs: an autrijus's alarm clock | 21:22 | |
| theorbtwo | You're right. | ||
| lucs | Oh, he reads scrollback, eh. | ||
| Juerd | dunno | ||
| nothingmuch | unless we create ā suffix op | ||
| theorbtwo | Oh, apparently Gaim isn't the only client that thinks this is utf8. | ||
| lucs | autrijus: Please check out: tnx.nl/3651DNDH | ||
| nothingmuch | it is utf8 | ||
| theorbtwo | say "foo" ā½; | 21:23 | |
| Khisanth | nothingmuch: that op looks like an envelope :) | 21:24 | |
| nothingmuch | it is an envelope | ||
| it's the suffix complimentary to postfix | 21:25 | ||
| =D | |||
| . o O ( the only language whose operators have configuration files ) | |||
| morning, castaway! | |||
| Juerd | Hm | ||
| nothingmuch | joining the herd? | 21:26 | |
| Khisanth | nothingmuch: PHP didn't do that yet? :) | ||
| castaway just wanted totell nothingmuch that the suffix/postfix joke was very funny | |||
| Juerd | We have spies! | ||
| nothingmuch | Juerd: uhuh, theorbtwo is it | ||
| Khisanth++ | 21:27 | ||
| Juerd | That much was guessable | ||
| nothingmuch | castaway: thankyou *bow* | ||
| castaway has eyes everywhere! | |||
| Juerd | afk # sudden terrible pain | ||
| castaway | .. and all was quiet .. | 21:29 | |
| nothingmuch whines | 21:30 | ||
| my posts to p6l never generate replies | |||
| castaway | p6l? | ||
| nothingmuch | [email@hidden.address] | ||
| theorbtwo hopes Juerd is OK. | 21:31 | ||
| learn p6l as [email@hidden.address] | 21:32 | ||
| perlbot, learn p6l as [email@hidden.address] | 21:33 | ||
| perlbot | added p6l to the database | ||
| lightstep | perlbot: p6l | ||
| perlbot | [email@hidden.address] | ||
| castaway musters the perlbot | |||
| lightstep | perlbot, help | ||
| perlbot | Syntax: (fact) :: tell (who) about (what) :: (who) > (what) :: learn (what) as (info) :: relearn (fact) as (info) :: facts (search term) :: shorten (url) :: shorten it :: search (module) :: docs (module) :: perldoc -f (function) :: math :: fortune :: flip :: host (type) (record) :: rot13 :: roll (die) :: tempconv (temp) :: scramble (text) :: 8ball :: slap :: diss :: what time is it :: highest karma :: lowest karma | ||
| theorbtwo notes that you can /msg perlbot. | 21:34 | ||
| nothingmuch | Juerd: is the destructive for bug tested for? | 21:36 | |
| lucs: maybe you? | 21:38 | ||
| lucs | Not that I know of. Where would such a test go? It's just not supposed to do that :) | 21:39 | |
| nothingmuch | r621 | ||
| lucs | My example doesn't show where exactly things are going wrong either. Is it in the stringification? | 21:40 | |
| nothingmuch | i don't think so | ||
| the test case I wrote uses push | |||
| jabbot | pugs - 621 - Test for a weird bug that Juerd found an | 21:44 | |
| theorbtwo | Who does jabbot belong to? | 21:45 | |
| ...and can they fix it to give full changelog entries? | 21:46 | ||
| Khisanth | theorbtwo: gugod probably :) | ||
| theorbtwo | ...or at least postpend a '...'? | ||
| castaway | append. | ||
| nothingmuch | suffix ;-) | ||
| theorbtwo | Er, right. | ||
| nothingmuch | what is an appix? | 21:47 | |
| sounds like some kind of energy bar | |||
| castaway | or suffend? | ||
| theorbtwo | Thats affix. | ||
| Khisanth | nothingmuch: sounds like an insect | ||
| theorbtwo | affix = prefix | postfix | ||
| castaway | das ende vom suff ,) | ||
| nothingmuch | appix = append -> fix | ||
| it is suffix ~~ $_ ~~ postfix | 21:48 | ||
| i think | |||
| theorbtwo | Not to be confused with applix. | ||
| nothingmuch | (does ~~ chain?) | ||
| castaway | hmm Applix | ||
| theorbtwo | Yes. | ||
| Khisanth | Applix - yet another linux distro! | ||
| theorbtwo | \\n Bool chain ~~ (Any, Any)\ | 21:49 | |
| castaway | An office variant | ||
| steveq | Hi there, quick pugs question: Does it support sorting of lists yet? If so what's the syntax, i couldn't spot it in the t/ directory | 21:51 | |
| nothingmuch | err, maybe @list.sort { $^a cmp $^b } | 21:57 | |
| but i don't think it's there yet | |||
| you can use examples/quicksort.t for now ;-) | 21:58 | ||
| wolverian | that'd need to be .sort:{...} | ||
| steveq | nothingmuch: yeah, i spotted that one | ||
| nothingmuch | cmp is there | ||
| wolverian: want to test, or should I? | 21:59 | ||
| steveq | nothingmuch: and also <=>? | ||
| nothingmuch | uhuh | ||
| t/op/relational.t | |||
| theorbtwo | Hmm, so we have enough to implement sort! Very cool. | ||
| wolverian | nothingmuch: I can't now. I'm stuck on a windows computer that isn't mine. :/ | ||
| nothingmuch | i'll try to get to it | ||
| steveq | When I saw you'd done reverse it seemed the next step ;-) | ||
| rg0now | might I ask something now, or do I disturb anything? | 22:00 | |
| theorbtwo | Ask away. | ||
| nothingmuch | rg0now: always | ||
| steveq | We need the schwartzian transform in perl6 :-) | ||
| rg0now | I seemed to find a bug with =<> operator | ||
| as TimToady pointed out at perlmonks | |||
| this might work as the meagical <> in Perl5 | |||
| theorbtwo | .sort should ST if it wants to by itself. | 22:01 | |
| rg0now | so it might read from the file named in the first command line argument in some cases | ||
| Khisanth | oooh a fish operator! :) | ||
| rg0now | :) | ||
| Juerd can barely type | |||
| steveq | theorbtwo: that would be nice | ||
| nothingmuch | >==x> | ||
| Juerd | nothingmuch: No, but examples.t shows it | ||
| rg0now | I maen this: my@l= =<>; should read from ARGG[0] | ||
| isn't it? | |||
| Juerd | steveq: No, sort automatically caches | 22:02 | |
| So no need for an ST | |||
| nothingmuch | Juerd: committed as r621 to t/base/for.t | ||
| Juerd | afk | ||
| nothingmuch | ciao! | ||
| theorbtwo | Ugh. I just asked ghci to show me Prim.initSyms. | 22:08 | |
| Now my head hurts. | |||
| nothingmuch | does @foo = sort { } @array | 22:09 | |
| remain the same? | |||
| and should @array.sort dwim for num vs. str values? | |||
| nothingmuch thinks sort will not be too difficult to do | 22:10 | ||
| given op2Grep and op2Map | |||
| and the fact that List has sortBy | |||
| which is basically the same | |||
| lightstep | how do i tell svk to get files from openfoundry.org instead of perl.org? | 22:11 | |
| steveq | If the list has a numerical type will it automatically do a numeric comparison instead of a string cmp? | ||
| nothingmuch | lightstep: i think you do funny stuff to your depotmap | ||
| but that's where my knowlege ends | |||
| i use darcs normally | 22:12 | ||
| and svn temporarily for pugs | |||
| steveq: more than that | |||
| if the list is basically all nums or all strings | |||
| without explicit declaration | |||
| steveq | nothingmuch: excellent, where can I read about this? | ||
| nothingmuch | will the right thing be done? | ||
| steveq | I looked in the synopses but i couldn't find it clearly explained | 22:13 | |
| nothingmuch | steveq: read about what? | ||
| ah, | |||
| i'm asking myself | |||
| (luqui | Juerd)->answer | |||
| castaway | does yourseld know? | 22:14 | |
| jabbot | pugs - 622 - small update to AUTHORS and MANIFEST - n | ||
| theorbtwo | You know, I could have sworn that one of the [AES]es had lots of data on sort. | 22:21 | |
| steveq | I have to go now, I'll take a look at the irc logs tomorrow, thanks | 22:23 | |
| nothingmuch | ciao, steveq! | ||
| nothingmuch sees that it's not that trivial to create op2Sort | 22:26 | ||
| Darren_Duncan | While I can't name anyone in particular, I suspect that a number of people who committed to Pugs aren't in the AUTHORS file -- they should probably be added prior to 6.0.11 going out | ||
| since svn handles are often different from real names, I can't easily figure out who's missing and add them | 22:27 | ||
| or do you know an easy way? | |||
| nothingmuch | err | ||
| google the handles? | |||
| Darren_Duncan | I suppose, but that could take awhile | 22:28 | |
|
22:28
lightstep_ is now known as lightstep
|
|||
| Khisanth | add a test that will always fail telling people to add their name :) | 22:28 | |
| Darren_Duncan | I considered posting to p6c a reminder message to do that -- what do you think? | ||
| integral | do you have a list of nicks that are missing? | 22:30 | |
| Darren_Duncan | no because I haven't found an easy way to determine them | ||
| integral | ah | ||
| Darren_Duncan | I'll post to p6c a reminder | ||
| nothingmuch | anybody with subetha edit and haskell skills want to help? | 22:34 | |
| theorbtwo | Well, I have two halves of those. | 22:35 | |
| nothingmuch | theorbtwo: har | 22:36 | |
| theorbtwo | I've got SEE on a PearPC, and some haskell knowladge. | 22:37 | |
| nothingmuch | well, see woobling.org | 22:38 | |
| Darren_Duncan | How is PearPC -- the performance acceptable? | ||
| crysflame | . | ||
| theorbtwo | Workable for me. | ||
| Darren_Duncan | ok, the reminder notice is posted to p6l -- simplest solution | ||
| theorbtwo | P4/3GHz/HT. YMMV. | 22:39 | |
| Darren_Duncan | I see | ||
| Juerd | stevan: Probably. And in general, $foo.cmp($bar) | ||
| Darren_Duncan | oops, I meant p6c, not p6l | ||
| castaway | tis a tad slower on the 2ghz machine | ||
| Juerd | stevan: All speculation, though. | ||
| stevan: This is a good question for p6l | |||
| Darren_Duncan | I posted to p6c since that was the most Pugs-specific | 22:40 | |
| nothingmuch | Juerd or someone- please sanify t/op/sort in 1 minute | 22:41 | |
| Juerd | sanify? | 22:42 | |
| nothingmuch | make sure it tests correct things | ||
| Juerd | Comma between closure argument and slurpy list is not optional afaik | 22:43 | |
| nothingmuch | S06 seems to imply that sorting an array filled with numbers will dwim correctly | ||
| sort {}, @foo? | |||
| Juerd | You're not testing multi-condition sorts | ||
| Yes | |||
| And sort [ {}, {}, {}, ... ] <== @foo | 22:44 | ||
| nothingmuch | ah | ||
| jabbot | pugs - 623 - Sort of guesswork test | ||
| Juerd | I'll forward you a message I got from Damian if you want. | ||
| nothingmuch | which is instead of { $^a[0] <=> $b^[0] or $a^[1] <=> $^b[1] }? | ||
| sure | |||
| Darren_Duncan | which test file is array *comparison* done in? | ||
| nothingmuch | Darren_Duncan: theoretically smartmatch.t | 22:45 | |
| Test's is routines will stringify | |||
| and since the values are simple stringification is a good enugh test | |||
| enough | |||
| Juerd | nothingmuch: You have 2 messages. | 22:46 | |
| Darren_Duncan | okay then | ||
| nothingmuch | maybe it should really be ok(@a »eq« @e) | ||
| grazie, Juerd | |||
| why is multi criteria split up, btw? | |||
| Juerd | prego | ||
| split? | 22:47 | ||
| nothingmuch | well, err | ||
| made possible | |||
| i mean, isn't sort with one comparison block good enough? | |||
| Juerd | No | ||
| Because of the dwimmery | 22:48 | ||
| { .<foo> } | |||
| Darren_Duncan | a single block should certainly be tested | ||
| it's the least that's needed | |||
| Juerd | That is actually { $^a<foo>.cmp($^b<foo>) } | ||
| nothingmuch | err | 22:50 | |
| i'm thinking maybe i'll fix the sort {}, @a | 22:51 | ||
| and leave the more complicated stuff to others | |||
| theorbtwo | With no block, you mean? | ||
| nothingmuch | because i just noticed i'm dropping dead | ||
| theorbtwo | Is that even defined? | ||
| nothingmuch | t/Synopsis/S06.pod: @nums ==> grep { $_ % 2 } ==> sort ==> map { $_**2 } ==> @oddsquares; | ||
| theorbtwo | Larsen, is your proper name Stefano Rodighiero for the AUTHORS file? | ||
| nothingmuch | theorbtwo: uhuh | 22:52 | |
| larsen | theorbtwo: yes. | ||
| AUTHORS of what ? :) | |||
| nothingmuch | pugs | ||
| theorbtwo | Pugs, of course. | ||
| larsen | largely exagerate, but thanks | 22:53 | |
| theorbtwo | You have a checkin, so you go in AUTHORS. | ||
| crysflame | oooo | 22:57 | |
| nothingmuch: that's very nice to see. :) | |||
| nothingmuch | crysflame: eh? | ||
| Juerd feels so smart after his latest post to p6l :) | |||
| crysflame | 14:52 @nums | 22:58 | |
| Juerd | Now all that's left is watch the idea get smashed and bashed... :) | ||
| nothingmuch | Juerd: rhs quoting will probably be confusing | 22:59 | |
| what if it's a listop? | |||
| Juerd | nothingmuch: Why will it be? | ||
| nothingmuch | f // @list? | ||
| Juerd | That's WEIRD syntax | ||
| Then just make it &f | |||
| nothingmuch | because things that look quoted are bound to be treated as such by the user | ||
| i meant sort of like s// | 23:00 | ||
| Juerd | nothingmuch: As I said, think of s/// | ||
| nothingmuch | but with a replacement list | ||
| not a replacement string | |||
| Juerd | AND, they'll very quickly understand it. | ||
| One problem I have with sprintf now is that you need 2 sets of delimiters, nested. | |||
| sprintf4(10"%03d %15s10", @foo4) | 23:01 | ||
| hm | |||
| sprintf4(10"%03d %15s10", @foo4) | |||
| Stupid colour parsing of ^C, | |||
| crysflame | where'd you copy that from? | ||
| Juerd doesn't understand the question | 23:02 | ||
| theorbtwo | Hmm, now missing 5 people for AUTHORS. | ||
| nothingmuch would like to see format extensions to sprintf | |||
| crysflame | how did you syntax colorize perl on irc? | ||
| Juerd | crysflame: With IRC colours. | ||
| nothingmuch | that allow duplicating stuff | ||
| crysflame | manually? | ||
| theorbtwo | (00:01:20) Juerd: Stupid colour parsing of ^C, | ||
| Juerd | Yes | ||
| nothingmuch | a bit like unpack | ||
| crysflame | o | ||
| nevermind | |||
| nothingmuch | anywho | ||
| i'm falling asleep | 23:03 | ||
| good night | |||
| Juerd | Bye nothingmuch | ||
| theorbtwo | G'night. | ||
| crysflame bows | |||
| larsen | ciao nothingmuch | ||
| nothingmuch | i don't know how to make zip(@a;@b;@c) be a list of VLists | ||
| castaway | - | ||
| nothingmuch | if anyone wants to try, here is prelim fscking of op1 "zip": | ||
| castaway | night asleep | ||
| nothingmuch | op1 "zip" = return . VList . concat . transpose . vCast | ||
| autrijus must help us tomorrow | 23:04 | ||
| jabbot | pugs - 624 - test: sort {} @a -> sort {}, @a | ||
| Juerd | nothingmuch: ;?! | ||
| nothingmuch | ? | ||
| oh | |||
| luqui said so, Juerd | |||
| i much prefer @a Ā„ @b Ā„ @c myself | |||
| Juerd | rationale? | ||
| nothingmuch | err | ||
| i don't know | |||
| Juerd | I prefer @a Y @b Y @c | ||
| theorbtwo wonders if alinbsp == Alin Iacob == ALIN. | |||
| Juerd | It took months before I got what I wanted with Y | 23:05 | |
| nothingmuch | you basically mush a multidimentional array into a one dimentional zipped one | ||
| sort of | |||
| Juerd | After even proposing z to just get \w ascii into people's minds | ||
| theorbtwo | Y is an alias for Ā„ now? | ||
| Juerd | Yes! :) | ||
| (I proposed z when unicode broken bar was zip) | |||
| nothingmuch | but Y doesn't have the funky zipper like graphical qualities ;-) | ||
| Juerd | does too | 23:06 | |
| It's just not as detailed | |||
| nothingmuch | hah | ||
| theorbtwo | Doesn't nearly as much, but it is rather easier to type. | ||
| nothingmuch | anywho | ||
| on macs it's just alt instead of shift | |||
| anywho, Juerd - duke on p6l on zip(@a;@b) | |||
| i'm off | |||
| theorbtwo | Ā„ | ||
| D'oh. | |||
| Juerd | "duke"? | ||
| It's compose + Y + - here | 23:07 | ||
| Or compose + Y + = | |||
| theorbtwo | Um... perhaps sounds like "look" if you're used to Hebrew? | ||
| Juerd | eh, not + | ||
| compose, Y, - | |||
| Not all at the same time :) | |||
| 2776 messages | |||
| theorbtwo | You know, I really ought to mess with my keyboard map to make the key next to left shift into compose. | 23:08 | |
| Juerd | Not going to search if I have no idea what to look for | ||
| "zip" is too broad | |||
| theorbtwo | ...since I'm using an en-us keymap. | ||
| Juerd | I use right alt | ||
| theorbtwo | "zip(@a;@b)" | ||
| Juerd | Labeled Alt Gr | ||
| theorbtwo | I don't; I like keeping both my alt keys alt keys. | ||
| Juerd | Right alt doesn't do anything left alt does anyway. | ||
| theorbtwo | It does on an en-us layout. | ||
| Juerd | Weirdness! | ||
| theorbtwo | Not really. en-us is the best keyboard layout; all others are just bad copies. | 23:09 | |
| ;) | |||
| Juerd | No, en-us implies qwerty | ||
| And that S U C K S | |||
| theorbtwo | You have a certian point. | ||
| Juerd | www.dvorak.nl! | ||
| (my site) | |||
| theorbtwo | Hmmpf, Gaim tries to consider the ! part of the domain name. | 23:10 | |
| Hm, your shifted digits are straight en-us. | 23:11 | ||
| []/{} are moved up a row, though. | |||
| Juerd | Oh, that's because I'm using *US* Dvorak | ||
| Localized versions exist | |||
| theorbtwo | Ah. I also wondered why it was missing umlouted vowels. | 23:12 | |
| Juerd | Because Dutch doesn't have umlauts | ||
| We have tremas, which are essentially the same thing, but with a very different purpose | |||
| The glyph is called diaeresis | 23:13 | ||
| It's an umlaut when it's german-like in changing the sound of a vowel, only. | |||
| Webster's has a VERY weird definition though :) | |||
| 2. A mark consisting of two dots [[umlaut]], placed over the | |||
| second of two adjacent vowels, to denote that they are to | |||
| be pronounced as distinct letters; as, co["o]perate, | |||
| a["e]rial. | |||
| "umlaut" has nothing to do with that particular function of diaeresis | 23:14 | ||
| castaway | interesting | ||
| theorbtwo | They're using "umlaut" to be a generic term for the mark, it would seem. | ||
| I agree with you that they are wrong. | |||
| Juerd | Anyway, diaereses for vowel separatation are mostly unneeded | 23:15 | |
| I've been Dutch all my life, but only in more formal writings I use them. | |||
| theorbtwo | I quite agree, and they are very rarely used. | ||
| Er, in English, I meant. | |||
| Juerd | They're not official English. | ||
| They are officially mandatory in Dutch. | 23:16 | ||
| theorbtwo | People use a dash when they assume the audience can't tell. | ||
| Juerd | For example, Belgium is Belgiōæ½xEB | ||
| But 99% just type Belgie | |||
| theorbtwo | There is no official English. | ||
| Juerd | Which would literally be pronounced as Belgee | ||
| castaway | Queens English, of course! | ||
| Juerd | theorbtwo: In fact, there are several :) | ||
| theorbtwo | They used to be common in English, a few hundred years ago. | 23:17 | |
| Juerd | That's when Dutch and English were still dialects of the same language | ||
| theorbtwo | Juerd, nothingmuch said he meant duke as in duke it out. | 23:18 | |
| Juerd | I don't know what that means though | ||
| castaway | fight | ||
| theorbtwo | Right. | ||
| Juerd | I've spammed p6l too much for one day already. | 23:19 | |
| Someone else do it. | |||
| theorbtwo | That's OK, it looks like what is now in is great: | ||
| castaway | put your dukes up - boxing, because it was originally for (umm.. die adel ;) | ||
| theorbtwo | zip(), infix Ā„, or infix Y. | ||
| Juerd | I don't know the English word for adel | 23:20 | |
| theorbtwo | Annoyingly, BTW, on a xfree86 german keymap, yen in altgr-shift-<key where Y is on an en-us>. | ||
| castaway | its not occuring to me either ,) | ||
| theorbtwo | Even though that key produces a Z without the altgr. | ||
| castaway | gentry, nobility | ||
| theorbtwo | Thus, the Marquis of Queensbury rules. | 23:21 | |
| castaway | right | ||
| (ok, explained that oen to death ;) | |||
| Juerd | 00:25 <@Juerd> !travlang dutch english adel | ||
| 00:25 <+cu2q> Juerd: [adel] 1. nobility | |||
| Travlang agrees. | 23:22 | ||
| castaway | nice | ||
| leo weiss alles | |||
| Juerd | Nah, too german :) | ||
| Adel's dutch too | |||
| castaway | I figured | ||
| Juerd | weisst btw | ||
| theorbtwo | What was that you were saying about dialects of the same languge? | ||
| castaway | leo weisst? nah | ||
| Juerd | Not? | ||
| castaway | no | 23:23 | |
| Juerd | Hm. | ||
| castaway | Ich weiss, Du weisst, Er weiss | ||
| castaway scratches head. | |||
| Juerd | Stupid irregular verbs | ||
| tnx.nl/3652HDKB # travlang script | 23:25 | ||
| For those who like it. | |||
| obra | hi | ||
| Juerd | hi | ||
| castaway | low | ||
| obra debates between trying to do tests for vstrings in pugs and trying to refactor the perl5 debugger a bit | 23:26 | ||
| instead of all my work | 23:27 | ||
| pjcj | Isn't mjd rewriting the debugger? | ||
| theorbtwo | Meh, I should figure out that whole "where to stop" thing. | 23:28 | |
| I added all the committers to AUTHORS. | 23:29 | ||
| Now I'm considering going back and adding the proper (non-romanized) spellings of their names. | |||
| castaway | bah enough already ;) | ||
| Juerd | theorbtwo: Do so in the -1st column | ||
| theorbtwo: As to not mess up formatting for non-utf8 terminals | 23:30 | ||
| It's a good idea anyway. | |||
| āæā¤āā”āā£āāāāāāāā” | 23:33 | ||
| That's my name :P | |||
| castaway | umm, thank you | ||
| in ? | |||
| Juerd | utf8, I hope? | 23:34 | |
| jabbot | pugs - 625 - Lots of updates. Now lists all committe | ||
| castaway no have utf8 | |||
| theorbtwo | Eeep, I really did give that stupid of a commit message. | 23:35 | |
| crysflame | i see a UTF bom character | ||
| that's utf8 without terminal support for it | |||
| crysflame argues with his terminal | |||
| Khisanth | Waa|boer? | 23:36 | |
| Juerd: are the J and W suppose to be differently colored? | 23:37 | ||
| Juerd | Waalboer | ||
| No, but I don't mind :) | |||
| theorbtwo | Hmmpf. | 23:50 | |
| CPAN::Shell kills wide characters for me. | |||
| castaway | borken | ||
| theorbtwo | It thinks AUTRIJUS's ->fullname is 'Autrijus Tang'. | ||
| Juerd | search.cpan.org, copy, paste | 23:51 | |
| theorbtwo | That sounds like work. | 23:52 | |
| And not the fun kind. | |||
| castaway | WWW::Mechanize it | ||
| Juerd | Outsource it to India | ||
| theorbtwo | Was planning on it. More or less. | ||
| Juerd++ | |||
| And they probably even know how to deal with utf8 there. | |||