-Ofun: xrl.us/hxhk | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 Set by apple-gunkies on 11 November 2005. |
|||
integral | I think I was thinking that within the functional sublanguage you wouldn't need that stuff, if you were using it for the haskellish stuff, since you don't need them in haskell | 00:00 | |
luqui | yeah, but then you get two disconnected languages in the same file, and having them both Perl doesn't help | 00:01 | |
might as well use Inline::Haskell | |||
integral | What do you think would be the main disconnect between them? | ||
luqui | the fact that you couldn't use perl modules within the functional sublanguage? | ||
er, you couldn't use OO modules, rather | |||
integral | you could use modules and classes via an interface/typeclass type thing | 00:02 | |
luqui | only certain ones | ||
I think you'd end up writing a bunch of glue code to glue the different paradigms together | |||
which is becoming counterproductive | 00:03 | ||
integral | oh well, you do seem much more right on the glue code issue than me :) | 00:04 | |
luqui | oh..kay.... | ||
anyway, I'm thinking type inference might be a little bit dreamy | 00:05 | ||
that's what I'm trying to achieve with type_meta. Keep the door open to type inference without having to figure out how to do it for a language like perl | |||
it's a really hard problem that we might be arrogant to think we can solve | |||
(hubristic maybe, but just in case we're not) | 00:06 | ||
integral considers some sleep | 00:07 | ||
avar | xinming: I killed it at 500mins | 00:20 | |
luqui | yum. Pugs.Run takes 300M of ram to compile | 00:56 | |
svnbot6 | r8266 | luqui++ | &die may take an object, but it's still allowed not to. | 01:14 | |
r8267 | luqui++ | Changed "no such method" error to report in which class it is looking for the method. | 01:28 | ||
01:33
Odin-FOO is now known as Odin-LAP
|
|||
stevan | hullo luqui | 01:46 | |
luqui | hallo stuvan | 01:51 | |
evan stevan | 01:52 | ||
stevan | howdy | ||
luqui | g'day | 01:53 | |
stevan | so are you back now? no more pesky school stuff? | ||
luqui | not until mid january | ||
stevan | bah | ||
you should quit,.. its no good | |||
school that is | |||
luqui | I agree | ||
stevan | :P | ||
luqui | well, I've only like... oh, six more years left | ||
stevan | then you need to get a job :P | 01:54 | |
luqui | pf, jobs are for the proletariat | ||
stevan | LOL | ||
did you ever get a chance to read this -> svn.openfoundry.org/pugs/perl5/Perl...Bridge.pod | |||
luqui | nein | ||
luqui reads | 01:55 | ||
stevan | it's that module/role/signature stuff I was babbling about a while back | ||
luqui is starting to port pge to perl6 | 01:56 | ||
stevan | eak! | ||
better you than me ;) | |||
luqui | I'm doing it basically by redesigning it from the top | ||
stevan | I started porting the metamodel to PIR,.. | ||
luqui | I know all the algorithms he uses, and I can't read PIR | ||
stevan | stopped that insanity real fast | 01:57 | |
PIR-- | |||
PIL2++ | |||
luqui | :-) | ||
stevan | have you seen our pure functional mini-lang? | ||
luqui | no.. | ||
stevan | NO | ||
stevan is shocked | |||
luqui | donde esta? | ||
stevan | una momento bitte | 01:58 | |
luqui | jaja | ||
stevan | here is the Parser with some code examples at the top : svn.openfoundry.org/pugs/src/PIL/Na.../Parser.hs | ||
here is the skeleton of the MetaModel bootstrap -> svn.openfoundry.org/pugs/src/PIL/Na...tstrap.pil | 01:59 | ||
audreyt | stevan: do you think do_if etc is enough? | ||
or do you really need shortcut and_do ? | |||
stevan | hey audreyt :) | ||
audreyt | hey stevan :) | ||
stevan | uhm | 02:00 | |
audreyt | also is do_for enough, or are you thinking about do_while? | ||
stevan | I have not messed around with the do_* yet, so I am not sure | ||
audreyt | do_while is very tricky without containers | ||
stevan | well the do_while I need because I wanted to do this: | ||
audreyt | I think we're better with do_for and recursion with &?SUB | ||
stevan | while (my $c = WALKCLASS($dispatcher)) { ... } | ||
audreyt: I will mess around with them and get back to you if I need anything more,.. I really cant tell until I try em :) | 02:01 | ||
audreyt | stevan: I think you want a tail recursion | ||
with &?SUB | |||
should be easier than a container | |||
stevan | ok | ||
audreyt: what about LISP style macros? | |||
do you think that might be possible ? | |||
audreyt | it's very well possible, but what can you get from macro you can't from binding a function? | 02:02 | |
stevan | compile time expansion :) | ||
luqui | oh, so the mini-lang is a small readable syntax for PIL? | ||
audreyt | luqui: yes. | ||
stevan | luqui: for the most part, yes (kinda, sorta) | ||
luqui | good idea | 02:03 | |
audreyt | it's not the full pil yet, but will expand it with another layer (after bootstrapping MM) so it is | ||
luqui | can you dump to it, too? | ||
audreyt | not sure what it means | ||
stevan: compile time expansion? | |||
example please :) | |||
luqui | given a pil structure, can you generate minilang code? | ||
stevan | audreyt: I assume too that since we are keeping "pure" about things, we can perform rigorous optimizations, is that part of your plan | 02:04 | |
audreyt | luqui: that's the goal, which should be right there after we bootstrap MM and code in SigList + ArgList | ||
stevan: yes. | |||
luqui | neato | ||
audreyt | stevan: more importantly, the easly-vs-late binding of symbols can be statically determined. | ||
(see: visual basic) | |||
stevan | audreyt: macro infix:<:=> ($lhs, $rhs) { -> $lhs { $rhs } } | 02:05 | |
audreyt | not sure it works that way :) | ||
stevan | overly simplified I know,.. but thats the idea | ||
audreyt | nod... I think we hardcode sugars into PIL.Native.Parser for now. | ||
stevan | ok | ||
audreyt | not convinced macros is the way to go in minilang | ||
macros in surface syntax surely, but otherwise shorthands should just be hardcoded | 02:06 | ||
stevan | I would think they would be easier in the mini-lang than in p6 | ||
audreyt | they surely would, but then we need to get into grammatical categories | ||
stevan defers to audreyt on this one though :) | |||
audreyt | like infix | ||
luqui | audreyt, feature request if you have time: "our class" | ||
and if it's fairly easy | |||
I looked into it, but I'm afraid to touch the scoping as I don't understand it | 02:07 | ||
audreyt | luqui: all OO hackery delayed until minilang bootting | ||
stevan looks for luqui's test .... ;) | |||
luqui | okay | ||
audreyt | tests welcome though | ||
luqui | :-p | ||
okay | |||
audreyt | I have a $job demo to do this afternoon | ||
but should be free tomorrow and the day after | |||
so I should go back to working now :) | |||
will checkback tonight | |||
(it's 10am here) | |||
stevan | enjoy $work :) | ||
audreyt | I try :) | 02:08 | |
it involves ajax, web continuations and Perl6::Subs | |||
so at least it's fun | |||
stevan | nice | ||
audreyt | bbiab & | ||
buu | Scary | 02:32 | |
mdiep | audreyt: you around? | 02:36 | |
audreyt | mdiep: no, sorry | 03:00 | |
mdiep | audreyt: I was hoping you could take a look at "Variables, Aliasing, and Undefined-ness" on p6i | 03:01 | |
audreyt | noted, will do tonight. anything in particular you'd like to note about it? | ||
mdiep | I'm just wondering how you plan to handle things for Perl. Things are pretty similar in this case for Tcl. It should be pretty clear, I hope. | 03:02 | |
thanks | 03:13 | ||
03:38
_SamB_ is now known as SamB
|
|||
q[Skud] | who's awake? | 04:46 | |
obra | hi | 04:47 | |
hcchien | here | ||
q[Skud] | i'm about to dive back into the docs but wanted to make sure there was someone here to deal with my dumbass questions | ||
obra | Oh. | ||
I may or may not be able to help | |||
luqui is awake | |||
q[Skud] | here's a dumbass svn question | 04:48 | |
obra | audrey is offline until O(8 hours from now) | ||
oh. svn I can do ;) | |||
q[Skud] | what's the svn equivalent of "cvs diff", i.e. "in what way does what i have here differ from the latest checked in version in the repository?" | ||
luqui | q[Skud], svn diff | ||
q[Skud] | errr. that didn't work. | ||
luqui | hmm? how so? | ||
q[Skud] | i'm sitting in docs/p6doc | ||
obra | svn diff compares to what you checked out | ||
q[Skud] | i know that gaal committed something yesterday that he said was some minor tweaks to what i'd written so far | 04:49 | |
obra | svn diff -r HEAD file may work better | ||
q[Skud] | (i saw the commit message in the irc backlog) | ||
luqui | q[Skud], you might also just update... | ||
q[Skud] | i want to diff across the entire contents of the dir | ||
obra | (svn optimizes by caching a copy of your checked out files so you can do diffs whilst offline | ||
svn diff -r HEAD . | |||
q[Skud] | luqui: but then how will i know which bits he changed? | ||
luqui | ahh | ||
use "svn diff -r1237:1238" | 04:50 | ||
q[Skud] | obra: thanks, that worked! | ||
obra | :P | ||
luqui | where those are the revision numbers before and after his checkin | ||
but -r HEAD works too ;-) | |||
(apparently) | |||
q[Skud] | how can i tell it to use "diff -u"? | ||
obra | svn help diff | ||
luqui | doesn't it always? | ||
q[Skud] | hang on, never mind. it does. i was just making dumb assumptions | 04:51 | |
obra | Skud: ~/.subversion/config | ||
q[Skud] | i should probably rtfm ;) | ||
but i've been r-ing so many fms lately my brane is kinda starting to fry. | |||
luqui understands | 04:52 | ||
revdiablo | q[Skud]: Maybe a bit later, but something I find quite handy is 'svn log -vr BASE:HEAD' -- it will tell you what has changed since your WC's current revision | 05:11 | |
q[Skud]: The -v part has it show you a summary of the changes rather than just the log messages | |||
gaal | Skud: you can also use the web interface: | 06:16 | |
# rt.openfoundry.org/Foundry/Project/.../pugs/log/ | |||
# rt.openfoundry.org/Foundry/Project/.../?rev=8243 | 06:17 | ||
I've been meaning to add a "show complete patch" feature to Web::SVN for exactly that page for exactly this purpose, but tuits ran out. | |||
luqui, still around? | 06:19 | ||
luqui | aye | 06:21 | |
gaal, still around? | 06:22 | ||
gaal | heya. I'm trying to put exportation in the right place | ||
luqui | right place? | ||
gaal | but am not sure about the syntax/usage | ||
luqui | what are you working on? | ||
gaal | rightplace /= parse time of a sub :-) | ||
luqui | oh, code | 06:23 | |
gaal | luqui: yeah | ||
if you do package A; use Foo; package B; use Foo, sub_exported_by_foo(); | |||
it won't work now | |||
because ruleSubDeclaration is currently where the exportation (hackily) takes place | 06:24 | ||
luqui | ack, because Foo exports symbols as it's being compiled?! | ||
gaal | yeah. | ||
luqui | yeah, that's not right | ||
do we have IMPORT? | |||
gaal | so for starters I'm fixing that. | ||
luqui | well, it shouldn't be too tough to get if we don't anyway | ||
gaal | no; I'm putting it for now in the code for parsing use. | ||
luqui | what about that module stuff I rambled about on p6l? | ||
gaal | certainly that needs to be acounted for | 06:25 | |
luqui | well, that seemed like an implementation strategy to me | ||
gaal | yes, my question is now haskell/pugs' Parser.hs | ||
but you know about that don't you? | |||
luqui | a little bit | ||
gaal | I'm putting the "module" information in %*INC<Foo><exports> | 06:26 | |
luqui | hmmm | 06:27 | |
gaal | the keys are symbol names; values are supposed to be closures that transform a Pad | ||
luqui | how about %Foo::EXPORTS | ||
it would be nicest if we could do it without using anybody's namespace | |||
gaal | might do that; but never moose -- suppose they do exist in a well-known hash | ||
the technical question is, how to run those closures :-) | 06:28 | ||
luqui | unsafeEvalExp? | ||
gaal | I think a parser needs to return the exp with an updated Pad, no? | ||
e.g. a regular lexical symbol installation from subs looks like this: | 06:29 | ||
lexDiff <- unsafeEvalLexDiff $ mkSym nameQualified | |||
return $ Pad scope lexDiff $ mkExp name | |||
luqui | shouldn't that be the closure's job? | 06:30 | |
gaal | ( ruleSubDeclaration ) | ||
yeah, that's what I'm trying to figure out | |||
luqui | ?eval my sub infix:<%%> ($x, $y) { $x + $y } | ||
06:30
evalbot_8263 is now known as evalbot_8267
|
|||
evalbot_8267 | \sub {...} | 06:30 | |
luqui | ?eval my sub infix:<%%> ($x, $y) { $x + $y } 3 %% 4 | 06:31 | |
evalbot_8267 | 7 | ||
luqui | ?eval my sub infix:<%%> ($x, $y) { $x + $y } my $op; BEGIN { $op = '%%' } infix:{$op}(3, 4) | ||
evalbot_8267 | 7 | ||
gaal | whee | ||
luqui | hmmm... I'm just thinking about that | ||
seemed to work without any special lexdiff stuff | 06:32 | ||
?eval my $op; BEGIN { $op = '%%' } my sub infix:{$op} ($x, $y) { $x + $y } 3 %% 4 | |||
evalbot_8267 | 7 | ||
luqui | both ways... | ||
but that may not be the same thing | |||
well, we don't have an interface to %MY do we? | 06:33 | ||
gaal | I don't fully grok the way symbols are installed though: always there's a mutation of a pad | ||
luqui | ?eval my $op = 32; say %MY<$op>; | ||
evalbot_8267 | Error: Undeclared variable: "%MY" | ||
luqui | ?eval my $op = 32; say %?MY<$op>; | ||
evalbot_8267 | Error: Undeclared variable: "%?MY" | ||
gaal | which Eval later actually reduces | ||
that's why a parser rule (I think!) just returns the Pad exp element | |||
I'm not sure how to build that element | 06:34 | ||
luqui noses around in Parser.hs for a moment | |||
?eval my &infix:<%%> ::= -> $x, $y { $x + $y }; 3 %% 4 | 06:36 | ||
evalbot_8267 | Error: unexpected "%" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
luqui | okay, yeah, you need to do something special | ||
that's odd | 06:39 | ||
gaal | so, with a list of Pad update requests, how do I arrange for a Pad really? | ||
luqui | it looks like ::= is trying to handle the lexical stuff, but it's not | ||
gaal | isn't it? | ||
luqui | well, the ?eval above seems to suggest that it's not | 06:40 | |
gaal | ruleVarDeclaration / lexDiff does treat it | 06:42 | |
luqui | I'm stumped. I tried doing some stuff with the lexdiff stuff and it just confused me | 06:43 | |
that is, getting a sub to install itself right when it is defined | |||
gaal | I'm missing how to fold together more than one object to a pad transformation | 06:44 | |
obra | 27 | ||
gaal | luqui: the old code does just that | ||
in ruleSubDeclaration | 06:45 | ||
luqui | no, I mean in its own namespace, and I meant *before* it sees the sub's implementation block | ||
so that you can use an operator you're defining in its definition | |||
but... IIRC I failed | 06:46 | ||
Probably just experiment and wait for audreyt :-/ | |||
gaal | wow, Y keeps coming up these days | ||
luqui | the zip operator? | ||
or fix? | |||
gaal | combinator | ||
fix | |||
luqui | yeah, doesn't it? | ||
I actually wanted it earlier today | |||
I mean the lazy version | 06:47 | ||
gaal | btw wikipedia cites a ludicrous one: | ||
Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L L L) | |||
where L = Ī»abcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r)) | |||
luqui | haha | ||
I think that should be the official implementation of fix in the perl 6 compiler | 06:48 | ||
gaal | nah, need to port it to Han first. | 06:49 | |
luqui | sorry I can't help with the lexpad stuff | ||
gaal | IIUC it works for any list if you use the last variable once last in the inner parens and just outside them. | 06:50 | |
ok, thanks though! | |||
luqui | on the good news front, I'm making amazingly quick progress on the PGE port | ||
we have context-free, baby! | |||
gaal | luqui: btw on a local pugs, do "use Some::Module; say %*INC.perl" | ||
nice! | |||
luqui | gaal, okay.. | 06:51 | |
and, this shows me what? | |||
besides %*INC :-p | 06:52 | ||
gaal | it no longer works like the silly p5 INC | ||
keyed by reasonable name and valued with useful information | |||
(that's why exports provisionally is hanged there and not in %Foo::EXPORTS) | |||
luqui looks at a similar statement in perl 5 and understands | 06:53 | ||
luqui never messed with %INC in perl 5 | |||
gaal | In p5, you recall, it'd be "Some/Module.pm" => "/usr/eek/perl5/Some/Module.pm" | ||
now the idea is to eventually formalize the struct side of this -- this is where I was smiling when I read your mail -- into some module description object | 06:54 | ||
but i'll let you get back to much more interesting things :-) | |||
luqui | cool | ||
alrighty | |||
once I get out of hacking mode and into design mode, I'll have an interesting treatise on exports | 06:55 | ||
I promise | |||
gaal looks forward to it, and hopes it is sane. :-) | |||
luqui notices that .perl doesn't handle recursive structures | 06:59 | ||
gaal | does it loop? | 07:00 | |
luqui | it just keeps printing and printing and printing... | 07:01 | |
gaal | ?eval my $a = \$a; $a.perl | ||
evalbot_8267 | "\\undef" | ||
gaal | ?eval my $a; $a = \$a; $a.perl | ||
evalbot_8267 | "\\undef" | ||
luqui | references suck | ||
?eval my $a = [0]; $a[0] = $a; $a.perl | |||
evalbot_8267 | "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ | ||
gaal | ?eval my $a = moose => $a; $a.perl | 07:02 | |
evalbot_8267 | "(\"moose\" => undef)" | ||
gaal | ?eval my $a; $a = moose => $a; $a.perl | ||
evalbot_8267 | "(\"moose\" => undef)" | ||
luqui | and unfortunately, you have to make recursive structures two-pass. | ||
gaal | oh vell. | ||
how to save .perl then? there's an objid for objects, but not i think for native aggregates. | |||
luqui | ?eval say [3].id; say [3].id | 07:03 | |
evalbot_8267 | OUTPUT[ ] bool::true | ||
luqui thinks gaal is right | |||
make an objid for native aggregates? | |||
or come up with something even more clever? | |||
gaal | :-) probably, yeah. | ||
the former, lacking the latter. | |||
luqui | actually, I was trying to implement value_fix | 07:04 | |
which would be a fixpoint for values, so for my array example, you could say: | 07:05 | ||
gaal notes .id doesn't work as I think it's advertised. | |||
luqui | my $a = fix (-> $x { [$x] }) | ||
gaal | it gives a hash, not an id. | ||
should it give a unique id? | |||
luqui | probably | 07:06 | |
gaal | where's it specced? I don't remember | ||
luqui | we can always come up with enough unique ids if we use Integer | ||
It's specced as giving the memory address | |||
but that's stupid | |||
we can take liberty to change the spec | |||
gaal | in the case of .perl, a memory address is sufficient (and fast)... | 07:07 | |
luqui | that's true | ||
good luck getting haskell to tell you one though | |||
gaal | .clone, btw, generates a different id now. is that correct? | ||
luqui | uh huh | ||
gaal | I think it must be | ||
luqui thinks about .perling an infinite data structure | 07:08 | ||
and whether memory address would always be sufficient in that case | |||
like [1...].perl or something | |||
gaal | what are the disadvantages of using an address, in general? | ||
luqui | where you can throw away the earlier elements as you print them | ||
gaal | not unique across processes? | ||
across serialization? | |||
luqui | not unique across destruction | 07:09 | |
if you store a hash of ids | |||
a different object may come along once the first one has been destroyed with the same id | |||
gaal | ah, the Replay Attack | ||
so a strong monotonic function, eg, { ++$id }, is basically the only way. | 07:10 | ||
I think. | |||
luqui | probably | ||
I don't think it's a big deal | |||
the id will never exceed 8 bytes, right? | 07:11 | ||
gaal | hahaha | ||
luqui | and you only have to create it when somebody asks for it | ||
(not that the 8 bytes thing can be used as an optimization) | |||
gaal | (what lives at 8 bytes, btw? Haskell Integer?) | 07:12 | |
luqui | (but seriously, you come up with a program that will use 10^19 objects) | ||
int64 | |||
haskell Integer is variable length | |||
gaal | int64 of course, but we're still a while off | ||
Integer's the one that promotes automatically? | |||
luqui | if it's ever demoted | ||
yes | |||
it's a gmp int | 07:13 | ||
gaal | ...still a while off before *everybody* has it that is. | ||
anymoose the point about ids being generated lazily is an excellent one | |||
luqui | Unique ids only have to be unique for one invocation of the program, methinks | ||
gaal | but I wonder if it really works out, if eg some operation doesn't in practise always trip an id. | 07:14 | |
luqui | 'splain | ||
gaal | ...like putting in a hash :) | ||
luqui | you mean making it the *key* of a hash | ||
which isn't very common for things other than strings | 07:15 | ||
gaal | point. | ||
btw, there's a way of fixing the memory-addr problem. | 07:16 | ||
it's a little RAM-expensive though. | |||
#define free | |||
gaal ducks | |||
luqui | haha | 07:17 | |
*smack* | |||
ooh, when you weren't expecting it | |||
gaal | I think I'll go have breakfast now :-) | ||
svnbot6 | r8268 | luqui++ | Very beginnings of a PGE port in perl 6. | ||
Khisanth | luqui: PGE written in perl 6? | 07:40 | |
dduncan | it has to happen eventually | 07:41 | |
otherwise the full Perl 6 won't work on a non-Parrot host | |||
luqui | Khisanth, aye | 07:51 | |
ha'dy kakos` | 07:52 | ||
kakos` | Hey there | ||
What's up? | |||
07:52
kakos` is now known as kakos
|
|||
luqui | working on perl 6 regex engine | 07:52 | |
highly un-theoretical for a change | 07:53 | ||
kakos | Sounds like fun | ||
gaal | stevan_: ping | 08:05 | |
I noticed a small documentation bug in lambda.pm | |||
# FALSE := Ī» x. Ī» y. x | |||
itym | |||
# FALSE := Ī» x. Ī» y. y | |||
the implementation is correct though. | 08:06 | ||
luqui | what is lambda.pm | 08:10 | |
gaal | luqui: search.cpan.org/src/STEVAN/fp-0.03/.../lambda.pm | 08:11 | |
sure to look better in p6 :) | 08:12 | ||
it's just started raining. | |||
luqui | quite sure | ||
gaal | notable because we're in the middle of december and people were wearing t-shirts yesterday. | ||
luqui envies gaal | 08:13 | ||
that's how it was last month | |||
but come Dec 1, it started to feel like winter | |||
gaal | where do you live? | 08:14 | |
luqui | colorado | ||
gaal | oh, why did I imagine you were from the UK? | ||
luqui | er, usa, of course. I mean, does anybody live anywhere else? | ||
maybe because I keep UK hours? | 08:15 | ||
gaal | audreyt lives all over! :) | ||
you do, at that. | |||
so when you say it started to feel like winter, you mean you had to get out and shovel snow off the driveway to leave the house? | 08:16 | ||
luqui | we haven't had all that much snow this year | ||
but it's been friggin cold | |||
gaal | one of the nice things of rarely getting sub-freezing temperatures is citrus fruits. fresh orange juice, and I mean the kind you just squeezed yourself, is the bestest. | 08:26 | |
when I spent some time in the UK I'd buy imported oranges for about $75823582 a kilo. Here they're practically free. | 08:28 | ||
luqui | where are you now? | 08:30 | |
gaal | .il (not the US state) | ||
luqui | er... umm... oh, yeah... .il... that's a great place | 08:32 | |
luqui feels stupid | |||
gaal | Tel-Aviv, Israel | ||
luqui | ah, right | 08:33 | |
for some reason I was confusing you with iblechbot | |||
er, iblech | |||
I even knew that if my brain hadn't been so flatulent | 08:34 | ||
gaal | iblech is rather more productive :) | ||
luqui was wondering why you were asking me about the parser | 08:36 | ||
I was thinking, man, I should be asking you | |||
after writing in Haskell for a couple months now... i'm really quite disgusted with pugs's internals | 08:37 | ||
gaal | whoa! google does it again: www.google.com/musicsearch?q=beetho...arch+Music | ||
luqui | of course, it was a rocket open source project, so you can't expect beauty | ||
gaal | there's still a ways to go before it becomes p5 :-) | 08:38 | |
obra | gaal: you mean before it's that bad? | ||
gaal | yeah | ||
luqui checked out the perl 5 source code once and his vision started fading, so he promptly deleted it | 08:39 | ||
that is to say, I haven't really looked at perl 5 much at all | |||
I had a negative two line patch go in once | 08:40 | ||
but apparently it was taken back out | |||
or put back in. or whatever happens to negative patches | |||
gaal | "reverted" is sign-neutral. | 08:41 | |
luqui | gaal, do you have any idea where "new" is defined? | 08:49 | |
oh, there she is in Prim.hs | 08:50 | ||
Object::new, so searching for '"new"' didn't work | 08:51 | ||
svnbot6 | r8269 | luqui++ | Implemented $obj.clone(attr => newval) | 09:04 | |
GeJ | servus | 09:06 | |
gaal | luqui: sorry, I was practicing solfege. | 09:10 | |
luqui | np, I figgr'd it out | ||
solfege? | |||
gaal | I'm learning to read. | 09:11 | |
www.livejournal.com/users/gaal/177921.html | |||
luqui | music? | 09:12 | |
gaal | yeah | ||
(GNU Solfege)++ | |||
luqui | that is some crazy music you posted there | 09:13 | |
gaal | Must be an equivalent of a japh. | 09:14 | |
luqui | if it makes you feel better, I've been playing classical music on the piano for 5 years (from sheet music) and still can't sightread the simplest of pieces | ||
gaal | how much work did you put into that particular aspect of your training | 09:15 | |
? | |||
luqui | "okay, so the bottom line is middle C, so B, A, G, there we go | ||
well, not much on sightreading in particular, but you'd think after reading 12 beethoven sonatas I'd get the hang of it | |||
gaal | I don't really think that :-( | 09:16 | |
luqui | now I want to go play some beethoven | ||
yeah, but you *would* think that | 09:17 | ||
gaal | I would, if I'd never tried to learn this stuff | 09:18 | |
luqui | though I've found that I'm a lot quicker if I have small relative intervals I can use | 09:19 | |
that is, I haven't memorized the lines--at all--but I can do intervals pretty well now | |||
that is to say, the music you posted on your blog would be hell for me | 09:20 | ||
gaal | I'm trying to get used to a sixth now, so that I can find C given 440Hz. | ||
luqui | you only need a minor third for that, right? | ||
but you're talking about singing? | 09:21 | ||
gaal | not singing for performance level, but to be able to, you know, anticipate the next note or follow a score | ||
luqui | ear training | ||
gaal | yes. | 09:22 | |
colliquially known as solfege :-) | |||
luqui | ahh | ||
I've never really had to work at that. Just kinda came naturally | |||
(except rhythms. I've had to work at that a bit) | 09:23 | ||
well, anyway, good luck. off to beethoven I am | 09:24 | ||
gaal | enjoy :-) | ||
ah! all i have to remember is that the album Let it Be starts with a sixth, in Two of Us. | 09:30 | ||
luqui | also Chopin's famous nocturne in Eb | 09:34 | |
which is my "sixth metric" | 09:35 | ||
gaal | right! | ||
r0nny | yo | 09:36 | |
gaal | (I could never had ACKed that without knowing the piece and having a guitar with me) | ||
r0nny | anyone knows the state of audreyt's object system rewrite ? | ||
gaal | "under construction", I think. | 09:37 | |
GeJ | r0nny: stevan has an entry in his journal with links to some relevant files | 09:38 | |
r0nny | url ? | 09:40 | |
GeJ | seen on planet perl 6 | 09:42 | |
jabbot | GeJ: I havn't seen on, GeJ | ||
GeJ | r0nny: planetsix.perl.org/ | 09:43 | |
r0nny | nice stuff | 09:50 | |
GeJ | indeed | ||
r0nny | its goot its worth waiting | ||
eh god | 09:51 | ||
gaal | fwiw, lj users: www.livejournal.com/userinfo.bml?user=stevan_rss | 09:54 | |
come to think of it, www.livejournal.com/userinfo.bml?us...t_perl_six | 09:55 | ||
clkao | m19s28.vlinux.de/iblech/stuff/pugs-...96c21.html | 10:00 | |
so this is a smoke run for jsperl5 | |||
gaal | very cool! up from how much before io? | 10:01 | |
oh, everything yellow? | |||
210 tests. clkao++ | |||
clkao | i don't have eval | 10:03 | |
s/i/we | |||
svnbot6 | r8270 | luqui++ | Backtracking controls. | 10:22 | |
r8271 | luqui++ | Better names for Union and Concat's subtrees. | 10:34 | ||
Juerd_ | Compiling XML to Perl leads to insane, but nice, results. | 10:41 | |
wilx | Huh? | ||
nnunley | So turning an XML template into a Perl based XML generator? | 10:42 | |
Juerd_ | XML scripts, XML modules, XML input, XML output... | ||
A bit extreme, maybe, but so far it works and is grokkable :) | |||
nnunley: Not necessarily, but yes, that's one of the envisioned uses. | 10:43 | ||
luqui | Juerd_, why? | ||
wilx | XML is like cancer. | ||
It spreads everywhere and usually when you spot it it is already too late. | 10:44 | ||
Juerd_ | luqui: We had an XML document containing conditions and attached (nested) specifications of actions | ||
luqui: Skipping a few steps was decided to be much easier | |||
luqui | wilx, apparently I went to the hospital and they caught it early. I used it for one project, was discusted and swore never to touch it again if I could manage | ||
Juerd_ | luqui: So there is no semantic parse of the XML, only a direct translation, which then requires a module for semantics. | ||
wilx | luqui :) | 10:45 | |
luqui | Juerd_, okay, that actually sounds a bit more sane than what I was picturing | ||
Juerd_ | luqui: Then, the engine built appeared to be useful in many other ways too, and it was extended. | ||
luqui: Trust me, it's extremely insane anyway :) | |||
The environment this will be used in is already soaked with XML | 10:46 | ||
So the choice for XML for new components is natural | |||
The project manager was positive about opening up the source onto CPAN, but not before it's in a more finished and polished state. | 10:47 | ||
luqui | that's cool | 10:48 | |
Juerd_ | I think so :) | ||
luqui | I like "open"-minded managers | ||
Juerd_ | Gone now | 10:50 | |
Bye | |||
r0nny | re | 13:15 | |
svnbot6 | r8272 | iblech++ | PIL2JS: Prelude::JS::IO: Possible fix to clkao++'s &system. | 13:20 | |
nnunley | iblech: BTW, clkao just got exceptions working correctly from Perl space to Javascript space. | 13:23 | |
audreyt | yo | 14:31 | |
svnbot6 | r8273 | autrijus++ | * PIL/Native/Bootstrap.pil parses... runs... bootstraps! | 14:33 | |
r8273 | autrijus++ | Going to implement the proper C3 correctly tomorrow. | |||
r8273 | autrijus++ | But for now, suffice it to day stevan++'s work had finally | |||
r8273 | autrijus++ | arrived to the new PIL runcore. :) | |||
audreyt survided $work and reenters pugsland | 14:34 | ||
survived, even | |||
GeJ | welcome home! | 14:37 | |
:) | |||
audreyt | :)) | ||
r0nny | audreyt: does this mean the undefined instance prob is solved ? | 14:38 | |
audreyt | r0nny: still need to implement container classes (like, Scalar) for that to be solved | 14:39 | |
again, give me another few days :) | |||
r0nny | darn | 14:40 | |
well - again time to point a "this one rules" sign into your direction | |||
audreyt | which test is that? | ||
(undefined instance that is) | |||
r0nny | test ? | ||
audreyt | yeah... like, something in the t/ directory that I can run to make sure when I've fixed it | 14:41 | |
r0nny | didnt u guys make one when u discussed the problem ? | ||
audreyt | I didn't quite recall, which is why I ask :) | ||
r0nny | who knows | ||
gaal | hi! | 14:46 | |
r0nny | yo gaal | ||
audreyt | gaal: hey | 14:47 | |
sadly I will probably sleep soon -- still got this jet lag thing a bit | 14:48 | ||
will be back and work on pugs all day after I wake up though :) | |||
r0nny | :) | ||
gaal | audreyt: i'm hoping to sneak in a quick Q :-) | 14:49 | |
audreyt | sure, go ahead | ||
r0nny | cant do anything tomorow | ||
gaal | have to figure out pbotutil config first :-) | ||
audreyt | will look at it after (instead of inside) shower | ||
r0nny | pbotutil ? | 14:50 | |
gaal thinks audrey's new topology is prudent | 14:52 | ||
r0nny: you know pastebot? there's a script fort interacting with it via the commandline | |||
pasteling | Someone at 192.115.25.249 pasted "Index: src/Pugs/Parser.hs ====" (87 lines, 4.2K) at sial.org/pbot/14995 | 14:55 | |
gaal | errr, so that was supposed to be "svn diff | pastebot" except I forgot to config it with my nick, and give it a title. | 14:56 | |
audreyt: so my question is about the "handwaving" portion. how do I spell "export everything from this list"? | 14:57 | ||
audreyt | you... just return a Pad. | 14:58 | |
I think. | |||
instead of emptyExp. | |||
hand waving hits! hand waving bites! hand waving turns to flee! --More-- | |||
gaal | yes, that was the idea :-) | 14:59 | |
okay, but I have potentially several symbols | |||
how do I combine them? | |||
and: is the way I set them up correct? | |||
(elsewhere in the diff; where I'd ripped out ruleSubDeclaration's export | 15:00 | ||
) | |||
audreyt | hm? you don't have to combine | ||
just introduce them and get lexDiff | |||
it will contain however many symbols you introduce | |||
gaal | also also, this is a lot like programming in the Prelude: how do I arrange for this value to actually be returned (and for the other try option to return an emptyExp if it was successful)? | 15:01 | |
audreyt | try (do { verbatimParens whiteSpace; return emptyExp }) <|> do | 15:02 | |
... | |||
return somePadhere | |||
that's it | |||
gaal | ok | 15:03 | |
audreyt | bbiab. :) | ||
gaal | now how do I get them into lexDiff? Is what I have there with the fold actually correct? :-) | ||
audreyt | it looks at least plausible :) | ||
brb | |||
gaal | sure | ||
thanks :-) | 15:04 | ||
ouch. I need Pugs.Prim.Keyed's valuesFromRef. How malignant would reexporting it through Prim be? | 15:11 | ||
or maybe I should just App "&values" ? | 15:12 | ||
Yeah, I'll do that. Programming in AST! | 15:13 | ||
audreyt | ...or you can ask pugs to give it to you with :D | 15:17 | |
pugs> :D 1+1 | |||
(App (Var "&infix:+") Nothing [Val (VInt 1),Val (VInt 1)]) | |||
oh, wait, you just need to call one thing. | 15:18 | ||
then sure, just say App | |||
you are in the parser, producing AST is the correct thing to do there | |||
gaal | is the :D op so named because it makes you happy? | 15:19 | |
audreyt | no, but you are free to infer so :) | ||
r0nny | lol | 15:20 | |
gaal | ok now I have to figure out how to de-Exp-ify: exports <- unsafeEvalExp ..., which gives me an but I want to fish out a hash ref from that. | 15:22 | |
(all the fromVals there are, of course, wrong) | 15:23 | ||
can I simply pattern-match against Val? | 15:25 | ||
audreyt | sure if you are sure | 15:26 | |
alternatively use a fromVal | |||
(more canonical form) | |||
but if you control both sides, don't bother | |||
gaal | fromVal doesn't work, because of monadic problems: | 15:27 | |
# Couldn't match `EvalT (ContT Val (ReaderT Env SIO))' against `(->) t' | |||
audreyt | yeah, because you are in Parser | ||
so just patmatch | |||
feel free to check in once you get it to work -- or at least not breaking all tests -- I'll take a look tomorrow | |||
good night! | 15:28 | ||
gaal++ | |||
gaal | btw I couldn't find the definition of fromVal (well, just = fromVal', but no further) | ||
thanks, sweet dreams :-) | |||
audreyt | fromVal is defined for each variant | 15:29 | |
all in Pugs.AST.Internals | |||
gaal | ah, typeclasses and that funky stuff. this is a good time for another iteration on the tutorials. | ||
audreyt | as you are in parser, you can't use it easily, so just patmatch against VRef | 15:30 | |
gaal | okay, hopefully I can take it from here :) | 15:31 | |
audreyt | (Val (VRef ...)) I mean | ||
wolverian | svk up -sm is the same as svk pull, right? | ||
audreyt | alternatively, do another form of unsafeEvalExp | ||
wolverian: yes | |||
wolverian | thanks :) | ||
(I have a bad memory) | |||
audreyt | unsafeEvalExpValue :: Value a => Exp -> RuleParser a | ||
which is just copying unsafeEvalExp but add a fromVal to it | 15:32 | ||
then you ca n make unsafeEvalExp = unsafeEvalExpValue | |||
er | |||
unsafeEvalExp = fmap Val unsafeEvalExpValue | |||
or some such... improvise. | 15:33 | ||
audreyt waves and goes to sleep :) & | |||
gaal | :-) | ||
fglock | +4 hours work, then 32 day vacation! | 15:52 | |
Juerd_ | Sounds like a very fair trade, fglock | 16:00 | |
rafl | Juerd_: Got the mail from guckes? | ||
clkao | fixing js exception makes slurp.t all passed | 16:05 | |
svnbot6 | r8274 | clkao++ | update jspm snapshot url. | 16:22 | |
Juerd_ | rafl: Yes, he wants us to consider flying. Might I ask why moving by car is such a bad idea? | 16:32 | |
rafl: I've found a passenger who can also drive, which solves my only two downsides: cost (when split in two, it's no longer an issue), and duration (we can alternate drivers) | 16:33 | ||
rafl | That's good! | 16:35 | |
Juerd_: I also have no idea why guckes doesn't like moving by car. Maybe because he doesn't have a car? :-) | 16:42 | ||
Juerd_ | Hm | 17:38 | |
I have the impression that people in america tend to IRC much less in work time than west-european people | 17:39 | ||
rafl | Juerd_: How do you come to that impression? | 17:41 | |
PerlJam | Juerd_: Those people that I know that IRC at work are on it all the time. | 17:43 | |
Juerd_ | rafl: IRC :) | 17:48 | |
r0nny | Juerd_: some of them might just lack intention to set away states | 18:30 | |
Juerd_ | Does vim have a key like w that goes BACK one word? | 19:29 | |
sili | b | ||
Juerd_ | My keyboard driver is broken and lacks repetition :( | ||
Ah, thanks | |||
sili | if you haven't learned them yet, there is W and B also. | 19:30 | |
and e/E | |||
Juerd_ | Thank you | 19:32 | |
webmind | Juerd_, you're suposed to know that for your lpic1 | 19:54 | |
Juerd_ | Strange. I thought you only needed to know :q! ;) | 19:55 | |
webmind | tss :) | 20:00 | |
20:02
integral is now known as ntgrl
|
|||
sili | ntgrl: not girl. | 20:05 | |
luqui | I don't know what all this spambot hubbub (sp?) is about | 20:10 | |
I've never seen any such spambot here | |||
stevan spams luqui | 20:11 | ||
luqui | Ow? | ||
stevan | luqui: was it a short Perl 6 meeting , or did you not transcribe the entire thing? | ||
luqui | It was very short, because nobody was there | ||
stevan | ah | ||
luqui | Including me | ||
I think the community might give me more credit for the notes than deserved | 20:12 | ||
stevan | why? | ||
luqui | chromatic actually takes the notes, I just edit them (which usually is doing nothing) and post them | ||
stevan | ah | ||
luqui | I only get to edit when chromatic isn't there any somebody who isn't as good at notetaking is. | 20:13 | |
PerlJam | Why doesn't chromatic put them up then? | ||
luqui ?s | |||
luqui invented a new verb :-) | 20:14 | ||
PerlJam | If you "edit" them by doing nothing, then why doesn't chromatic put them up on his use.perl journal? | 20:15 | |
luqui | oh, my new verb is confusing | ||
luqui dunnos | |||
peer-review? | |||
PerlJam | fair enough | ||
Juerd_ | I'm beginning to like XML. Someone please find me a rant :) | 21:09 | |
Google++ # found some :) | 21:10 | ||
www.zefhemel.com/archives/2004/09/1...rch-of-xml | 21:11 | ||
Oops, wrong one. | |||
luqui | I think XML is a fine markup language | 21:22 | |
but it sucks as a data language | |||
that is, XML and YAML are two very different things, and one should not be used where the other is appropriate | 21:23 | ||
Juerd_ | 22:26 < luqui> I think XML is a fine markup language | 21:40 | |
22:27 < luqui> but it sucks as a data language | |||
And how do you feel about XML as a programming language? :P | |||
obra | XPL! | 21:42 | |
pd | sexpr.sourceforge.net/ | 21:43 | |
Odin-LAP | Juerd_: Silly, but possible, I'd wager. | 21:44 | |
Juerd_ | tnx.nl/4352BIUW | 21:45 | |
Can't believe I actually wrote that years ago and nobody has noticed it yet. | |||
obra, pd: thanks for the references. I'll have a look. | |||
obra | oh god. XPL was an msft internal joke | 21:46 | |
Juerd_ | Oh; heh :) | 21:47 | |
sexpr doesn't seem to be related to what I said | |||
obra | then someone shipped it | ||
Juerd_ | Grin | ||
obra | it used xslt to turn programs in XML into C and VB | ||
Juerd_ | Ahh | ||
That's a little like what I'm doing | |||
I can't find anything useful about XPL. What should I ask Google? | 21:48 | ||
Odin-LAP | obra: A house of horrors, one would think. | ||
obra | Juerd_: not sure it ever made it out under that name | 21:49 | |
it was literally an april 1 joke | |||
I'll keep my eye on my old backups to see if I can find it | |||
Juerd_ | ok | ||
www.topxml.com/XPL/spec_draft.asp | 21:50 | ||
obra | that is not my XPL | ||
"my" | |||
luqui | if I see "svm" in the commit logs, what does it mean? | ||
Juerd_ | luqui: Ehm. Which commit logs? | ||
I've today tried to write an ssh-agent like thing called svm. | 21:51 | ||
I hope you don't have access to that repository :) | |||
luqui | I did a svk praise and there are a bunch of lines attributed to "svm" | ||
Juerd_ | Ohh, okay :) | ||
*wipes sweat off forehead* | |||
luqui | :-) | ||
Juerd_ | The NDA is quite specific about the svn repositories, you see :) | ||
Shillo | Juerd_: Hopefully your NDA doesn't ban you from saying that you were writing an ssh-agent like system... | 21:57 | |
Juerd_ | Shillo: It does, and I've actually not signed it. But the eventual NDA that I will sign will not. | 22:01 | |
PerlJam | luqui: svm == svn mirror | 22:03 | |
Juerd_ | PerlJam: Is that an existing tool, or jargon? | ||
PerlJam | jargon I think. | 22:04 | |
or maybe it's a tool that comes with SVN::Mirror | |||
luqui | that sucks | 22:05 | |
how do I find out who really modified those lines then? | |||
Juerd_ | [ ] svm 12-Dec-2005 12:39 3.0K | ||
Darn. | |||
PerlJam | luqui: you'll have to ask clkao | ||
Juerd_ | I'll have to change my svm's name. | ||
PerlJam: Thanks | 22:06 | ||
PerlJam: You avoided horrible things | |||
afk # going home | |||
buu | "It's beginning to look a lot like.. fish men! Everywhere I go.." | 22:17 | |
luqui | stop stealing our water! | ||
buu | Fishmas++ | 22:19 | |
dduncan | ?eval my $x = 3; my $y = undef; my $z = $x + $y; say $z; | 22:38 | |
22:38
evalbot_8267 is now known as evalbot_8274
|
|||
evalbot_8274 | OUTPUT[3 ] bool::true | 22:38 | |
dduncan | now, this is another issue I plan to raise | ||
but first ... | 22:39 | ||
what does 'undef' mean to you? | |||
to me, it means 'unknown' | |||
and hence, any operation using an undefined variable which expects a defined one should not return a defined value | |||
it should either fail or return undef itself | 22:40 | ||
eg, the expression 4 + 3 should return 7, but 5 + undef should return undef or fail | |||
what do you guys think? | |||
undef should not be treated the same as zero | 22:41 | ||
does the language spec talk about this somewhere? | |||
looking ... | |||
buu | I *like* undef as zero. | 22:43 | |
It makes me happy. | 22:44 | ||
sili | you are ugly. | ||
buu | =[ | ||
When the great old ones arise they will destroy your feeble sanity. | |||
dduncan | having undef in numerical context being equal to zero is only helpful to lazy developers ... for any real work, it is just a source of bugs | 22:46 | |
of course, I'm not against there being some pragma or Class trait that says how undefined variables of their type are treated in certain contexts, but in the absense of this they should default to not being equal to anything, zero or otherwise | 22:47 | ||
so undef always != undef | 22:48 | ||
buu | Hmph. | 22:49 | |
dduncan | I'm going to writeup a p6l post on this shortly | ||
buu | Yay for making basic operations take more lines of code. | 22:50 | |
dduncan | oh? what would take more code? | ||
example? | |||
buu | $x + ( defined $y ? $y : 0 ) | 22:51 | |
dduncan | you forgot the // operator | ||
buu | Well, yes | ||
And actually you could use || too. | |||
But I don't see the point. | |||
You can already check if you care, if not let it do something sensible. | |||
dduncan | the thing is, if you already know from somewhere earlier in your code that $y was defined, you don't have to do what you did | 22:52 | |
buu | $y = sub_that_may_return_undef | ||
dduncan | and if you don't know, such as if $y is an argument, then checking your input for correctness is the proper action | ||
buu | Yes, but you can already check. Changing this behaviour doesn't *add* anything. | 22:53 | |
dduncan | using $y // 0 means that you know $y may be undef, and you are defaulting it to zero if it is | ||
buu | Sure, but why should you be forced to do that? That's how it works right now. | ||
dduncan | the problem relates to bugs sneaking in | ||
buu | How so? | ||
dduncan | what if you forgot to initialize something but your code assumed you did? | 22:54 | |
having altered behaviour would lead to Perl itself pointing this out | |||
buu | So would warnings. | ||
dduncan | and you could more quickly find the source of your bug | ||
buu | What does that get you that adding a warning on undef doesn't? | ||
dduncan | you don't have to add the warning on undef | 22:55 | |
and your code itself is better self-documenting | |||
buu | *shrug*. I've always absolutely detested the 'warn on undef' feature of warnings.pm, but I'm not sure I can fully articulate why. | ||
dduncan | the change I suggest brings things out into the open that would be magical and hidden otherwise | 22:56 | |
I consider auto-change of undef into a defined value to be magical and non-intuitive | |||
buu | Heh. I suppose I'm just used to programming with it. I suppose if you forced that change on me I would resort to specifically returning 0 or some such. | 22:57 | |
I enjoy my magical and hidden feautres =/ | |||
dduncan | the intuitive thought is that your variables don't change unless you tell them to or they are defined by a class that is volitile | ||
buu | Er, but how is the variable changing? | 22:58 | |
dduncan | people are used to lots of things in perl 5 but that doesn't make them best behaviour | ||
its changing to zero from undef without being explicitly told to | |||
buu | It's overloaded | ||
dduncan | an undef is a distinct value, or absense of value, that is different from all others | ||
buu | ?eval 32 + undef; | ||
evalbot_8274 | 32 | ||
buu | ?eval "a"~0 | ||
evalbot_8274 | "a0" | ||
dduncan | so what you see now in pugs is the perl 5 way | 22:59 | |
buu | dduncan: And what is the string definition of "absense" of value? | ||
dduncan | an empty string and an undefined string are 2 different things | ||
an empty string is '' | |||
an undefined string can't be printed | |||
buu | I suppose. | 23:00 | |
dduncan | in debugging situations, the thing can print something like <undefined> in place of an undefined value | ||
like it prints <obj:foo> now | |||
buu | I'm just having trouble thinkinf of a situation where it would help me. | ||
dduncan mail run, back in 15m | 23:01 | ||
nwc10 | evalbot_8274: help? | 23:04 | |
evalbot_8274 say "Hello world\n" | 23:05 | ||
OK. I'm not winning here. | |||
dduncan | nwc, you invoke evalbot with a leading ?eval | 23:06 | |
like this | |||
?eval say 'foo'; | |||
evalbot_8274 | OUTPUT[foo ] bool::true | ||
nwc10 | ?eval say "foo\n" | 23:07 | |
evalbot_8274 | OUTPUT[foo ] bool::true | ||
nwc10 | ?eval say "foo" | ||
evalbot_8274 | OUTPUT[foo ] bool::true | ||
nwc10 | aha. I take it that there's always 1 \n added to say? | ||
dduncan | yes | ||
say is like print but with a " | |||
\n added | |||
very handy for common case | |||
you don't need to have a say or print though | 23:08 | ||
eg | |||
?eval 4 + 4 | |||
evalbot_8274 | 8 | ||
dduncan | so you just say ?eval <code-to-run> | ||
simple | |||
nwc10 | ?eval 2 < (0|6) < 4 | ||
evalbot_8274 | bool::false | ||
dduncan | anyway, back in 15m | ||
mlh_ | ?eval "hello"->? | 23:55 | |
evalbot_8274 | Error: unexpected ">" or "-" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
mlh_ | ?eval "hello" | ||
evalbot_8274 | "hello" | ||
mlh_ | ?eval "hello" + 0 | ||
evalbot_8274 | 0.0 | ||
mlh_ | ew |