Chip needs help!!! www.geeksunite.net | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org | paste: sial.org/pbot/perl6 Set by theorbtwo on 10 July 2005. |
|||
svnbot6 | r5380, mugwump++ | Implement the variety of round-like functions (doesn't work - currently commented out) | 00:00 | |
nothingmuch | *sigh | 00:02 | |
mugwump | heck, I've got a sub that works interactively in pugs, but when placed in a test script makes pugs bizarrely expect an extra } at the end of file | 00:09 | |
nothingmuch | runFile is soooooooo slloooooooowwwww | ||
mugwump | ?eval sub r($n) { ($n<0) ?? int($n-0.5) :: int($n+0.5) }; [ r(0.5), r(0.4), r(-0.5), r(-0.4) ] | 00:10 | |
evalbot6 | [1, 0, -1, 0] | ||
nothingmuch | hmm | ||
nothingmuch is begining to be skeptical | |||
about env | |||
autrijus: backlog marker | 00:11 | ||
i think envBody should be like the lexical env | |||
containing the AST | |||
but also outer, pos, lexical variables, etc | |||
and the 'normal' env should be the dynamic scope only | |||
anyway, goto was fixed | 00:12 | ||
envPos was not carried over | |||
svnbot6 | r5381, nothingmuch++ | Fix goto borkedness - pos was not carried over from caller env | 00:13 | |
nothingmuch | . o O ( we have more test cases than we've got revisions ) | 00:14 | |
putter | any thoughts on how I can get from a Rational (ie, Ratio Integer) to a Double? there is fromRational, and then...? | 00:19 | |
nothingmuch | putter: hoogle is your friend | 00:20 | |
mugwump | ?eval $?PUGS_VERSION | 00:21 | |
evalbot6 | \'Perl6 User\'s Golfing System, version 6.2.7, June 13, 2005 (r5381)' | ||
nothingmuch | fromRat, i would think | ||
in Numeric | |||
www-users.cs.york.ac.uk/~ndm/hoogle/ | |||
search for Rational Double | |||
specificallly this: www-users.cs.york.ac.uk/~ndm/hoogle...romRat.htm | 00:22 | ||
putter | yay, it looks like this did it... ((fromRational r)::Double) | ||
putter looks at hoogle... | |||
nothingmuch | ah, the inferencer doesn't know if you meant a double or float? | ||
ah, :i Fractional says Double and Float are also instances of Fractional | 00:23 | ||
so fromRat is silly | |||
mugwump | ?eval my $a = { <1 2 3 4 5 6> }; $a<1 ?? "foo" :: "bar"; #> | 00:24 | |
evalbot6 | [undef, undef, undef, undef, undef, undef] | ||
putter | nothingmuch: yes, I think that was it. | ||
mugwump | ?eval my $a = { <1 2 3 4 5 6> }; $a < 1 ?? "foo" :: "bar"; #> | ||
evalbot6 | Error: cannot cast from VCode (MkCode {isMulti = False, subName = "<anon>", subType = SubBlock, subEnv = Just (MkEnv {envContext = CxtItem (mkType "(mkType "Scalar")"), envLValue = False, envLexical = MkPad (padToList [("$?1",[(<ref>,<ref>)]),("$_",[(<ref>,<ref>)]),("$a",[(<ref>,<ref>)]),("$code",[(<ref>,<ref>)]),("$lang",[(<ref>,<ref>)]),("%_",[(<ref>,<ref>)]),("&?BLOCK_EXIT",[(<ref>,<ref>),(<ref>,<ref>),(<ref>,<ref>),(<ref>,<ref>),(<ref>,<ref>),(<ref>, | ||
putter | hoogle should go in some doc somewhere... | ||
nothingmuch | anywho, i ought to sleep | ||
USETHEM | 00:25 | ||
;-) | |||
putter | :) | 00:26 | |
'night | |||
nothingmuch | is(("a\b" ~~ rx:P5/a\\b/ && $<>), "a\b", 're_tests 205/0 (239)', :todo<bug>); | 00:27 | |
that's not right, is it? | |||
\b is bell or backspace (i forget) | 00:28 | ||
and \\b is backslash b | |||
Khisanth | neither | ||
\b is \w on one side and \W on the other | |||
nothingmuch | no, not in a regex, in a string | ||
nothingmuch knows his zero-width-assertions | |||
gotta love em | |||
Khisanth | bell is \a | 00:29 | |
nothingmuch | right | ||
hmm | |||
in pugs saying "a\b" doesn't work at all | |||
putter | nothingmuch: how would you (one line) describe hoogle...? | ||
nothingmuch | putter: cross index of std haskell libs... searchable by type signature, name, etc | 00:30 | |
putter | tnx | 00:33 | |
re "a\b", weird. hey, in perl6, let's not follow perl5's example of "you are trying to find \b in the man pages, wuaaaahahahaha". | 00:38 | ||
svnbot6 | r5382, putter++ | In hack.pod, added a link to hoogle. nothingmuch++ | ||
putter | Oh. \b is backspace. that makes sense. | 00:39 | |
?eval ("a\b" ~~ rx:perl5/a\b/).chars | 00:41 | ||
evalbot6 | 1 | ||
putter | My fuzzy recollection is there is code to escape \mumble before handing it off to the rx engine. Perhaps \b isnt done. | 00:42 | |
Khisanth | ?eval ("a\b" ~~ rx:perl5/a\x8/).chars | ||
evalbot6 | 2 | ||
stevan | Guten Abend mein Damen und Herren :) | 00:44 | |
mugwump | wie gehts, mein freund? | 00:45 | |
stevan | nadda mucho amigo | ||
und du? | |||
mugwump: I added the ability for things like 'Dog-0.0.1-cpan:JRANDOM'->new() to the metamodel today | 00:46 | ||
mugwump | das Spiel aufpassen, eine Bier essend | ||
stevan | but shortly after I was questioning that | ||
(ok, we have reached the end of my German vocabulary, at this point, all I have left is curse words :) | 00:47 | ||
mugwump | Babelfish++ | ||
stevan | :D | ||
mugwump | that's great. hey, I think that stuff I was trying to hardwire into the metamodel will actually be an interesting case of a module that alters the metamodel | 00:49 | |
ie, the "companion" relationships... like automatic doubly-linked lists | |||
so, you'd go: | 00:50 | ||
class Node { has @.children is double_linked(:to<parents>); has @.parents is double_linked(:to<children>) } | 00:51 | ||
stevan | how would that work exactly? | 00:52 | |
mugwump | glad you asked :) | 00:53 | |
stevan | I am not sure I understand the is double_linked | ||
I mean I understand what you are doing (recursive datatypes), but... | |||
mugwump | so, double_linked would make the Node.children accessor a Proxy method via the MetaModel | 00:56 | |
The Proxy method would do set operations to determine "changed" values by an array operation | |||
(ie, missing/new members) | |||
Then send messages to those nodes that they need to add/remove $?SELF to/from their @.parents | 00:57 | ||
stevan | this is for some kind of Tree data structure? | 00:58 | |
mugwump | they might be on different classes, too; | 00:59 | |
class Account { has Transaction @.transactions is double_linked(:to<account>) }; class Transaction { has Account $.account is double_linked(:to<transactions>) } | |||
stevan | ahh, I see | 01:01 | |
mugwump | So, attribute accessors themselves have "messages" sent to them depending on the context they are used | ||
ie, a "proxy" accessor is defined as; | 01:02 | ||
method attribute is accessor( :STORE{ ... }, :FETCH{ ... } ); | |||
stevan | nice | 01:03 | |
mugwump | (see also t/oo/attributes/mutators.t) | ||
stevan | have you proposed that on p6l? | ||
mugwump | yes, Luke liked it | ||
status is "tentatively not entirely disapproved of by all(@Larry)" | 01:04 | ||
However, when you use a subscript operator on an attribute, it needs a different accessor quasi-method to be called; | 01:05 | ||
$object.attribute<val> # :HASHLOOKUP ? | |||
$object.attribute{"val"} # :HASHLOOKUP ? | |||
$object.attribute[123] # :ARRAYLOOKUP ? | |||
In Class::Tangram, I handle this with a calling convention for attributes considered "containers" - ref, set, array, hash | 01:07 | ||
eg, you'd call $object.attribute("val"); to lookup - this would be an array or hash deref, depending on the type of "val" | 01:08 | ||
For example, a property that is an ordered hash would respond to both styles of accessing | 01:10 | ||
either that, or there is a general :OBJECTREF { ... } quasi-method, that returns a Proxy object which is responsible for responding to the post_circumfix:Ā«<>Ā», etc methods | 01:14 | ||
See also search.cpan.org/dist/Class-Tangram/...ainers.pod for the rest of the information about the container calling convention stuff | 01:17 | ||
stevan | this is interesting | 01:18 | |
definitely not for the newbie :) | |||
I do like the proxy idea though | 01:19 | ||
mugwump | proxy objects are specced already | ||
stevan | on a very very basic level, it seems like you are adding the ability to do more sophisticated accessor/mutators through the metamodel | ||
yes, but proxy in the object space is less specced/thought out it seems | 01:20 | ||
the Proxy stuff I have seen is all related to lvalues | |||
mugwump | sure. perhaps I'll have to write S14 to flesh this out | ||
stevan | but I have to run for now, I will check it out on p6l though | 01:21 | |
svnbot6 | r5383, Stevan++ | Perl6::MetaModel - adding a test for some examples in A12; nothing much else :) | 01:26 | |
r5384, putter++ | * Moved sprintf and Scalar::as to Prelude.pm from Prim.hs. They now correctly handle variously typed arguments. Un-todo-ed 2 tests. Removed a bogus test. | 01:47 | ||
r5385, mugwump++ | Add a few more tests to rounding tests, and make tests pass by adding to Prelude.pm | 01:54 | ||
putter | mugwump: I got floor and friends to typecheck. Waiting on a compile to see if they actually work. Does the Prelude.pm stuff obsolete the Prim.hs stuff? | 01:59 | |
autarch | putter: I don't think so. Isn't it much slower if it's done in the prelude? | ||
mugwump | not these days | 02:00 | |
I'm ambivalent to which is used... | |||
mugwump & # meeting | |||
putter | seems to work... hmm... & | ||
autarch | if prelude isn't slower, it makes sense to write in the prelude for accessibility | 02:02 | |
putter | I'll put them in Pugs::Internals, and they can be used or moved as desired. | 02:04 | |
autrijus | as of today, prelude isn't slower anymore; migrating composite primitives and new primitives to Prelude.pm makes a lots of sense. | 02:08 | |
svnbot6 | r5386, autrijus++ | * add `is builtin`, `is primitive`, `is safe` etc to | ||
r5386, autrijus++ | new prelude functions. also added Prelude authoring | |||
r5386, autrijus++ | guide at the top of Prelude.pm -- please help save | |||
r5386, autrijus++ | the world and make PIR generation possible again. | |||
autrijus | but please see the doc chunk in top of Prelude.pm, so we can keep PIR (and eventually P5) happy | ||
I need to run to get my laptop repaired... bbl | 02:12 | ||
will read the backlog on taxi... stevan++ putte++ mugwump++ geoffb++ gaal++ nothingmuch++ | 02:13 | ||
svnbot6 | r5387, putter++ | Finished haskell versions of floor,ceiling,round,truncate. mugwump++. Given the new r5385 Prelude.pm versions, I dropped them in Pugs::Internals. These two need to be syncronized with Emit/PIR.hs. | ||
putter | I just love pugs development... "I need to run to get my laptop repaired...[...] will read the backlog on taxi..." :) | 02:15 | |
a slight cautionary note on Prelude.pm... compiling Pugs.Run seems to be taking rather longer than it used to. perhaps unrelated. or my imagination. | 02:18 | ||
mugwump | 2min on my system | 02:19 | |
which is a fairly long debug cycle... | |||
svnbot6 | r5388, mugwump++ | Make otherwise condition a failure, not silently returning 0 ;) | 02:37 | |
putter | Am I correct in my impression that, PIR aside, all prelude regressions are now fixed? | 02:46 | |
s/prelude/compiled prelude/ | |||
svnbot6 | r5389, putter++ | Fixed failing t/oo/class/basic.t test. | 03:11 | |
putter | Err, in Parser.hs, why is "class" handled by both ruleClassDeclaration and ruleModuleDeclaration? | 03:12 | |
attempting consolidation... | 03:20 | ||
mugwump lols at "Please - listen to me. I'm an expert on IDS. I know whereof I speak." | 03:29 | ||
putter | err, which IDS? | 03:39 | |
autrijus | rehi lambdacamels | 03:49 | |
putter: your impression agrees with mine. | |||
I'm attempting to fix pir compilation now | 03:50 | ||
putter | ok. I'm testing a merged ruleModuleDeclaration. | 03:59 | |
Note to self: always have two projects going, so you can fiddle with one while the other compiles/tests. | 04:00 | ||
svnbot6 | r5390, Stevan++ | Perl6-MetaModel | 04:10 | |
r5390, Stevan++ | * adding support for "is ro" and "is rw" with regard to accessor/mutator generation | |||
r5390, Stevan++ | NOTE: this does not affect the underlying container type of the attribute (not sure how that would be handled yet) | |||
r5390, Stevan++ | * default is now 'ro' and not 'rw' | |||
r5390, Stevan++ | * updated all the tests to reflect this new default | |||
r5390, Stevan++ | * unified some the handling of meta-info for attributes | |||
gaal_ | morning | 04:12 | |
putter: Run.hs is slow to compile in the second pass now because it #includes the -CPugs output of the prelude | |||
autrijus | but that tradeoff is quite worth it | 04:13 | |
the only annoying thing is that it insist on rebuilding during "make ; make" | |||
gaal_ | autrijus: i noticed that `pugs -CPugs Test.pm` emits stuff for the prelude too. i understand why it does that of course, but i'm not sure that it should. | 04:14 | |
autrijus | gaal_: it should not | ||
gaal_: look, the thing is in userDefined | |||
the problem is on genprelude | 04:15 | ||
open my $pc, "$Config{pugs} -CPugs $Config{inline} |" or die "open: $!"; | |||
we want it to emit prelude code | |||
whilst in all other cases | |||
we do not. | |||
gaal_ | autrijus, re `make;make` yes indeed, but unless we break #include "PreludePC" into separate .hs modules that'd be hard to fix | ||
autrijus | so try to think something :) | ||
maybe setting a special env during gengprelude | |||
and activate bypass if -C and without that env? | 04:16 | ||
am I making any sense to you? | |||
gaal_ | yes, i understand this problem. | ||
and your proposale | |||
s/e$// | |||
originally i wanted to add an undocumented comdline arg | |||
since that would also allow us to avoid the hacky haskell munger filter | 04:17 | ||
ie have another function in Pugs.Compile.Pugs that doesn't say MainCC etc. | 04:19 | ||
excuse the typos this espresso is only 30% drunk | |||
04:20
gaal_ is now known as gaal
|
|||
gaal | i was about to say that we can use kwid now in Prelude but i see you beat me to it. :) | 04:22 | |
we should invent a trait for the prelude: is pure. it doesn't do anything (maybe it should be a documentation convention instead of a trait) -- except indicate that this builtin is implemented completely in the prelude. that way it'll be easier to separate pugs-specific implementation from things that should work in another implementation. this is.. not very urgent. :) | 04:25 | ||
shouldn't the new Num:: functions go in a class instead of being declared fully-qualified? | 04:27 | ||
autrijus | yeah | 04:35 | |
please go ahead | |||
ingy | hola | 04:37 | |
putter notices the phrase "make;make" went by... if "unoptimized" gets lost in the process, the compile time on Pugs.Run would be unsurprising... | |||
autarch | hi, ingy | 04:39 | |
mugwump | gaal: the reason I did that, is that I had invocant count mismatch problems with: class Num { method floor { } } | ||
gaal | putter no, the second pass Run is very long -- see PreludePC.hs | 04:40 | |
mugwump - okay, i'll not ci now | |||
ingy | autarch: hey, what you doing here? | ||
mugwump | well, if you can get it to pass be my guest gaal ;) | ||
gaal | have to leave for $work - have at it | ||
:) | 04:41 | ||
see you later. & | |||
mugwump waves | |||
putter | gaal: ah well. & | ||
autarch | autarch: uh, talking about perl6, mostly | ||
and pugs | |||
putter dev cycle is now 5+ minutes. :( | 04:42 | ||
ingy | converting DateTime? | ||
autarch | yeah | ||
not so much converting as rewriting, really | |||
ingy | sounds like a barrel of fun | ||
putter | hi, ingy | 04:43 | |
ingy | fyi I think I have a totally workable wysiwyg solution for work | ||
hi putter | |||
how's the life of pugs? | |||
putter: I'm thinking of rewriting Inline for Perl5 | 04:44 | ||
are you still on that mailing list?> | |||
mugwump | hey does anyone know if there has been a Ruling on tuple return types? eg sub divmod(Num, Num) returns (Int, Num) ? | 04:50 | |
putter | ingy: having a number of smaller classes could be neat | 04:52 | |
ingy: not on mailing-list, I don't think. | 05:03 | ||
weary sigh. Is there some way to say "dont precompile the prelude"? | 05:05 | ||
mugwump feels putter's pain | |||
putter is having flashbacks of using punchcards | 05:07 | ||
mugwump suggests changing the Prelude.pm to a stub that loads the real Prelude.pm at runtime for Prelude hacking | 05:08 | ||
putter | good idea. tnx. almost time to put brain to bed. | 05:11 | |
chromatic | Is it preflight time? | 05:16 | |
autrijus | chromatic: no, not yet, I'm still fixing PIR | 05:20 | |
svnbot6 | r5391, autrijus++ | * zeroth proofreading of ChangeLog | ||
r5392, autrijus++ | * minor textual fix to hack.pod | |||
r5393, autrijus++ | * rename "translate" to "codegen" | |||
putter | perhaps not quite. -BPIR is broken. plus I fuzzily remember there were some other regressions | ||
chromatic | Test::Builder has one weird one related to functions with the same name in different packages. | 05:21 | |
autrijus | both exported? | 05:25 | |
svnbot6 | r5394, autrijus++ | * in gen_prelude, use IPC::Open2 to avoid the dreaded whitespace bug. | ||
chromatic | No, I don't believe so. | 05:26 | |
autrijus | ok. which test is this? | ||
chromatic | t/010_Test_Builder.t in ext/Test-Builder/ | ||
Test exports plan, which the file uses, but the error message is of a parameter mismatch with Test::Builder::plan. | 05:27 | ||
autrijus | ext/Test-Builder/lib/Test/Builder.pm: sub plan (Str ?$explanation, Int ?$tests) is export { | ||
well. | |||
chromatic | Weird, where'd that come from? | ||
Wait, that's in the POD. | 05:28 | ||
autrijus | oh. | ||
chromatic | Can't fool me... for long! | ||
autrijus | that is weirdo indeed. | 05:30 | |
chromatic | Is there some namespace switching not happening? | ||
Or did the export trait parsing change recently? | |||
autrijus | no the export thing should work fine | ||
$?PACKAGE says we're in main | |||
so curiouser and curiouser | |||
if you import TBP and not Test then it fails to find &plan | 05:31 | ||
which is correct | |||
chromatic | I just switched the order of the use statements to put use Test last and it worked for a while. | ||
autrijus | define `for a while` | ||
chromatic | Now it fails to find open(). | ||
On line 46. | |||
autrijus | hm. very weird. ok, i'll color it as a showstopper, but I need to work on pir first | 05:32 | |
if you'd like to minimise it I'd be much grateful | |||
chromatic | It's a showstopper for claiming full OO support, but so is the DESTROY thing still open. I don't mind if it doesn't block the next release. | ||
autrijus | full OO support is for 6.28.0 and pends on metamodel incl. roles | 05:35 | |
putter | I should have a slight oo improvement in as soon as a make test finishes. | ||
chromatic | Alright, alright, I'll break stevan's stuff for a while then. | 05:36 | |
autrijus | cool. I need to run for $work, bbiab | 05:37 | |
putter | patch in. goodnight all. & | 05:47 | |
svnbot6 | r5395, qtplatypus++ | Implementing trans | ||
r5396, putter++ | Improved parsing of packages (modules, classes, etc). Some tests need to be un-todo-ed. | |||
gaal | anyone else getting this error? : | 17:12 | |
Error: No compatible subroutine found: "&Test::test_ends" | |||
svnbot6 | r5435, fglock++ | implemented DateTime::Span | ||
gaal | when using prove | ||
nothingmuch | gaal: i need a new ISP.. got any reccomendations, for cheapo business accts? | ||
static IP a must | |||
dhcp a plus | |||
gaal | nothinmuch, i like actcom, but well... | ||
you know that | |||
nothingmuch | they never replied to my inquiries | ||
i tried to get a price quote 3 times | |||
i'll try again | |||
gaal | 1-800-300-123x1 | 17:13 | |
nothingmuch | i'm getting sick of NV | ||
the connection drops all the time | |||
gaal | actually x3, you need customer service | ||
NV used to be great, but then they went the way of the corporate. | |||
nothingmuch | the problem is that i'm right in the middle | ||
i'm a coporate client, supposedly | |||
but I'm not big money | |||
i get supposedly better service | 17:14 | ||
but I get the butt end of that market share | |||
so I actually get the worst service of all | |||
while all I really wanted was reliability. | |||
gaal | i'd try actcom. really, they are very clueful and nice. not the cheapest but not cutthroats either. | ||
plus: haggle. | 17:15 | ||
nothingmuch | i used to be with them | ||
yeah | |||
ook | |||
gaal | so, you're not getting that error? | ||
nothingmuch | wait, lemme backlog | ||
no | |||
but autrijus played with END a while ago | |||
my pugs might be out of date | |||
i've been trying to hack MMD mishmash | 17:16 | ||
make DateTime pass it's test suite | |||
the sort order of variadic arguments is bad | |||
gaal | how much does a medium sized whiteboard cost? i want one for the hackathon | 17:17 | |
nothingmuch | i'd say 100-200NIS | ||
i'll chip in | |||
gaal | i'll see if i can borrow one from work :) | ||
nothingmuch | www.officedepot.co.il/(jthxkk204a1a...UBCATEGORY | 17:18 | |
gaal | since i don't need it afterwards. | ||
nothingmuch | 60x80cm is 120 NIS | 17:19 | |
wait, there's one at 880 | |||
80 | |||
these are cheap and big: www.officedepot.co.il/(jthxkk204a1a...?id=592014 | |||
gaal | i don't want to buy one and throw it away. i'm in an anti-consumerism streak. | 17:20 | |
nothingmuch | i'll find a use for it | ||
i could use one | |||
i have two in my cube at work | |||
i could bring them too | |||
but they're pretty small | |||
gaal | i have a small one. it's funny, i asked for "a small one" and a few days later something A3-sized showed up. | 17:21 | |
nothingmuch | is a3 small? | ||
oh right, it is | |||
gaal | kinda. twice A4. | ||
nothingmuch | that's very small | ||
Khisanth | gaal: just get a can of white paint :) | ||
and a brush of course | |||
nothingmuch | Khisanth: then you need to wait every time | 17:22 | |
gaal | indeed. if everyone were that literal all the time we could do business. | ||
Khisanth | not if you get the right paint :p | ||
gaal | (please echo >> things you think i should prepare for a hackathon) & | 17:23 | |
nothingmuch | food | ||
wifi hub | |||
(i can bring one) | |||
gaal | gabor is bringing one, plus a spare laptop | 17:24 | |
though i don't know how long he's staying | |||
nothingmuch | ah, gabor is coming too?> | ||
that's great | 17:25 | ||
beer | |||
coffee | |||
gaal | i always have those things :) | ||
nothingmuch | =) | ||
Khisanth | hrm drunken coding | 17:26 | |
gaal | i'm getting a hammock but i'm not sure i have a place to hang it up. | ||
nothingmuch | Khisanth: no, beer is energizing | ||
damn, my fix didn't change anything at all | |||
gaal | beer + summer in tel-aviv == lazy | ||
Khisanth | I would like to see you try that on the cop that pulls you over for drunk driving :) | ||
nothingmuch | Khisanth: one beer is legal | 17:27 | |
plus energizing does not mean "increases motoric skills" | |||
it peps me up. | |||
i can have 3-4 before i start being drowsy, and then I code badly | |||
gaal | nm, i'm not sure there isn't also a blood level measure, in which case small folk may not be ok with one beer. | ||
nothingmuch | gaal: i'm not really a small folk | 17:28 | |
svnbot6 | r5436, gaal++ | move Num subs to their own class | ||
r5437, fglock++ | added Date::Span class | |||
nothingmuch | i look smaller than I am | ||
nothingmuch probably weighs more than gaal | |||
gaal | brain the size of a planet... | ||
nothingmuch | but nevermind, i don't drive when drunk | ||
autrijus: when you wake up, i have a weird patch I'd like to discuss... not committing | 17:29 | ||
i'm off to get food | |||
gaal | um, something wrong with namespaces again. all the rounders are not 'is builtin', but the test for them manages to call them without qualification. | 17:31 | |
nothingmuch | eek | 17:32 | |
gaal | ?eval class F { sub fff {say "hi"} } fff | ||
?eval class F { sub fff { "hi"} } fff | |||
oh, not evalbot. darn. | |||
but that says hi :( | 17:33 | ||
nothingmuch: the test consolidation service should also store historical data and ideally allow some diffage. | |||
nothingmuch | gaal: yeah | 17:34 | |
there's a repo of results | |||
i think they should be submitted with HTTP post | |||
and arbitrary differ | |||
gaal | the database will get big, but it's a great tool. | ||
nothingmuch | like 'consolidate x and y and z' | ||
i don't mind big, i have GB to spare | |||
gaal | i told juerd i'd love to see it hosted on feather | ||
nothingmuch | i'll hack it in catalyst next weekend | 17:35 | |
gaal | noooo let's do it in p6! | ||
nothingmuch | too slow. | ||
this is heavy data munging | |||
we need it responsive | |||
nothingmuch thinks p6 is not ready for writing the tools yet | |||
since the tools need to deal with special cases, and they need to be fast | |||
and with the workaroundish nature of pugs around weird corner cases, i think we won't get very far | 17:36 | ||
gaal | special cases? i dunno, i think on the language level pugs prolly has what we need for this, no? | ||
nothingmuch | i don't know | ||
gaal | speed, yeah, is a problem. | ||
nothingmuch | these are hug structures... that's the main problem | 17:37 | |
gaal | anyway, food | ||
nothingmuch | and they need to be walked in <1s | ||
yeah, me too | |||
gaal | do everything in sqlite :) | ||
svnbot6 | r5438, fglock++ | fixes 'density' parameter | 17:51 | |
gaal | autrijus: regarding r5363, i didn't need to unlink the files - touching them workedforme. what's different with our setups? | 17:56 | |
eeeep! /me ls -l's and looks at the size of PreludePC.hs and other -CPugs outputs | 18:01 | ||
unspecced perl5 behavior: | 18:11 | ||
perl -le '$x = require Carp; $y = require Carp; print $x; print $y' | |||
$x is what do "Carp.pm" evaluates to, which happens to be 1. | 18:12 | ||
guess what $y is :-) | |||
answer: 1, apparently always. | |||
regardless of $x, as long , of course, the first require was successful. | 18:13 | ||
rafl_ | gaal: Well, why is that unexpected? if (exists $INC{$filename}) { return 1 if $INC{$filename}; ... } | ||
gaal | where are you taking that code from? | ||
oh, perlfunc does have it. interesting. | 18:14 | ||
well, i wonder what p6 should do. | |||
in the case of most class .pms, it's nice to return either the name of the class or a Class for $x: shouldn't $y be equal to $x in that case? | 18:16 | ||
rafl_ | gaal: It's from perldoc -f require | ||
gaal | but in that case they probably have to be weak references in %*INC | 18:17 | |
rafl_: thanks - saw it after you pointed out the code. | |||
but that means %*INC can no longer be a simple (name => path-or-hook) hash | 18:18 | ||
Limbic_Region | salutations fibonaci | 18:19 | |
nice handle | |||
fibonaci | oh | 18:21 | |
18:21
fibonaci is now known as luqui
|
|||
luqui | thanks | 18:21 | |
Limbic_Region | heh | ||
Limbic_Region had no idea | |||
luqui | When I was obsessed with breaking into the school computers, one of my logins was fibonazi | 18:22 | |
nothingmuch | luqui: ping | ||
luqui | ping me and then leave, eh? | 18:23 | |
nothingmuch | back | ||
Limbic_Region wonders how old luqui is | |||
nothingmuch | Limbic_Region: around my age ;-) | ||
stevan | Limbic_Region: emotionally or physically :P | ||
nothingmuch | luqui: i wanted to discuss pil->p5 | ||
Limbic_Region | when I was breaking into my school's computers - I didn't have a login - I used the teachers accounts | ||
luqui | ahh yes that old thing | ||
my hard drive died... again | 18:24 | ||
nothingmuch | oh crap | ||
i hate when HDs die | |||
stevan | luqui: that is no excuse | ||
nothingmuch | it's the worst kind of death | ||
stevan | you still have your punchcards | ||
luqui | heh | ||
nothingmuch | Limbic_Region: now make a guess | ||
Limbic_Region | circa 20 | 18:25 | |
stevan | BINGO! | ||
luqui | well, we're only approximately exactly 20 | ||
Limbic_Region | in my case - I had a guidance councelor who didn't believe I could break in and in the other case a principal that was hoping I could since he had gotten locked out | 18:26 | |
luqui | y tu limbic? | ||
Limbic_Region | venty-ocho | ||
so I had permission ;-) | |||
luqui | that's no fun | ||
Limbic_Region is celebrating his 3 year anniversary with Perl today as a matter of fact | |||
luqui | cool | 18:27 | |
That's about how long I've been using perl too | |||
... no, I guess it's more like 5 years | |||
wow | |||
time flies when you're programming perl | |||
Limbic_Region | yep | ||
nothingmuch | perl or perlmonks? | ||
Limbic_Region | both | 18:28 | |
got my account same day as I discovered Perl | |||
nothingmuch | i'm nearing my 3 year perlmonks ann | ||
Limbic_Region | well - that's not entirely true - I knew about Perl from afar but that's the day I decided to learn about it | ||
nothingmuch | but it's more like 3.5 of perl | ||
Limbic_Region | there has been no single thing that has consumed more of my time, thought, and energy | 18:29 | |
luqui | and yet, only three years | ||
Limbic_Region | err - in the same ratio I mean | 18:30 | |
Limbic_Region is sure he has spent more time masturbating then hacking perl but not in that time window | |||
luqui | haha | 18:31 | |
Limbic_Region | oh - this channel is logged isn't it | ||
nothingmuch | if only you'd have known perl in your youth? | ||
you prefix messages with [off] | |||
luqui | vim masturbate.pl | ||
Limbic_Region | nothingmuch - I wouldn't have such hairy knuckles | ||
nothingmuch | what do you get when you play with fire? | ||
Limbic_Region | in any case - I said thanks at the Monastery - but let me say thanks again here | ||
here's hoping p6 consumes more of my time in the next 3 years than p5 did in the previous | 18:32 | ||
nothingmuch | call me dumb, but I hope it takes up less time, with more yield | 18:33 | |
Limbic_Region | ok - you're dumb | ||
Limbic_Region was looking at it from the perspective of having that much free time in the next 3 years | 18:34 | ||
luqui | I hope it takes more time, with a greater yield ratio | ||
Limbic_Region | I was single for 2 of those 3 years | ||
luqui | the former or latter two? | ||
Limbic_Region | the former | 18:35 | |
luqui | oh... | ||
you better dump whoever it is | |||
nothingmuch | luqui: too late for him now | ||
Limbic_Region | heh - my wife probably would have to take issue with that | ||
luqui | dump, divorce, same difference | ||
nothingmuch wants to learn rubenstein's revenge | 18:36 | ||
luqui | ? | ||
Limbic_Region | perlbot google "rubenstein's revenge" | ||
grrr - that feature must have got lost when the HD got dismantled | 18:37 | ||
luqui | oh, it's a juggling thingy? | ||
nothingmuch | yep | ||
luqui | nothingmuch juggles? | ||
nothingmuch | some | 18:38 | |
Limbic_Region juggles too but only the very basics | |||
luqui was almost convinced after that yapc presentation | |||
gaal | nothingmuch: bring juggling balls to hackathon plz | ||
Limbic_Region | I ran a 10K race once with a guy who juggled the whole race | ||
nothingmuch | gaal: we have millions at work | ||
Limbic_Region: i once walked 10k | 18:39 | ||
nobody was juggling, but I made it | |||
gaal | lol | ||
luqui | I once thought about walking 10k | ||
but I didn't have a laptop at the time, so it was out of the question | |||
;-) | 18:40 | ||
nothingmuch | addict | ||
gaal rows five miles when not sucking | |||
luqui | uh | ||
is there a way to retroactively [off] a comment? | |||
nothingmuch | what comment? | ||
luqui | gaal's | 18:41 | |
:-) | |||
gaal | i think the channel logger is down anyway. | ||
nothingmuch | ah | ||
nothingmuch bikes 20KM when there's enough daylight | |||
gaal | actually, it's back up. what do you know. | ||
"Parse error in pattern" is a terrible error message. | 18:44 | ||
Limbic_Region | gaal - no 0x1 is a terrible error message | 18:45 | |
gaal | i like haskell better than i like make, so my expectations are higher. | ||
Limbic_Region | *shrug* - I need to take a crash course in brain surgery err um p6 OO | 18:46 | |
gaal | l~r: you should try examples/obfu/l33t.p6 | ||
that has useful error messages. | |||
luqui is teaching one of those... | 18:48 | ||
luqui just isn't sure when | |||
svnbot6 | r5439, fglock++ | added 'density' accessor | 19:08 | |
luqui | ooh | 19:16 | |
Larry's latest message on p6l is... | 19:17 | ||
brain-exploding | |||
or at least tangling | |||
geoffb | link? | 19:18 | |
luqui | www.nntp.perl.org/group/perl.perl6....uage/22220 | 19:19 | |
geoffb | thx | ||
pdcawley thought that Smalltalk rather neatly dodged the infinite Class/Meta/MetaMeta/MetaMetaMeta/... regress rather neatly. | 19:21 | ||
svnbot6 | r5440, fglock++ | 'density' fixes | ||
r5441, iblech++ | * Added a new test for "class MyValueType is value {...}": t/oo/value_types.t | |||
r5441, iblech++ | * Usual svn props. | |||
pdcawley | s/rather neatly// | ||
either will do. | |||
luqui | how did it do it? | ||
pdcawley | Feck! You don't expect me to remember do you? | ||
luqui | well, you said rather neatly | 19:22 | |
... twice | |||
pdcawley | But MetaClass isa Class... | ||
luqui | so I just ass-u-me-d | ||
pdcawley | I remember reading the purple book and thinking "that makes sense" and then forgetting about it. | 19:23 | |
luqui | heh | ||
pdcawley | I think it was the purple book anyway. | ||
luqui might be interested in learning some smalltalk | |||
then again... | |||
luqui doesn't really care about metamodels all that much | |||
pdcawley | If I remember rightly, the responsibilities worked out that the class was responsible for holding the instance methods, and the metaclass was responsible for holding the class methods. | ||
integral | hmm, what's the haskell equiv for join(", ", @list) ? | 19:24 | |
pdcawley | Hang on, I'll fire up a Squeak image and have a look. | ||
luqui wishes he knew | |||
integral | hmm, the tour of the prelude implements unwords in terms on foldr1 + some addSpace func | 19:26 | |
pdcawley | MetaClass isa ClassDescription isa Behaviour isa Object | 19:27 | |
Class isa ClassDescription | |||
nothingmuch | stevan says: smalltalk metamodel is teh suxx0r | 19:28 | |
pdcawley | Okay. And the roxxor would be? | 19:29 | |
luqui | Perl6::Metamodel? :-) | 19:33 | |
pdcawley | Heh. | ||
luqui | Well, Perl5's metamodel is pretty damn good | 19:34 | |
for not existing | |||
it's just the attribute thing that needs work | |||
rafl_ | I know that I asked this question already several times, but I didn't get an answer: Why are the p5 parts of pugs installed as source package (including Makefile.PL, MANIFEST, t/, etc.)? | 19:37 | |
luqui | you mean when you do make install? | 19:38 | |
svnbot6 | r5442, iblech++ | t/oo/inheritance.t -- Added tests, stolen from Larry. | ||
r5443, iblech++ | * Pugs.Parser -- Made "my Foo $foo .= new(...)" parse and work. | 19:40 | ||
r5443, iblech++ | * t/oo/construction.t -- Added a test for that. | |||
luqui heads home | 19:42 | ||
svnbot6 | r5444, bsmith++ | * Moved version variables from Pugs.Help to Pugs.Version. | 19:51 | |
r5444, bsmith++ | * Pugs.Help now import Pugs.CodeGen so that it can produce a correct list of | |||
r5444, bsmith++ | backends in the -h message. | |||
r5444, bsmith++ | * Fixed script/pugscc to use the Ghc backend rather than the Haskell backend | |||
r5444, bsmith++ | for --haskell and --ghc. | |||
r5445, iblech++ | util/gen_prelude.pl -- Fixed Haddock-confusing comment. | 20:03 | ||
rafl_ | integral: Maybe you can answer my question? | 20:09 | |
integral | hmm, perhaps | 20:12 | |
what do you mean by "installed as source package"? | |||
rafl? | 20:13 | ||
rafl_ | integral: Things like /usr/share/perl5/Code-Perl/Makefile.PL get installed. | 20:14 | |
svnbot6 | r5446, putter++ | Commented out (failing) test. $larry yesterday said Foo.isa(Class) is false. | ||
r5447, iblech++ | Pugs.Help -- Minor cosmetical fix: Added ''s around the "while" thing | |||
r5447, iblech++ | (consistency: There're ''s around "use module", too) and fixed a typo. | |||
integral | rafl_: ah, that sounds very much a bug :-) | ||
rafl_ | integral: Can you reproduce it? | 20:15 | |
integral | It should be recursing into the Code-Perl package and running that Makefile's install | ||
I don't install pugs... and I'm scared of makemaker... this really isn't my area | |||
rafl_ | integral: You can do make install DESTDIR=/tmp/foo or something. So you can remove it quite easily. | 20:16 | |
integral | sure, but there's bugs in the install process ;-) | ||
Aankhen`` | I'm getting $INSTDIR/lib/Code-Perl/Makefile.PL | ||
Did you install under /usr/share/perl5/? | |||
integral will do a quick build before poking | 20:17 | ||
rafl_ | I run perl Makefile.PL INSTALLDIRS=vendor. That should put the p5 stuff into /usr/{lib,share}/perl5/ | ||
I'll be right back. | 20:18 | ||
Aankhen`` | OK. | ||
afields | Working on my Perl 6 sets pod | 20:19 | |
Aankhen`` | Hmm. | 20:20 | |
afields | What's a good block of available punctuation, can { } be overloaded anymore? | ||
Aankhen`` | Basically, everything from lib/ appears to be copied to /usr/{lib,share}/perl5/ or whatever. | ||
rafl_ | Aankhen``: So that's seriously broken, isn't it? | 20:22 | |
Aankhen`` nods. | |||
Aankhen`` thinks. | 20:23 | ||
rafl_ | Will you fix it? | ||
Aankhen`` | Isn't lib/* copied by default in a regular distribution? | ||
I am not really sure how to fix it. | |||
integral | the .pm files should get copied into blib first, and then the blib installed | ||
rafl_ | OK, so I'll give a try in about an hour. | 20:24 | |
Aankhen`` | lib/* appears to be copied wholesale to blib/. | 20:26 | |
blib/lib/, actually. | |||
afields | Which is most likely to please Perl 6 authors: a) {.} {..} b) (.) (..) c) <.> <..> or d) none of the above; for Perl 6 grammar (To mark set bounds/intervals/continuences)? | 20:28 | |
Aankhen`` | I think d)... | 20:29 | |
svnbot6 | r5448, fglock++ | implemented more methods in Set::Infinite | ||
r5449, fglock++ | docs update | |||
afields | Aankhen``: How are sets approached from a Perl 6 perspective? | ||
Aankhen`` | The options you listed are very basic symbols; redefining their meanings would be quite catastrophic... :-\ | ||
Hmm... if you have a copy of the Pugs source handy, you could take a look at ext/Set/lib/Set.pm. | 20:30 | ||
(or svn.perl.org/perl6/pugs/trunk/ext/S...ib/Set.pm) | 20:31 | ||
afields | i"m thinking it might be advantageous to place meta-data about arrays (sets) at any given level of a multi-level structure | ||
Aankhen`` | my $set = set 23, 42, $some_object; | ||
afields | so should that be done with more syntax or a more procedural manner working on set objects | 20:32 | |
Aankhen`` | I suggest looking at the work already done first -- it might help you decide. | 20:33 | |
afields | OK | ||
I'm planning on looking at pugs | |||
just haven't got arround to reading all the source et | |||
Aankhen`` | You don't need to look at the Pugs source | 20:34 | |
. | |||
I am referring to the `Set` module in Perl 6, which is shipped with Pugs. | |||
The Perl 6 `Set` module, even. :-P | |||
afields | OK, so is this not going to somehow make it into base language | 20:35 | |
sets are just a special case type of an array? | |||
Aankhen`` | I dunno about that, I haven't looked at the implementation as such. | ||
afields | reason I ask is what if you want to deal with a very large set which can be partially specified ( 1 2 3 <..> 65535 ) for instance | 20:36 | |
dudley | is whitespace significant between a sub name and the opening paren of its parameter list? | 20:40 | |
i.e. is: | |||
sub foo ($bar) {...} | |||
equivalent to | 20:41 | ||
sub foo($bar) {...} | |||
Aankhen`` | Yes. | 20:43 | |
Khisanth | afields: more like hashes than arrays | 20:48 | |
afields | my @a = ( [1,2,<..>10], [3,4,<..>,7], { a => [9,10], b => [-$a,<..>$a] } ); | 20:50 | |
my @set rather | |||
Aankhen`` | rafl_ >> You could try something like this in Makefile.PL: `libs(map fixpaths($_), grep { -f "$_/Makefile.PL" && not -l "$_/Makefile.PL" } glob("lib/*"));`. | ||
That'd miss out `pugs.pm` and `pugs.pod`, I think, but it's a start. :-) | |||
Anyway. | 20:51 | ||
Aankhen`` goes to sleep. | |||
G'night. | |||
afields | the idea is not to actually store numbers between -$a and $a, but simply to store the meta-data of the set that the range of values will return numbers between the two bounds of the interval | 20:52 | |
and to do this using regular arrays | |||
I cover this in section: Storage vs. Usage | |||
fglock | afields: see also the 'Span' class | ||
afields | fglock: you are doing set work I see? | ||
fglock | afields: yes | 20:53 | |
afields | fglock: how much is done on things like continuances and incompletely specified sets, infinite sets? | ||
fglock | that's Set::Infinite - it will handle those | 20:55 | |
Khisanth | there is a Set::Infinite isn't there? :) | ||
afields | so each of these is a class which returns basically a blessed array? | ||
fglock | afields: no, it returns an iterator | 20:56 | |
Khisanth | you aren't suppose to care about implementation :p | ||
afields | Khisanth: well I might have to because I want to see the regex engine talk objects | ||
and sets | |||
nothingmuch | moose! | ||
fglock | it should return a Lazy List, but I think these are not fully implemented yet | ||
sili | that sounds like fun | 20:57 | |
afields | can't we do this in the base language, please? | ||
not the grungy stuff | |||
Khisanth | hmm both pp.h and chardefs.h has RETURN ... I don't think this will work out well | ||
afields | just the primitives of set operations | ||
nothingmuch wonders if you're allowed to talk back to schwern about quality stuff | |||
talk back == disagree | |||
geoffb | give 'im hell, nothingmuch | 20:59 | |
fglock | afields: the base language handles 1 .. 10, but it has some problems with 1 .. Inf | ||
geoffb | dammit, why does ambiguous tab completion ALWAYS choose the wrong one? | ||
afields | fglock: exactly, why even both dealing with infinity until it is actually used | ||
why even store 1..10 | 21:00 | ||
nothingmuch | heh | ||
afields | store 1, to, 10 ;) | ||
fglock | afields: that's how it works, actually | 21:01 | |
but the API makes it look like a list | |||
afields | fglock: ok, so then can I do 1 .. 10 in Perl 6 or 32 .. Inf and then find the compliment of the two arrays? | 21:02 | |
stevan | nothingmuch: I didnt say the smalltalk metamodel sucked | ||
fglock | yes - you can do that using the Span module already | ||
nothingmuch | stevan: yes you did ;-) | ||
stevan | I said it was more complex then it needed to be | ||
nothingmuch | ah | ||
stevan | in a drunken fit maybe | ||
but not when I was sober | 21:03 | ||
nothingmuch | i parse that as "sucked badly" | ||
stevan | nah | ||
nothingmuch | even if you said that verbatim | ||
i don't like complexity in something so atomic | |||
stevan | just more "academic" then "practical" | ||
nothingmuch | an ideal metamodel is very practical because it's so academic it's perfect | ||
stevan | the perfect metamodel: available in proof form only | 21:04 | |
afields | fglock: ok, that's good, but why not just make arrays that 2 bytes smarter to do it there instead of delegating it to a special class? I mean arguably you could omit the combinatoric logic in the base language and implement that as a module as long as arrays could better represent edge-case sets | ||
nothingmuch goes to have a cigarette | |||
Khisanth shoots nothingmuch | |||
nothingmuch | Khisanth: eh? | 21:05 | |
stevan throws luqui inbetween nothingmuch and bullet | |||
Khisanth | luqui is bulletproof? | ||
stevan | we shall soon find out | 21:06 | |
nothingmuch | just a little bit longer | ||
stevan | bah, he is off channel,... even worse | ||
fglock | afields: I think the language will be able to handle that, once everything is in place. Actually, it may end up using a module transparently (I guess that's what "Prelude" is for) | 21:07 | |
nothingmuch | Khisanth: are you going to explain or can I go? | ||
afields | fglock: so are you interested in more wacky suggestions on what would be nice to see for Perl 6 and sets? | ||
I like the fact that Unicode operators will work | 21:08 | ||
fglock | sure - please mail me [email@hidden.address] - I've got to leave now :( | 21:09 | |
afields | ok, thanks, good timing =) | ||
svnbot6 | r5450, bsmith++ | util/importgraph.pl - colourise nodes by import/export lists and 'qualified' | ||
r5450, bsmith++ | src/Pugs/Bind.hs - added export list | |||
Khisanth | nothingmuch: just the smoking :) | 21:14 | |
svnbot6 | r5451, putter++ | Commented out the envID field of Env. With it, my $x = sub{}; $x =:= $x was false, due to a single (prune-able?) mismatch. | 21:18 | |
nothingmuch | Khisanth: you can forgive me, I don't do it often | 21:19 | |
svnbot6 | r5452, putter++ | "Fixed" t/var/symbolic_deref.t. Replaced a random tested function with another currently working. And temporarily replaced =:= with ~~, as =:= on subs is still broken. | 21:35 | |
r5453, putter++ | Added failing tests for =:= on subs. | |||
nothingmuch | is anyone here familiar with pugs' current MMD dispatching? | 21:44 | |
geoffb | OK, WTF?!? | 21:47 | |
pugs> my $i; while ++$i < 2 {next; say "Saw $i"} | |||
Saw 2 | |||
nothingmuch | ooh | ||
geoffb | Ah, I see the blind spot -- it looks like all tests for next use a for loop | 21:51 | |
svnbot6 | r5454, putter++ | Added "&main::" where needed in caller.t. | ||
nothingmuch | geoffb: want to try to pair through it? | 21:55 | |
geoffb | Sure, what did you have in mind? | ||
nothingmuch | do you know how Eval.hs applies loops? | 21:56 | |
since every block is a closure it's really just repeated calls on the block | |||
each call get's a new dynamic scope | |||
geoffb | OK | ||
nothingmuch | with the next subroutine containing a closure that escapes | ||
(same applies for return, redo, etc) | 21:57 | ||
svnbot6 | r5455, putter++ | examples.t reverse.p6 was failing because an output line was added, without updating the tested output/ file. | ||
nothingmuch | line 444 | ||
geoffb | LOL | 21:58 | |
nothingmuch | LOL? | ||
geoffb | "probably needs work". | ||
Uh, yeah, definitely | |||
nothingmuch | heh =) | ||
okay | 22:00 | ||
cond is evaluated in Bool context | |||
vb is a cast from perl6's val that is a bool, into a boolean | |||
(haskell boolean) | 22:01 | ||
f is the transformer (id for while, not for until) | |||
if (f vb) is true, we reapply, otherwise we return the result of the conditional (always false) | |||
i forget the details of fix, but it builds and env | 22:02 | ||
geoffb doing too much window switching . . . rearranging windows . . . better | |||
nothingmuch | next isn't even generated... that's our problem =) | 22:03 | |
geoffb | OK, so it basically comes down to transferring some magic from the block starting at 368 (for) and/or 400 (loop) | 22:04 | |
nothingmuch | yeah, pretty much. | ||
i think while is simpler though. | 22:05 | ||
geoffb doing his best to keep up with several people talking to me at once | |||
nothingmuch | since there is no iterator to skip - just redo the loop, but with the conditional | ||
geoffb | yay, others have gone AFK, now back to trying to grok the code | ||
nothingmuch | heh | 22:06 | |
okay, i think i've got it | 22:10 | ||
i just have to remove a bajillion traces | |||
i was debugging MMD =( | |||
geoffb | Oy. | 22:14 | |
Either A) I'm not ready for this, or B) the different looping constructs have arbitrary differences that needn't be there, or C) both. | 22:15 | ||
Right now I'm leaning towards A or C. | |||
nothingmuch | hmm | ||
actually the loop application code is pretty tight | |||
for, loop and while are very different =) | 22:16 | ||
geoffb | Well, for example -- what is the diff. between genSymCC and genSymPrim? | ||
nothingmuch | genSymPrim takes a function, and makes a Prim out of it, and creates a symbol around that (a sub) | ||
genSymCC does - i dunno | |||
let's see? | |||
geoffb | I mean, my auto-acronym-expander thinks CC is "caller continuation", but . . . | 22:17 | |
OK | |||
nothingmuch | hmm | ||
yeah, i think I see | |||
aha! | 22:21 | ||
enterWhile is in Monads.hs | |||
it defines next | |||
and last | |||
hmm. | 22:22 | ||
pasteling | "nothingmuch" at 212.143.91.217 pasted "some traces of geoffb's while bug" (8 lines, 168B) at sial.org/pbot/11694 | 22:23 | |
nothingmuch | there's our bug | 22:24 | |
after next is invoked | |||
the execution continues | |||
in fact, next recurses into the while loop | |||
let's try to make it worse: | |||
pasteling | "nothingmuch" at 212.143.91.217 pasted "just like I pictured it" (10 lines, 217B) at sial.org/pbot/11695 | 22:25 | |
nothingmuch | =D | ||
geoffb | yep, there you go. | ||
What do you do to get those traces? | 22:26 | ||
Or did you just instrument the code? | |||
pasteling | "nothingmuch" at 212.143.91.217 pasted "code with traces" (12 lines, 593B) at sial.org/pbot/11696 | ||
nothingmuch | okay, we want to implement next with genSymCC | 22:27 | |
but with a catch - it just restarts the whole while loop sequence | |||
without losing the env | |||
geoffb | nod | 22:28 | |
nothingmuch | okay, let's have a crack at it | ||
geoffb | OK, let me just see if I understand here: | 22:29 | |
redo needs to recurse, so that should use genSymPrim. last and next do not, so they need genSymCC. | |||
Am I following correctly? | |||
nothingmuch | actually I think redo is also broken | 22:31 | |
it needs to abort the current block | |||
they are all like goto | |||
geoffb | OK, granted I don't know Haskell all that well (I'm basically reading it like an Italian reading Spanish), but it looks like the redo concept is "tail-recurse the loop block" | 22:32 | |
nothingmuch | it is | 22:33 | |
and next is the same | |||
except it tail recurses the conditional and the body | |||
and last is just go back to your caller | |||
geoffb | nodnod | ||
nothingmuch | ook, the right man for the job just left =( | 22:35 | |
geoffb | bleah | ||
cognominal | The 'Autrijus' method does not exist in the 'inc' path! # Autrijus manages even to mess perl5 :) | 22:36 | |
nothingmuch | i hope autrijus wakes up soon | ||
chromatic | Is Pugs.Embed.Parrot a deprecated module? | ||
nothingmuch | cognominal: ? | ||
cognominal | I got this message when trhing to install PAR with GnuPG support | 22:37 | |
no big deal | |||
putter | #haskell | 22:38 | |
nothingmuch | #haskell! | ||
geoffb | OK, may have to add another channel to the tabs. Is the proper #haskell on freenode, or some other net? | 22:39 | |
nothingmuch | freenode | ||
putter | oops:/ | 22:41 | |
nothingmuch | putter: have you got cont fu? | ||
chromatic | Ahh, it's src/Pugs/Embed/Parrot.hsc | 22:42 | |
pasteling | "chromatic" at 63.105.17.30 pasted "Dump PIR Output from Embedded Parrot (maybe more valuable in codegen; still somewhat valuable)" (31 lines, 1.1K) at sial.org/pbot/11698 | 22:45 | |
geoffb | OK, nm, I need a mental break, and it sounds like you've hit a wall too -- nothingmuch++ for diagnosis -- so I'm going AFK for a few. When I get back, I will roll a virtual die and either: 1) learn more haskell, 2) write tests for this bug, 3) work around and get more Perl 6 porting done, 4) take the night off and snack on Aussie Bites. :-) | 22:51 | |
nothingmuch | tests tests tests | ||
mui good | |||
i'm sort of watching tv (i'm a sucker for anthropology shows) so i'm losing concentration | 22:52 | ||
but I'll try to figure out how you can make a continuation that *isn't* caller CC | |||
geoffb | .oO( Aussie Bites! Now made from real Australians! ) |
||
(y) | |||
nothingmuch | reminds me of a nice calvin & hobbes | 22:53 | |
geoffb | There are bad C&B? | ||
nothingmuch | "Mom, are hambuger's made out of people from hamburg?" | ||
geoffb | :-) | ||
nothingmuch | "No calvin, don't be gross" | ||
"it's ground beef" | |||
"you mean i'm eating a cow?!" | |||
"i don't think I can finish this" | |||
geoffb | LOL | ||
nothingmuch | ofcourse, in the first cell he is full of apetite | ||
and in the last one he looks like in one of the oatmeal scenes | 22:54 | ||
geoffb | :-)_ | ||
My dad tells me that when he saw the C&B where Calvin's on the bus imagining piloting a bomber and bombing the frack out of his school, Dad thought "Wow, I've had EXACTLY the same daydream." | 22:55 | ||
nothingmuch | heh | ||
i like the dinosaur ones the best | |||
geoffb | My fav have to be the snowman grotesques | ||
nothingmuch | oh, they're wonderful | 22:56 | |
geoffb | OK, really AFK now | ||
nothingmuch | ciao! | ||
nothingmuch makes a wild guess | 23:17 | ||
nothingmuch smiles | 23:20 | ||
putter | nothingmuch: re cont fu, mediocre. something in particular? | 23:21 | |
nothingmuch | &next is broken in while | ||
but i've improvised a fix | |||
genSymPrim "&next" (const $ action >>= \res -> esc res) $ \symNext -> do | |||
-- genSymPrim "&next" (const action) $ \symNext -> do | |||
commented is old | |||
it would call the next iteration of the while, complete it | 23:22 | ||
and then go back and resume the statement after the call to next | |||
err, prepend that with callCC $ \esc -> do | |||
putter | looking... | 23:27 | |
nothingmuch | altering monads takes so long to recompile | 23:31 | |
mugwump__ | yeah, they have to go through customs | 23:32 | |
mugwump__ hmms at his nick | |||
nothingmuch | mugwump__: ? | 23:33 | |
what customs do you speak of? | |||
mugwump__ | you know, security checks and getting frisked down. make sure they're not terrorists. | ||
nothingmuch | who has to go through customs? | 23:34 | |
mugwump__ | the monads | ||
nothingmuch | ah | ||
well, yes, no one understands them, they raise suspicion | |||
mugwump__ | how else can ghc be sure they have no side effects? | ||
nothingmuch | arrows, OTOH, are even less understood, and they look pointy | ||
putter | eeep. three implementations of next/last/redo in two files. lossage is to be expected. are the semantics such that we could rip out all three and replace them with something clean? | 23:35 | |
23:35
mugwump__ is now known as mugwump
|
|||
nothingmuch | putter: no | 23:35 | |
putter | :( | ||
nothingmuch | they are different for every type of loop | ||
they're pretty dense | 23:36 | ||
so I don't think it's bad | |||
well, supposedly yes | |||
stevan | nothingmuch: *cough* | 23:42 | |
svnbot6 | r5456, nothingmuch++ | Fix geoffb++'s next in while bug... next is now implemented with | ||
r5456, nothingmuch++ | continuations. redo is still needed, as are tests. | |||
nothingmuch | shutup, i'm watching TY | ||
TV | |||
stevan | the opiate of the masses | ||
nothingmuch | there's a documentary on the metamorphisis of islamic states in the 20th century | ||
mugwump | the drug of a nation | ||
stevan | you brain will leak out your ears | ||
nothingmuch | i don't know enough about that | ||
and i'm doing haskell at the same time | 23:43 | ||
stevan | nothingmuch: how can you not, they are your neighbors | ||
nothingmuch | stevan: they don't teach us about anybody but the jews in history | ||
mugwump cues "Couch Potato" by Weird Al Yankovic | |||
nothingmuch | or the people who did crap to the jews | ||
stevan | and muslims are not included in that?? | ||
nothingmuch | well, it's only the crap they did | ||
geoffb gets BAK to see nothingmuch has fixed my bug -- thanks, nothingmuch++ ! | 23:44 | ||
nothingmuch | like: | ||
geoffb: wait, there's more | |||
my $i; while ++$i < 5 {say "moose"; if (++$i == 2){ redo } else { say "no redo" };; say "Saw $i"} | |||
pasteling | "nothingmuch" at 212.143.91.217 pasted "the output of that loop" (8 lines, 51B) at sial.org/pbot/11699 | 23:45 | |
nothingmuch | as you can see in the nopaste, at some point there is "Say 6", which is not directly preceded by "no redo" | ||
which is crap | |||
we need callCC for redo as well | |||
geoffb | nodnod | ||
nothingmuch | i have no idea how this is working in the other impls | ||
can someone right extensive tests for redo/next under for, loop and while? | 23:46 | ||
geoffb | Well, a grep for next earlier showed that it is very rarely used outside of its own tests. Which are probably fairly bogus | ||
nothingmuch | okay | ||
so let's crak on that a while | |||
geoffb | (used in t/*/* I mean) | ||
nothingmuch | i'll commit while next/redo with the cases we have | 23:47 | |
and start on for | |||
you do loop, fair? | |||
geoffb | nodnod | ||
lemme pull and build, and then I'll start on the tests while that goes | 23:48 | ||
nothingmuch | Control.Monads is a slow build | ||
geoffb | Have you committed yet? | ||
putter | nothingmuch: looks plausible... vaguely... I think... ;) | 23:49 | |
Now I can remove the "# when next; works, change this to..." line from the Prelude.pm, or perhaps I'll wait a bit. | 23:50 | ||
nothingmuch | =) | ||
putter goes off to read Sxx on redo... | 23:51 | ||
geoffb | Whee, dinner has arrived. | 23:52 | |
(better half)++ | |||
AFK again | |||
nothingmuch | ciao | 23:56 |