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. |