-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.
dduncan ?eval "hello"~0 00:08
evalbot_8274 "hello0"
dduncan mlh_, I think that's what you wanted?
a + casts its operands as numbers, while a ~ casts as strings 00:09
mlh_ oh 00:14
does eval do p6 only or p5? 00:15
is it possible to force it to give a typeerror for "hello" + 0 ?
00:34 ntgrl is now known as integral
dduncan ?eval does perl 6 only, I believe 00:34
evalbot_8274 Error: unexpected "o" expecting operator, ":", ",", term postfix, postfix conditional, postfix loop, postfix iteration, ";" or end of input
dduncan but perl 5's + always cast its arguments as numbers too, so that's the same as the perl 6 one 00:35
the only difference is that perl 6 uses ~ instead of . for string concatenation, but they both cast as strings
obra seen audreyt
dduncan the + has never been a string op in perl 00:36
maybe you're thinking of some badly designed languages like javascript where you never know what you're going to get if you say "foo + bar"
eg, in javascript "'5' + '4'" is 54, and "5 + 4" is 9 00:37
nasty piece of work, that
?eval 'hello' + 'world'; 00:51
evalbot_8274 0.0
dduncan ?eval 'hello' ~ 'world';
evalbot_8274 "helloworld"
dduncan ?eval 'hello' ~ '';
evalbot_8274 "hello"
dduncan ?eval 'hello' ~ undef;
evalbot_8274 "hello"
gaal arr! I can't seem to extract values from a VList without calls to fromVal and the like! 00:58
I *know* this VList is really [Exp], but how do I convince the type checker this is the case? 01:01
patmaching doesn't work: (VList bindings) 01:02
and neither does tricksy annotation: bindings :: [Exp]
tomorrow then... night & 01:03
audreyt gaal: VList can't contain [Exp]... Exp is not a Val 02:10
gaal: you can fake it with VOpaque
gaal: if you show me the code/patch I can fix
lunch now... bbiab 02:11
obra 'morning, audreyt
audreyt yo obra. 02:12
stevan hey audreyt
audreyt stevan: hey
stevan Bootstrap.pil :) 02:13
audreyt yes? :)
stevan just puts a smile on my face,.. thats all
I am about to commit some additions to it
audreyt ahh :)
cool
maybe you can practice some haskell by writing linearize? :D
stevan I have been reading Algorithms 02:14
audreyt (it's a pretty good first cut for haskell practicing)
stevan we shall see :)
audreyt cool
my duct-tape-held-together laptop case is about to break
so I need to go out repairing it + lunch... will be back in 2~3hr
stevan I am off to watch a movie myself,.. 02:18
svnbot6 r8275 | stevan++ | PIL.Native.Bootstrap.pil
r8275 | stevan++ | - implemented ::Class.subclasses & ::Class.add_subclasses
r8275 | stevan++ | - cleaned up ::Module.version & ::Module.authority
r8275 | stevan++ | - ::Module.identifier now works properly (although some edge cases
r8275 | stevan++ | will likely still mess it up).
r8275 | stevan++ | - Create slots in instances of ::Class, ::Object, ::Module & ::Package
r8275 | stevan++ | which are missing (no auto-vivification in the mini-lang :)
stevan &
dduncan message away ... to p6l that is 02:19
second topic started in almost as many days 02:20
audreyt cool :)
dduncan hopefully something will get done about those nasty undefs!
is that PIL stuff not supposed to be used yet? 02:24
I notice that, despite being in src/, make doesn't do anything with them
audreyt dduncan: "make pil" does 02:25
dduncan I refer to the last few commits
okay
audreyt and the goal is to treat it as a vm like "parrot"
and compile "pugs" programs to it
to get roles and metaclasses and unboxed types working
the current haskell runtime can't quite support these things
so we are rearchitecting the bottomost layer
dduncan I mistakenly thought that 'make' did all the versions, and it was at test time that you picked one to invoke
audreyt that is correct 02:26
once the pil native vm can hook into the current pil compiler
we will make that so
dduncan okay
audreyt it's currently still not there yet -- missing container types
SamB yay for rearchitecturing bottommost layers!
audreyt yay for modularity-thru-separate-data-representation-across-layers!
yay for OSI! 02:27
(ok, maybe that's too silly)
SamB OSI isn't written in Haskell, silly 02:30
audreyt I hear galois (or someone else) had the data layer and up written in haskell for provability 02:31
SamB provability of what? 02:32
audreyt system properties
SamB thought the OSI was written in hot air
what does it do?
audreyt en.wikipedia.org/wiki/Internet_protocol_suite
SamB is it useful?
I thought it was just used to compare real things with 02:33
audreyt as a Sockets/TCP/IP/Ethernet layer... I imagine they may be useful for things they are useful for
er, right. in the proper sense it's just hot air
SamB wow... hot air written in Haskell... 02:34
audreyt considering the use of category theory, maybe it's not that surprising...
(but I was confused; I referred to specific implementations of protocols in different layers as a stack in haskell, i.e. actual code that does stuff) 02:35
SamB whatever you do, don't tell those guys in #twisted about this!
audreyt mm, category theory is known as "generalized abstract nonsense"
SamB ah
hehe
audreyt considerably hotter than hot air
SamB hmm, is that anything like Dr. Suess? 02:36
I probably misspelled his name...
heh: Physical e.g. wire, radio, fiber optic, Carrier pigeon 02:38
hehe... avian carriers...
hmm, they don't mention HTCPCP 02:43
do winsock and BSD sockets really belong at the same layer as SSH? 02:45
neither winsock nor BSD sockets is a protocol...
meppl gute nacht 03:01
xinming what's wrong with freenode? Is it being attack? or under maintaince? :-/ 07:33
I can't get here since yesterday. :-(
luqui freenode.net/news.shtml 07:38
audreyt yo 07:43
xinming nuisancebot
what does this mean?
the nuisancebot
luqui spambot 07:44
audreyt bots that causes people annoyance?
xinming the bot that sexy advertisers use which seduces people :-)
audreyt mm sexy advertisers 07:46
xinming I ever remembered that there always private message which send you the url to the adult site. So I say sexy advertiser. :-P
audreyt *nod* 07:47
luqui ponders lazy construction of the match object
does that buy us anything...
avar xinming: did you get my message about pugs fibonacci the other day? 07:48
xinming avar: yes, You killed it after 500m. :-) 07:49
avar hoh;)
audreyt luqui: it buys us something if we don't use all of he match objs
xinming I just watch back the log, and only see that line.
avar .java with GCJ is just as fast as .c with GCC for that probram, suprising
audreyt luqui: which could be useful for normal text match patterns -- kinda like XML::Twig
pugs fibbonacci? god forbid anyone benchmarking the current core 07:50
it's using linked lists of 4-byte-per-characters for strings and BigInts for math
luqui audreyt, how hard is it to implement automatic tailcall in the current core?
if "fairly easy" is the answer, can you point me in the right direction? 07:51
audreyt luqui: huh, we already do that on pil compilation.
luqui oh, pil
audreyt luqui: oh, you mean the parse tree evaluator
luqui is pil fairly full-featured?
audreyt sure, seeing how js runs 90% of tests
luqui is that the canonical pil evaluator these days?
audreyt but it's lacking proper support for OO metamodel
yes, it is, until the minilang hooks into pil2
even afterwards I think js will remain first tier 07:52
luqui okay, I'll try testing with that
audreyt it's just so very valuable :)
luqui it gives an interesting political angle to perl 6 for sure
audreyt you mean, PR angle :) 07:53
luqui uh, yeah
politics, public relations, anything that's not code, it's all the same
audreyt ...unless it's solid documentation, which is something else 07:54
luqui true
audreyt luqui: so, do you grok PGE's design? 07:55
both the OPTable parser and the matching engine
not the code, but the algorithms
xinming audreyt: Will you plan to make pugs support compiling into haskell and run top of parrot? :-P
luqui audreyt, oh yeah, I grokked those before pm wrote them
audreyt xinming: we already do (./pugs -CPugs) and we already do. (./pugs -CParrot)
xinming audreyt: How about compile haskell to parrot? :-/ 07:56
audreyt luqui: can you write them down as either p6 pseudocode or hs pseudocode -- preferably as annotations to pge but also okay as a standalone -- so we can merge 6.28 with 6.281?
xinming: I think the JHC person is the one to talk to
JohnMeacham
luqui why is that a precondition to merging 6.28 with 6.281?
audreyt just need a PIR emitter for the JHC grin code
luqui: because it's fuzzy to me how the rule engine is to work with the underlying metamodel 07:57
luqui: you know, the "rules are methods and grammars are classes and matching is multi/role/whatever" stuff
luqui ahh, that stuff
audreyt as we are doing metamodeling, it makes sense to give PGE match objects first class status
it's curretly just a crude pesudohash in Pugs
where you can deref with [] and {} but not much else 07:58
luqui okay, I'll look through the PGE source to find out the details and write them up
audreyt eg. it's impossible to implement your own match method or extend the match class
luqui: excellent, that will really really help -- not so much as a p6 port of PGE but rather the API of such a thing if it is to exist
we can still bridge to the underlying PIR objects
(API as in "internal API" not as in the "toplevel match API") 07:59
luqui well, I'm happily porting PGE to perl 6
and it's turning out to be quite simple really
audreyt that's even better!
commit commit :)
ext/Rules/
luqui Parse::Rule
already there
audreyt oh wow
luqui it's just skeleton at this point though 08:00
audreyt and just a day old
excellent... just go ahead then. I'll ping you if I have questions/problems in its integration
luqui++
luqui mmkay
audreyt luqui: oh, a lang q 08:02
luqui ?
audreyt "opaque" is not hash; it must provide setattr and getattr
according to s12
must it support enumerate_keys? 08:03
is it possible to have an object with infinite number of attrs?
luqui let me look at that part of s12
audreyt an object that's just a function, that is
luqui can you point me at a line number in s12?
audreyt reason I ask is something is not easily enumerable -- and some objects can respond to getattr requests
grep for PyDict 08:04
the thing they have in common is get/set; not sure if enumeration is part of the deal or not
certainl not dynamic extensibility (Cstruct can't) 08:05
luqui I don't think enumerate_keys is necessary for this interface
the only reason you'd need it is for reflection
but that is going to have to dig into the implementation type anyway 08:06
audreyt yeah
I seem to recall in A12 there's a %$obj form
where the underlying opaque emulates a hash
but something doesn't make sense, like
%$obj = ();
so I wasn't sure how far the emulation has to go
get/set makes sense as the language has 08:07
$!foo = 'bar';
but I don't see a %!
luqui %! on its own, as in, "all private attributes"?
audreyt yeah
if you don't recall a demand to support it in the language level for all objects, I'll remove it from the object interface as it makes implementation easier
luqui I don't recall anything of the sort
audreyt (because when bridgeing an unboxed type or foreign type I don't have to implement the full hash interface) 08:08
excellent, thanks!
luqui plus, such a thing can allow partial GC of object
audreyt verily
which another reason
and also for lazily instantiated objects
luqui hmmm... was there a recent doctrine on messing with %MY?
audreyt which is a huge win in Hs runcore -- not sure if applies elsewhere
I think you can't introduce new keys to it
not sure what else
luqui hmm
audreyt I think it's just a proxy and translates into corresponding prims 08:09
luqui because I really want pads to be able to clean up per-variable as in p5
audreyt explain?
(I mean need to run in 10mins)
luqui sub { my $x = 42; '$x is cleaned up here'; stuff that doesn't use $x }
I think that's important for the memory efficiency of a language that uses closures heavily 08:10
audreyt oh... you need some sort of reachability analysis
JHC does that natively -- they even clean up types
so all types are passed in along with values
luqui (which parrot won't do) 08:11
audreyt but if they are not used they are erased
so multis and GADT can be implemented very efficiently
luqui doesn't know much about implementation of those guys
anyway, that little nicety is what perl5's L::AG uses to be memory efficient 08:12
audreyt cool 08:13
also I use Perl6::Subs at $job
will probably submit some patches
luqui and I was bummed when I found out that perl6 would require a different technique
because it keeps all lexicals around as a whole
audreyt and implement readonly of args properly with INTERNALS::SvREADONLY and Devel::LexAlias
huh? lexicals attach to closure because we do hoisting 08:14
luqui hoisting?
audreyt { ... my $x; ... }
$x is hoisted to top of {}
before ...
luqui no, I mean that no lexicals are cleaned up until they all are
audreyt I don't see that in spec.
luqui it is implied from %MY fiddling
audreyt not so... the presence of %MY indicates a proxy object 08:15
which is bound to each lex items and thus keeping them alive
without presence we can freely ignore it
luqui and CALLER?
audreyt and if you want to eval"", a snapshot is there anyway
CALLER only attaches to "env $x" vars
luqui that was the doctrine I was thinking of!
audreyt so has no power over my $x vars
env$x vars are passed implicitly
luqui okay good
audreyt they are like (?x) implicit parameters in GHC 08:16
cool then, glad we agree :)
ok, I gotta run -- keep up the P6GE work :D
audreyt waves &
oh also -- I wonder if @*ARGS acan become @+ARGS. 08:17
luqui what is $+ again?
audreyt much easier reachability analysis
env
CALLER
luqui right
luqui has fallen behind on those parts of the spec
audreyt it's good to have division of labour :) 08:18
hi PJF, bye PJF. :)) *wave* & 08:19
PJF Hi Audrey! I hope you've recovered from all your busy travels. Bye Audrey. ;) 08:21
gaal awww, moosed again. 08:22
hi all :)
pasteling "gaal" at 192.115.25.249 pasted "Extract an Exp from a VList" (3 lines, 212B) at sial.org/pbot/15013 08:24
PJF Hi Gaal. Moosed? 08:25
gaal hey PJF. We both narrowly moosed audreyt :) 08:27
PJF laughs, "I've never encountered that use of the word before." 08:29
gaal forum2.org/moose/
gaal makes coffee
PJF Gaal: I've noticed you have a docs/articles/tpr.pod. Has that been published yet? 08:30
gaal PJF: no, it's on hold for a while. 08:34
PJF gaal: Okay. I was reading through it during a car-trip today. I think it's very good. (Although I did submit a 2 character patch) 08:37
gaal thank you! was it useful to you before you knew much about writing p6 programs? 08:42
PJF Gaal: Very. I still haven't done very much p6 programming, and what I have done has looked identical to p5. 08:43
gaal PJF: I ask because the editor felt the text wasn't very newcomer-friendly, but I didn't really know how that ought to be improved (except to try for more concrete examples and fewer abstract language discussions). 08:47
...which is kinda hard in something that's an article, not a book. 08:49
anymoose, thanks for encouraging me to revisit this :)
and for the patch :) 08:50
PJF gaal: I agree that fewer abstract discussions would probably help. They tend to excite designers, but can easily miss (and bore) the regular readers.
gaal: Since I was in a noisy car at the time I read over the article in a rather haphazard way. I can re-review it with a more critical eye if you'd like. 08:52
gaal: Provided you don't mind me using it as inspiration for a Perl-tip ( perltraining.com.au/tips/ ) later on. ;) 08:53
gaal hey, reading it in difficult conditions is a stress-test on its own :-)
PJF: you are welcome to make as much use of it as you like. :-)
it's under CC for that purpose too. 08:54
Whee, those look really nice!
like FMTYWTK except not really FM for the regualr interested reader. 08:55
PJF gaal: We need to redo the perl-tips page because we have so many now. They're *mostly* aimed at entry level programmers, as they make up a great deal of our readership. 08:56
gaal BTW: in perltraining.com.au/tips/2005-04-22.html, it is claimed that
# print "This is a simple static string";
# print 'This is a simple static string'; 08:57
are equally fast. they are, to run. I think the second one parses infinitismally faster though.
which is a very poor excuse to prefer it, I know. :-)
PJF gaal: It almost certainly does, because Perl doesn't need to look for interpolation. But once it's been parsed, they're the same. ;) 08:58
gaal of course.
PJF: As for the arrangement problem: yeah, there's a deep problem of aggregating knowledge :-( 08:59
PJF gaal: However, it's worth preferring it because it's easier for humans to parse, too, and that can take much longer. Every time I see double-quotes I need to go looking to see if interpolation will happen. Although I prefer q{...} over '...' , as I find it easier to find matching braces than quotes.
gaal just make sure everything is usefully searchable.
PJF: well, p6 will make this better in the typical case at least, because introducing general interpolated values is so easy, ie, 09:00
@{[ blah ]} ==> { yay } 09:01
of course, it comes at the cost of you having to take note of all the adverbs to q{}.
PJF gaal: That's one of my most favourite features. You have no idea how often the 'expression interpolation' question comes up in classes. 09:02
gaal of course, and it does because people are really happy they have interpolation in the first place! (unlike most other languages)
The fact that it's nuanced by modifiers is both a pro and a con; I believe it weighs far to the positive side because the nuances are regular and well-documented. 09:03
adverbial modifiers in general are wonderful.
I should stop preaching to the choir though :-) 09:04
PJF gaal: I should re-read the sheet music. Despite me having grabbed pugs to play more with p6, I've mostly spent my time in p5 build-system land. Right now I'm seeing if I can compile a ghc for cygwin. 09:05
gaal that would be grand. among other things that would buy us p5 embedding. 09:06
PJF gaal: As far as I can tell ghc used to be built against the cygwin library for Windows. I can understand they moved away from that so there could be a stand-alone ghc for win32, but I'm surprised not to parallel win32 and cygwin distributions. Looks like I'll soon find out if there's a good reason why. 09:08
gaal PJF: I never looked into it very deeply, but I think it may have to do with ABI changes necessitating frequent ghc upgrades and your run-of-the-mill dependency hell. But then, I think cygwin has stabilized muchly since say five years ago, so this may have become much better. 09:15
PJF ABI changes? 09:16
gaal binary structs change size, you suddenly can't just relink against something that worked, that kind of stuff. 09:17
I'm just guessing though: maybe it's because people already had the MSYS version working, which was faster and "good enough". 09:18
PJF gaal: Well, it seems to be happily compiling now. The make process took a very long time, though.
s/make/configure/
gaal yes, ghc is known to take ages to build. if you run into problems, you know about #haskell right? 09:19
PJF gaal: Not yet. ;)
q{ghc.exe: unknown package: unix} ... Hmm... 09:20
gaal looks like configure made a mistake. but I can't say more than that :-/ 09:25
09:38 _fallen- is now known as fallenstorm
PJF gaal: Looks a bit like a chicken-and-egg problem. GHC needs at least a posix/unix package to build for a unix-like system. However the Win32 GHC (which I'm using to try and build the cygwin system) doesn't come with such a package. 09:43
gaal ouch :( though I don't understand why it would need a binary version of that package. 09:50
maybe to get some constants? too bad, I'd have hoped configuration could take care of that. 09:51
PJF gaal: So would I. Cygwin builds are 'unsupported', it would appear. I haven't done much digging beyond that, just testing if it would work out of the box.
gaal in pugs we rely on perl5's Configure to have done that hard work for us. Of course one day we'll have to take our heads out of the sand and do it ourselves, but that day is a while away. :) 09:52
dduncan seen svnbot 10:39
svnbot needs to be be told where #perl6 moved to 10:40
clkao audreyt: you around? i found an interesting thing. pugs is trying to 'use' by grepping it from column 1. so if i have a multi-line eval with a use in it, like unspecced/p5/array.t, it fails early 14:10
araujo The less i was expecting to find at Main.hs was a spanish poem :-] 15:06
avar ?eval *("x") 15:15
evalbot, where art thou?
xinming avar: He is in trance :-) 15:19
avar: since the freenode is changed temporarily, the evalbot hadn't been changed yet. 15:21
audreyt how had it changed? 15:22
oh, chat. 15:23
clkao audreyt: what's the use problem? i want to hook use perl5:blah into pil2js
audreyt clkao: use() is handled in Pugs.Parser
look at how JSAN use is handled for some clues 15:24
clkao uhm, it's using another function iirc
audreyt both my laptop and my ipod is broken... so can't chat for long. fortunately by tomorrow noon I should have a working laptop back
clkao dude
wolverian ow
clkao it's end of 2005. how many laptops did you break this year? 15:25
audreyt yeah, so maybe hack in use jsperl5:DBI
first, a dude I am not. second, there was only one, mmkay?
gaal hey audreyt
audreyt clkao: anyway, try making jsperl5:DBI work, I'll reconcile (or gaal may)
clkao but it should be perl5: ! 15:26
audreyt which is what I mean by "reconcile"
depending on the current -C setting
generate different code
clkao *nod*
audreyt gaal: hey... what's up?
gaal hey. I didn't get a chance to follow up on trying VOpaque. let me find the ol' paste... 15:27
xinming audreyt: I mean the freenode server address is changed. :-/
audreyt cool... I'll be back in ~10min
xinming I don't know if irc.freenode.net still works 15:28
gaal oh! too bad about the laptop and ipod :-)
s/)/(/
audreyt heh :)
clkao XD
gaal I guess my fingers are, uh, smiley-happy. 15:29
sial.org/pbot/15013
clkao + audreyt: I don't see an obvious reason for the ^use problem in the parser. 15:32
xinming audreyt: how do you translate monadic action into Chinese? 15:33
gaal also, this does work: 15:34
./pugs -e 'eval qq{ \n use Ex; say "ho"}; say "hi"' => "hi\nho", which is correct
(where Ex is some module that happens to load OK and do nothing) 15:35
audreyt: ok, I don't see how VOpaque can help at all. 15:36
audreyt xinming: just "action: -- ignore Monad 15:38
gaal: unsafeEvalExp yields Val not Exp iirc 15:39
oh wait 15:40
sorry it yields Expm just patmatch it
now you have as list of values that's exported?
(map Val bindings) give you raw vals 15:41
as Val :: Val -> Exp
but won't you need the names as well?
avar why does @a Ā»++ give me a can't modify constant error in a subroutine that has sub f(@a is rw) ..
audreyt avar: hm... commit a test? 15:42
(do you have a committer bit?)
also try "is copy" and see if they differ
gaal whoops, sorry, let me nopate the whole patch again (the list contains bindings, supposedly complete) 15:43
avar is copy gives me the same error 15:44
pasteling "gaal" at 192.115.25.249 pasted "export patch wip" (88 lines, 4.2K) at sial.org/pbot/15014
avar hang on, I'll upload a testcase
audreyt avar: a bug then. write a t/pugsbugs/
gaal audreyt: the idea is I keep "mkExp name"s around. 15:45
(hoping it works.)
avar avar.lir.dk/tmp/calc.p6
(and I don't have commit rights)
;)
gaal avar: email? :) 15:46
audreyt gaal: that will fully eval mkExp name
in part of earlier unsafeEvalExp
instead of keeping it around
avar email you the testcase?
audreyt avar: no, so that gaal can give you the committer bit 15:47
gaal avar: no, what is your email, so we can give you a commit bit
avar hah
gaal you can /msg if you like.
avar [email@hidden.address]
;)
audreyt gaal: can you post the patch somewhere in (say) src/Pugs/Parser.hs.export.patch or something in the repo, and invite avar to openfoundry?
I'll check back in ~9hrs when I have my own laptop back... can't do much coding in this one :/ 15:48
avar nah it's just that projects usually don't give out commit rights so easily;)
gaal avar: invitation sent. welcome aboard!
audreyt gaal++ avar++
avar but yeah, I already have the repository checked out, I'll make a testcase & commit it
for is rw and is copy
audreyt gaal: if you want to keep whole Exp around as a Val, you may have to ship it around in a VOpaque (or better -- just use name/value in the hash to encode the exp) 15:49
gaal: but I don't have srctree in front of me... so if you can committ the (patched or just the patch) Parser.hs it'd help me a lot tomorrow
g'nite :)
gaal sure. i'll see what progress i make, and at the end of the day i'll post. 15:50
audreyt danke!
gaal++
gaal good luck laptophunting tomorrow!
audreyt and sorry about not been of much help... laptopping--
&
gaal night :)
philstar got one question about perl6: will there be an index variable (in whatever replaces foreach () {} )? 16:18
xinming philstar: do you mean the $_ ? 16:19
there won't be foreach in perl 6
philstar xinming: no, I mean the number of the array element called
I'm asking this because I seem to be writing for(my $i=0;$i<@array;$i++) {} an awful lot and getting tired of it
but usually I need to use $i, so I can't use foreach in those cases 16:20
xinming philstar: why not use for (@array) {bla..bla.. $i ++? } 16:21
my $i = 0; for (@a) { bla..bla.. $i ++ }
philstar: and by the way, for and foreach are equal in most case.
philstar xinming: thanks for pointing that out... I must be stupid... 16:22
xinming and in perl 6, there won't be foreach
philstar that's cool then
xinming philstar: does that resolve your problem?
philstar yes, thanks
xinming :-) 16:23
philstar: by the way, this works for perl 5,
philstar hmm... on second thought, all I save are three characters
$i< 16:24
so it's actually almost as verbose as before!
xinming hmm, maybe you mean the iterator.
hold on please
philstar sure 16:25
brb 16:26
gaal ?eval for <a b c d e>.kv -> $i, $v { say "$i/$v" } 16:28
xinming gaal: do you know if there is a iterator or iter function which will return the current value of the iterator? 16:29
gaal xinming: not afaik 16:30
the above code doesn't work, btw: if you do it with an array, though, it does.
I think that's a bug?
ie this does work:
?eval my @l = <a b c d e>; for @l.kv -> $i, $v { say "$i/$v" } 16:31
(where's evalbot?)
philstar gaal: this is perl6, I take it?
gaal philstar: yes. 16:32
philstar thanks
gaal $i will start at 0, btw. 16:33
xinming philstar: sorry, I can't understand your question, But you can ask here later if anyone comes.
philstar xinming: no, you were right: it's the iterator value I'm looking for
avar .kv ?
gaal avar: "k"ey-"v"alue
avar ah, of course;) 16:34
gaal used for hashes, it yields %h.keys Y %h.values
with lists, it gives 0 .. Inf Y @list
and with a pair, it just gives ($p.key, $p.value) 16:35
clkao nothingmuch: so what's the tool to diff two test result yml?
gaal (Y is the zip operator.)
clkao: what's wrong with diff? :-)
grep -v time measurements first though. 16:36
they are already in the same order - or should be.
avar gaal: rt.openfoundry.org/Foundry/User/?User=78788 16:41
woot
xinming avar: add yourself to AUTHOR first. :-P 16:42
avar I can claim to be co-author for the AUTHOR file then 16:43
gaal avar: :-) 16:44
avar how do I check out the repository under my username so I can commit stuff? 16:45
xinming I think you can
avar svn co [some svn schema]://[avar]...@svn.openfoundry.org/pugs ...
gaal you'll be prompted for login on your first checkin.
xinming yes.
gaal your currently anonymous co will be upgraded when you do that.
avar ah of course 16:46
I've usually worked with svn repositories though svn+ssh
I know what I'm going to write, example scripts which demonstrate every language feature;) 16:49
is there something like that already?
is that list ordered by en_US.utf8 ? 16:51
(AUTHORS)
because then I'm at the top;)
xinming avar: the first letter must be upper cased. ;-) 16:52
avar uh, apperently not.. 16:53
I'm between Ad and Al
Ae and Af rather 16:54
gaal avar: look in examples/ - and check out pugs::hack (hack.pod) 17:00
stevan hey gaal 17:05
gaal yo stevan 17:07
what up?
stevan not much... and you? 17:09
just trying to test the Bootstrap.pil
however my dog thinks this is a horrible idea, so it is going kinda slow :) 17:10
gaal just testing the tensility of the parser and the runtime
stevan only as a side effect of testing the model itself :) 17:11
gaal incidentally I rented Cool Hand Luke. But, er, not on the chanell :)
oh, i meant that was what *I* was up to 17:12
stevan ah
excellent :)
gaal moving stuff from Exp to Eval. Carefully. :)
stevan TDD++ :)
gaal oh yeah 17:13
nothingmuch clkao: head revision of Test::TAP::Harness 17:17
err
HTMLMatrix
nothingmuch.woobling.org/Test-TAP-HTMLMatrix/
nothingmuch.woobling.org/Test-TAP-Model/
see example.pl in TTH
gaal nothingmuch: ping 17:18
nothingmuch pong on IOCQ 17:19
webmind ey Smari 17:23
Smari Eyy webmind!
clkao nothingmuch: i basically want to compare js run and jsperl5 run, ignoring those failing haskell one 17:24
webmind Smari, looking into perl6 eh? 17:25
nothingmuch clkao: from the smoke server, or from yml?
avar gaal: Am I supposed to transliterate non-ascii characters in the first field in authors?
gaal avar: it's utf-8 17:26
nothingmuch from yml: unserialize, and copy paste the example.pl file in T::T::H, and just put the data instead of runs
nothingmuch.woobling.org/Test-TAP-H...example.pl
avar yeah but people have stuff like Amir "lightstep" Livine Bar-On עמי×Ø ×œ×™×‘× ×” ב×Ø-און
and Andras Barthazi AndrƔs BƔrthƔzi
gaal that's utf-8 :-)
avar there
Smari webmind: I have for ages, just not very actively. Got updated yesterday to what's important.. and I'm impressed.
clkao nothingmuch: either
nothingmuch clkao: 'my $model_ok'...'my $model_failing' - replace with loads 17:27
but for smoke server - too late
webmind Smari, ah k :)
nothingmuch it uploads the HTML instead of the YML
we need a smoke server that's:
a. yml friendly
b. easier to maintain
c. not a .cgi
(or at least not necessarily a CGI)
d. caching (to make a. easier) 17:28
not just yml friendly - storable friendly is also important
svnbot6 r8282 | avar++ | * I'm one of the authors of this hack, apperently;)
rafl Maybe someone should rewrite it using catalyst..
Actually I have some free time. Can you tell me what it needs to do exactly? I think I'll rewrite it. 17:30
But unfortunately I don't know much about the smoke process.
nothingmuch rafl: basically, test harness runs 17:32
Test::TAP::Model collects the run data
into a thing that can be serialized
this should be storabled, and posted to the app
which should save the file in some model (file, or DB, i guess)
list view can display by date, platform, yadda yadda 17:33
(should be multiproject friendly... we in pugsland like backends, parrot needs runcores and platforms)
(catalyst would like perl/module versions)
C::P::Cache can be used to save rendered HTML for each yml
or storable
compression support for uploads should be available too 17:34
the layout of the current thing is pretty nice, and i guess that saves time too
but it should be more comprehensive
lastly, a compare feature would be nice - check N results, and it makes a consolidated display (like in the example.pl i linked to)
rafl OK, I'll do that. 17:36
nothingmuch rafl++!
you get a beer
i'll post a reward on the catalyst wiki
rafl I'm not sure about how the data should be stored on the server. Would sqlite be sufficient? 17:37
nothingmuch dev.catalyst.perl.org/wiki/BeerRewards
yes, i think it will
storable in blobs
(texts, really) 17:38
but some people might prefer a dir of files
go with what you think is easier
rafl beer++ 17:39
nothingmuch oh, repository snapshot vs release also sucks
the way i think it should work:
you have "dimensions" that describe the smoke result
like in OLAP 17:40
version, branch, platform, etc etc
rafl Well, with sql comparisons, sorting, etc would be easier.
nothingmuch the "default" dimension is used to sort them initially
like, sort by branch, then platform, then version yields pugs smoke page
err, sorry
branch, platform, smoke date
then people can create cross sections 17:41
rafl Sounds reasonable. 17:42
nothingmuch it's also more maintainable than the current way it
's hacked in
basically the model should just be pluggable
clkao grins 17:43
perl5/PIL2JS/runjs.pl --run=jspm --perl5 -e 'use jsperl5:Digest::MD5 <md5_hex>; say md5_hex("test")'
nothingmuch in the config there's a list of dimension relationship/columns
clkao this now works
nothingmuch spidermonkey runtime embedded in perl 5 running perl 5 modules and perl 6 code?
this runtime prefix thing should be much more generalized 17:44
the interface is the same on perl5: and jsperl5:, so there should be a way to just say "use this interface, and to hell with the backend type"
clkao nothingmuch: yes 17:45
i know, it needs to be perl5:
nothingmuch nevermind, it's just a hack now
but it should be p6l'ed
clkao autrijus said she can fsck it tomorrow
p6l?
nothingmuch perl6-languaged
the interface for using this should be posted for discussion
rafl: please mention that you are up for the task on the wiki 17:47
rafl nothingmuch: Done. 17:49
clkao i don't understand this. if you put 'use jsperl5:Digest::MD5 <md5_hex>' in a file it won't work unless it's at the beginning 17:50
nothingmuch rafl: great 17:57
svnbot6 r8283 | stevan++ | - created Test::PIL::Boostrap for testing Bootstrap.pil specifically 18:13
r8283 | stevan++ | - temp files are now cleaned up by Test::PIL
r8283 | stevan++ | PIL.Native.Bootstrap.pil
r8283 | stevan++ | - added set_* for name, version & authority
r8283 | stevan++ | - set defaults for version & authority for Class, Object, Module & Package
r8283 | stevan++ | t/pil/bootstrap.t
r8283 | stevan++ | - added 52 tests (11 failing ones) to test the integrity of the meta-model
avar my @nums = 1..5; 18:24
@nums Ā»++;
fails
is it supposed to?
svnbot6 r8284 | avar++ | * A hyper operator testcase that fails 18:40
r8285 | clkao++ | perl5/PIL2JS/runjs.pl --run=jspm --perl5 -e 18:56
r8285 | clkao++ | 'use jsperl5:Digest::MD5 <md5_hex>; say md5_hex("test")'
r8285 | clkao++ | now works.
xinming anyone here can tell me how to run the compiled Javascript code? :-/ 19:01
clkao spidermonkey? 19:03
or you use my JavaScript.pm and that runjs line you saw above
araujo Is it perl6 too much different from perl5? 19:04
xinming open2: exec of js failed at pugs/perl5/PIL2JS/lib/PIL2JS.pm line 162 19:06
:-S 19:07
clkao you have js ? 19:08
xinming No >_< 19:09
by the way, Is the runnable code which can be run in browser? :-/
clkao see README 19:10
pil2js.pl can create html files for you
xinming It's really a crazy man who thought compile perl 6 into JavaScript. :-/ 19:11
clkao: I will check it
clkao is it even crazier now the compiled javascript can actually use perl5? 19:16
Khisanth hehe
avar araujo: what do you consider too much?;) 19:17
Khisanth well there are lots of changes but it's still largely the same
xinming In fact, I ever think, If we can compile parrot into JavaScript :-) 19:18
araujo avar, well.. so much like we probably think about perl6 like a new language :-P
we could* 19:19
Odin-LAP araujo: The differences are substantial.
Substantial enough that perl5 thinking may not apply to perl6 programming. Which, I guess, makes it a new language. 19:20
But that doesn't mean it's "too different"! :p
araujo Interesting, thanks
I think you have answered my question ;-)
Khisanth Odin-LAP: only because you no longer need to rely on tricks to get certain things working (well hopefully)
avar I'd say it's a new language, given all the differences 19:22
Odin-LAP Khisanth: Well ... yes. But that's usually the difference between languages, isn't it? Having to use tricks in more or fewer places. :)
Or sometimes even just different...
leo clkao: still about? 19:35
clkao yes 19:39
leo at #parrot: 20:34 < ^conner_> I think clkao needs to beat me with a clue stick 19:46
you got a minute for him?
avar multi sub circumfix:<Ā” Ā”> ($n) { abs $n } <- shouldn't this work? 19:48
I'm unable to get any circumfix stuff working 19:51
how do I get a hash key from a value? 20:11
(first match)
xinming reverse? 20:16
wolverian theoretically, %hash.reverse<$foo> 20:17
svnbot6 r8286 | avar++ | Replaced: 20:51
r8286 | avar++ | -multi sub sum (*$x, *@xs) returns Int { $x + sum(@xs) }
r8286 | avar++ | +multi sub sum (Array *@x) returns Int { [+] @x }
wolverian isn't the 'sub' there redundant? 20:53
rafl afaik yes. 20:54
clkao doh, the example is not demostrating functional anymore 20:55
rafl avar: Would you please revert your last change? 20:58
avar bah, I was just going through stuff and changing it,)
aiight
rafl avar: This was an example for functional programing and it's not functional anymore.
svnbot6 r8287 | avar++ | Ooops, wrong directory 21:02
rafl (descriptive commit messages)++ 21:03
wolverian heh. 21:04
Smari Hmm. Is there a karmabot here? 21:30
Juerd Smari: Does that matter? 21:34
Smari Juerd: long time no see.
No, it doesn't.
Juerd The only reason I'm responding is because I recognised your nick :) 21:35
How are things?
Smari But it would explain all the mad incrementing of terms..
Juerd karma foo
Smari Things are good.. not been IRCing much for a while.
Juerd Why are you interested in Perl 6? 21:36
Smari How can I not be?
Juerd The question wasn't "how" :)
revdiablo perlbot: karma avar
perlbot Karma for avar: 1
Juerd perlbot: karma foo
perlbot foo doesn't have any karma
Juerd foo++
perlbot: karma foo
perlbot Karma for foo: 1
revdiablo perlbot: karma autrijus
perlbot Karma for autrijus: 90
Juerd Wowie.
perlbot: karma audreyt
perlbot Karma for audreyt: 8
Juerd Can it alias? :)
i.e. symlink
revdiablo Sure it could, but I don't think it does. =) 21:37
Smari Haha. Okay.. let me rephrase my answer: I'm a programmer, and a student of mathematics and linguistics. Perl, and particularly Perl 6, is...
Juerd Uh oh.
Maths and linguistics.
Smari It's a good mix, no matter what people say.
Juerd Get out of here before discovering that everything you learn in school is only partly true :P 21:38
Of course it's a good mix.
See Perl :)
Smari Juerd: Hah. Do you think I don't know that already? :P
Juerd: Exactly.
I don't know if Perl was a motivation to get into the math/langs mix, probably not though..
Juerd What can your role in Perl 6 be? 21:39
Smari Ahh. My role? User, probably.
I'd like to develop it, but I have not the time.
Juerd Right, so why are you here years early then? :P
Not that I mind - I'm just curious
Smari Because I'm never anything but a power user. :)
Juerd And you want to add pioneer to that?
Smari Besides, I've got my fingers in way too many things already...
Haha. Exactly. 21:40
Juerd It'd be great if you could just start using Perl 6 now, and report bugs in the form of test scripts.
Smari Working on getting Pugs up. 21:41
Debian is being a bitch though.
Juerd Huh? It works perlfectly in Debian
Smari I didn't say it didn't. 21:42
But Debian itsself is being a bitch. Pugs won't compile without Haskel, and Haskel won't install without something that seems to be missing from the repository.
My fault for using unstable I guess, but hey..
Juerd Hm, feather runs sid, and I haven't noticed issues yet 21:43
Let's try to fuck things up, and upgrade
Smari Probably just rhnet.is
gaal Smari: apt-get install ghc6, not ghc-cvs. 21:44
Smari gaal: Done that already. It all stops on e2fsprogs, which is ... well: 21:45
gaal Juerd: I've been running unstable for years with very few problems. Not no a server though. :)
Smari E: This installation run will require temporarily removing the essential package e2fsprogs due to a Conflicts/Pre-Depends loop. This is often bad, but if you really want to do it, activate the APT::Force-LoopBreak option.
E: Internal Error, Could not early remove e2fsprogs
Any ideas?
Juerd gaal: I run it on at least a dozen different servers. 21:46
gaal that doesn't look directly related to ghc, but if you aren't afraid of powerouts, do what it suggests.
Smari I'd use APT::Force-LoopBreak if I knew where to put it...
gaal on the command line.
Juerd gaal: And have, for years, without problems that couldn't be fixed in less time than I'd have spent compiling new stuff myself.
gaal Juerd: except for once, the gtk2 pic2<->3 trouble that took a week to sort out. 21:47
Smari: I don't rembember the exact syntax, but the apt man page has it, I think.
Smari Ahh, thanks.
Juerd Smari: Oh, that stuff has been terribly broken in sid for a while. The solution is to upgrade more frequently :)
Smari -o of course.
Juerd Smari: Though you can't go back in time.
gaal but you can slow it down!
the technique I know for it doesn't give you longevity though. 21:48
Smari Whee.
gaal (go to lots of meetings)
Smari Juerd: Ahh, of course. I haven't upgraded for ages.
Now.. should I be doing this or studying for my analysis exam? 21:49
Juerd Smari: In any case, make sure you run a 2.4 kernel or newer, or things will break so bad you'll be sorry to have *ever* upgraded.
Do you know enough for the exam? Are you confident?
Smari I am not. 21:51
Juerd: 2.6.3 here.. which is old, but not *that* old.
Juerd Then study.
Smari Aye. 21:52
Pugs shall compile first.
:)
(I'm reading on Wikipedia ...)
clkao is the bootstrapping plan somehow docuemnted somewhere? 21:55
avar Smari: still trying to compile it? 21:58
xinming hmm, anyone here tell me how to customize the output of pod2html? 22:02
If I use pod2html, I can't generate the synopsis which is same as the site.
Smari avar: Still fixing apt. 22:16
Juerd 14Smari, go study! 22:22
stevan_ clkao: ping 22:27
clkao stevan_: hi
Smari Juerd: Yes sir. :)
stevan_ clkao: you were asking about a bootstrapping plan?
clkao ya
stevan_ for the metamodel? objectspace? or p6-on-p6? 22:28
clkao p6-p6
stevan_ I dont think there is any clearly laid out plan anywhere
clkao ok, because i was playing around and implemented hyperop stuff in p6
stevan_ luqui said something the other day about having "claimed" it among the p6 cabal 22:29
obra clkao++ # hacking
clkao was thinking i shall ask to see where this can fit in
obra clkao: <unicode hotsprings>.org isn't taken
clkao is it a valid domain name?
obra yes.
using punycode.
stevan_ clkao: you might want to take a look at the p6 prelude 22:30
clkao yes
obra (\u2668).
stevan_ however, I am not familiar with it, so I can't help any more than that
clkao that's fine. but what's the metameta bootstrap plan then? 22:31
obra (xn--j6h.org) 22:32
stevan_ clkao: currently it is centered on the Object Space
gaal whew, package A; use Moose; package B; use Moose works at last (but not lexically) 22:33
stevan_ the basic idea is that we have defined a minimal language with minimal features and are using that to implement the metamodel
gaal stevan! lucille!
stevan_ the hope is that this will make things much more portable, since diff runtimes will only need to implement this mini-language 22:34
hey gaal
clkao: and this mini-lang will eventually morph into PIL2 22:35
svnbot6 r8288 | gaal++ | * Pugs.Parser: Perform symbol importation at use time, not parse time. 22:45
r8288 | gaal++ | This means that the second of two packages that use an exported function
r8288 | gaal++ | sees it, like it should.
r8288 | gaal++ | TODO: make this import lexically scoped by default; and honor importation
r8288 | gaal++ | requests on the C<use> line. Oh, and add tests, too!
gaal audreyt: not quite sure how to do the lexical import; hackage most welcome. 23:02
gaal sleeps
&