-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.
nothingmuch stevan: ping 00:10
Juerd dvzine.org++ 00:50
gaal_ ?eval my @pats = /1/, /2/; say "MATCH" if 1 ~~ any @pats; 07:23
07:23 evalbot_7981 is now known as evalbot_7982
evalbot_7982 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode) 07:23
nothingmuch morning gaal_
gaal_ ?eval my @pats = rx:Perl5/1/, rx:Perl5/2/; say "MATCH" if 1 ~~ any @pats; 07:24
evalbot_7982 OUTPUT[MATCH ] bool::true
gaal_ hu
hi
?eval my @pats = rx:Perl5/1/, rx:Perl5/2/; say "MATCH" if 77 ~~ any @pats;
evalbot_7982 undef
gaal_ so far so good. but:
?eval my @pats = rx:Perl5/1/, rx:Perl5/2/; my $junc = any @pats; say "MATCH" if 1 ~~ $junc;
evalbot_7982 undef
gaal_ bug? feature? 07:25
nothingmuch i dunno 07:26
looks like a bug
gaal_ Yeah, think so too :-/
nothingmuch to bad pugs doesn't have real perl regex
gaal_ asking the list.
nothingmuch then we could debug with ??{ }
gaal_ there's always gdb and the nearest mental institution. 07:27
07:27 gaal_ is now known as gaal
pernod Hello all. 08:54
Quick question?
To compile pugs on XP with nmake and mingw, I have to run the following on the Makefile generated from "perl Makefile.PL" 08:56
perl -i.bk -pe "s{cd \.\.}{cd \.\./\.\.}g" Makefile
(Replace "cd .." with cd "../..")
Any ideas how this can be fixed in Makefile.PL? My makemaker-fu is very weak .... 08:57
svnbot6 r7983 | Darren_Duncan++ | r904@Darren-Duncans-Computer: darrenduncan | 2005-11-22 01:05:30 -0800 09:10
r7983 | Darren_Duncan++ | /ext/Rosetta-Incubator : added 2 new documentation files /docs/Overview and /docs/FAQ ... the FAQ is for you to write your questions in
gaal pernod: it's been a while since I built with mingw, and I'm at $work now so I can't investigate... any idea *why* this is needed? 09:33
pernod Oh, just to simplify things. 09:35
Having to manually munge an automatically generated Makefile seems a bit counter-intuitive to med :)
(me, even)
My steps for building pugs now is: 09:37
perl Makefile.pl
perl -i.bk -pe "s{cd \.\.}{cd \.\./\.\.}g" Makefile
Then nmake -> nmake install
That's not normal, is it?
dduncan fyi, while the document set is incomplete, hopefully those of you interested in Rosetta will learn some things from the new Overview 09:50
gaal sorry, was called away. 10:36
I meant, why is this substitution needed in mingw in the first place? How come the path is wrong there? 10:37
pernod *back from lunch* 10:45
I have no idea, gaal.
Actually, I think it is nmake's fault.
Juerd pernod: Don't escape . on the RHS. The RHS is a string, not a regex. 11:06
pernod: s{cd \.\.}{cd ../..}g 11:07
pernod Thanks Juerd :)
Juerd It it makes you feel more comfortable to not escape it if it's in actual quotes, feel free to use s{cd \.\.}"cd ../../"g instead :)
Eh, with a / less.
pernod (Just a quick one liner, it did the job tho ...)
Juerd Sure does.
I'm picky because there's always someone who learns from what we do. 11:08
pernod And you reminded me of something I had forgotten. Picky++. 11:10
masak karma Picky 11:14
jabbot masak: Picky has neutral karma
Juerd karma foo 11:19
jabbot Juerd: foo has neutral karma
Juerd foo++
karma foo
jabbot Juerd: foo has neutral karma
Juerd Borken.
wolverian goddamn, Evolution has the worst key bindings I've ever seen.
Juerd wolverian: Now that's a funny way to say you've never seen Emacs ;) 11:22
wolverian er.. good point 11:23
svnbot6 r7984 | fglock++ | * /docs/notes/lazyness.txt - started Array/Hash internals 12:41
rafl Juerd: CLT orga list says: "Das LPI ist an der Teilnahme zu den Chemnitzer Linux-Tagen interessiert," 12:55
Juerd rafl: Aber sollen sie da auch das LPIC-2 haben? Gewoehnlich nur das 1. LPIC... :) 13:28
LPIC-1 hab' ich schoen gemacht.
Eh, schon. 13:29
Beide schoen und schon :)
Ihre Sprache SAUGT :) 13:30
Ebenso wie woertliche Uebersetzungen :P
Jooon ich bin ein perliner 13:31
rafl Juerd: Darueber sagt die Mail nichts. 14:20
Btw, are there tools to set up a local cpan mirror (especially the search interface and documentation viewing)?
integral rafl: try kobesearch.cpan.org 15:28
rafl integral: I actually want to install it locally to work offline. 15:32
integral umm, that's what I mean. See cpan.uwinnipeg.ca/htdocs/faqs/faq.html#11
but there's also other things like CPAN::Mini, and podserver
rafl OK, so I may can replace my old minicpan + pod extracing + swig search 15:33
15:41 wilx`` is now known as wilx
svnbot6 r7985 | iblech++ | * Usual svn props. 15:41
r7985 | iblech++ | * t/operators/till.t: Incorporated Larry's answers from my p6l post:
r7985 | iblech++ | www.nntp.perl.org/group/perl.perl6....uage/24098
r7985 | iblech++ | * New t/oo/methods/topic.t: $_ is *not* self in methods by default.
r7985 | iblech++ | You've to explicitly write (per update section of r6636 of A12)
r7985 | iblech++ | method foo ($_: ...) {...}
r7985 | iblech++ | * t/oo/attributes/defaults.t:
r7985 | iblech++ | has $.foo = { do_stuff_with($_); self.foobar };
r7985 | iblech++ | $_ is the attribute being initialized, "self" refers to the object being
r7985 | iblech++ | initialized (per S12).
gaal so what is $_ set to in a random method? 15:45
GeJ what is "Usual svn props." I see them pretty often, but never figured out what it means...
gaal GeJ: a file in subversion can have some metadata about its encoding, lineendings etc. 15:46
when you add a file to pugs, you should usually run util/add-svn-props.sh on it to set the defaults.
often people forget, and often iblech remembers for them. ;-) 15:47
GeJ huh, ok...
nice "reminder" ;)
integral except if you're using svk, you have to cat the script, and manually run the commands ;-) 15:48
gaal the practical use of this is that if I checkin a text file on Windows (say) and you pull it in linux, you get \n instead of \r\n lineendings.
integral: and the svk variats are? s/svn/svk/ simply?
Limbic_Region heh 15:49
gaal if so, i'll fix that in a jiffy.
Limbic_Region and all this time I thought props meant something else
integral gaal: yeah
GeJ gaal: oki, thanks for the explanation.
gaal np :)
integral gaal: something like a --svk flag for the script?
gaal no, DWIM. 15:50
huh? someone did that already.
integral *shudder*. I shudder after hacking the version_h script
oh, ok, I'm showing my lack of contributions recently
gaal chromatic and dduncan did.
gaal praises svn praise 15:51
gaal blames svn blame
GeJ isn't that the same command? 15:53
one being more team-friendly than the other?
Su-Shee Hi. 15:54
gaal GeJ: indeed so. 15:57
sadly they are huffmanized wrongly.
autrijus gaal: I'd say $_ in a random method ought to be out-of-scope if it is out of scope 16:02
gaal so, compile error? 16:03
autrijus yup 16:04
Limbic_Region autrijus - question came up at the Monastery the other day that you may be able to help answer as I haven't seen pmichaud around anywhere
autrijus pm is usually on #parrot (but is currently not)
url to the q?
Limbic_Region isn't one - asked in the CB - going to repeat here 16:05
autrijus 'k
Limbic_Region someone who has more than a basic understanding of the p5 regex engine was concerned that a lot of the bad mistakes/decisions were going to be avoided in p6
Limbic_Region was just wondering how much pmichaud was familiar with the p5 regex engine
I explained that p6 rules were far more than just regexen though they contained them as a subset 16:06
but that if I could find an answer I would
autrijus well, the design is jointly made by at least lwall, dconway with pm
and lwall should know something about rx; dconway also should, having written Perl6::Rules in p5rx
Limbic_Region heh 16:07
autrijus also, p6rx is, as you said, a very much different beast, so it's hard to repeat mistakes even if you try
Limbic_Region well, after looking at the pge status and readme I didn't find what I was hoping I was looking for
something along the lines of a - here's what worked and didn't work sorta thing 16:08
*shrug* - great minds are working on it, I am not sure why people can't just trust that
autrijus that said, I don't know much about how pge's plan looks like for optimization -- ask on p6c? iirc pm is in the feature/defect driven mode still, not tuning
"what worked and didn't work" sounds like exactly what compilers/pge/STATUS describes no? 16:09
Limbic_Region everytime pmichaud has talked about optimization (that I have heard) - it has been that it isn't there yet and he doesn't plan on looking at doing that until the time is right
autrijus yes, and I think it's sensible.
Limbic_Region reads it again to be sure
no, but I think we are talking past each other 16:10
demerphq (the person asking the question) was interested in implementation details
stevan evening autrijus
Limbic_Region even after I explained that rules were not regexes 16:11
and that parrot was the p5 VM
and that by definition a lot of implementation would be different
he still didn't sound convinced
autrijus stevan: yo!
Limbic_Region is glad of his skeptisism though
In areas where I have 0 competency I just take it on blind faith that people smarter than me will get it right 16:12
autrijus Limbic_Region: if he'd like, a great exercise would be porting PGE/Rule.pir and PGE/Match.pir to p5.
or better, p6. (or to C++, or to Java, or to whatever he feels like)
that can make the design grokkable to him, I think 16:13
Limbic_Region autrijus - I have given him the link to S05, to the p6.compiler group, and to the Status/readme in the repository
if that doesn't satiate him he will have enough info to dig further 16:14
and if he doesn't have the time/interest to dig further than he shouldn't be b1tching
autrijus nodnod, but porting is a cute nice useful challenge, I think
Limbic_Region ;-)
autrijus people bitching is good... as long as it leads somewhere 16:15
Limbic_Region yep yep 16:16
demerphq is busy with real stuff but I am sure he isn't just blowing hot air, I respect him a great deal
autrijus stevan: so uhm, docs/interpreter.pl - care to talk a bit?
Limbic_Region has to wander off now
pasteling "stevan" at 67.186.136.119 pasted "Sketch for Module/Signature DSL" (105 lines, 3.4K) at sial.org/pbot/14455
autrijus ooh
stevan autrijus: interpreter.pl is just silliness :)
stevan only has a few minutes to talk really,.. 16:17
autrijus ok, let's talk about dsl instead
stevan I think I have been reading too much ML stuff
autrijus your brain are being typed
stevan LOL
yes it is
autrijus type Opauqe = Opaque 16:18
stevan so the core of what I want this to do is to provide another layer of abstraction over the core types/things which can be used as a bridge to user land
a signature can easily become a Role in userland 16:19
it also becomes easy to swap out faster/better implementations 16:20
because we never hard code the impl
autrijus yup, it's just the abstract signature 16:21
stevan I was thinking last night about maybe creating signatures for Class, Object, Package, Role, etc too
autrijus how is BIT different from Bit?
stevan BIT is the sig,.. Bit is the things created by the Functor
Bit is concrete, BIT is abstract
autrijus got it 16:22
stevan so if I also wrap Class, Object, Package, etc,.. then those impl's too can be substituted
I am not sure if that makes sense though
autrijus it amounts to provide explicit types to the primitives you have in Core 16:23
stevan maybe allowing for Class to be written as native code rather than on top of the runtime
autrijus: yes, that is the goal :)
stevan has to run, but will be back in about 1 1/2 hours 16:25
will you still be up?
stevan & 16:27
autrijus I hope :)
maybe not -- will definitely checkback tomorrow though. last night's hotel doesn't have net and dialup sucked :/ 16:28
fglock autrijus: ping 16:34
autrijus fglock: pong 16:38
fglock autrijus: I'm trying to find out why there is a need for a "List" class. It looks like Array can do everything, and List is just an implementation detail 16:39
autrijus I thought the idea of Arrays is that it manages storage for a collection of scalars 16:41
so it's lvalue; list is rvalue
so the list class would not support destructive updates; arrays handle that part 16:43
in my mind lists only has read interface, and arrays handles push/pop/splice/etc by managing some data structure in memory that may be much more complex than a list, but you can tell it to yield a list using something like FETCHALL 16:44
fglock my thought is that a read-only Array could be used in place of List 16:45
Juerd autrijus: luqui explained to me yesterday that some people, including Larry, use the term "List" to mean what he describes as Tuple. 16:46
autrijus: This is obviously not the same thing as what we call the things in li^H^Hslurpy context
I think it's important to get terminology in stone soon :) 16:47
It's hard to cooperate if we use different words for the same things...
autrijus fglock: that's like saying using a read-only scalar in place of value
Juerd And same words for diffgerent things.
s/ffg/ff/ 16:48
fglock for example, in a parameter list: ($a,$b) - $a is Scalar, $b is Scalar, @_ is Array - the "List" is an implementation detail
autrijus Juerd: indeed. 16:50
fglock I'm trying to write down some definitions - I've read some discussions in the mail lists, but I don't have a conclusion yet 16:51
autrijus fglock: in my mind, when you write (1,2), it constructs a List object, not a readonly Array object 16:52
Juerd In my mind, List objects *do not exist*. 16:53
And parens have nothing to do with lists.
autrijus that last part I agree. infix:<,> however has everything to do with lists.
fglock how is the List API different from r/o Array? (except that Array can be bound and tied) 16:54
autrijus Juerd: so, List objects do not exist... how would you explain that (1,2)[0] is okay but (1,2).push(3) is not?
fglock autrijus: because it is r/o? 16:55
autrijus fglock: I'd argue Array API is taking List API and adding destructive update routines
also, I recall that Lists are single dimensional 16:57
and arrays may have 2+ dimensionality
but as you said... we can treat all lists as "constant Array", or as something that only exists interimly at implementation level -- whenever you try to use it as an object, it gets promoted to an Array first 16:59
I'd like to make the distinction only because:
it makes it easier to subclass List 17:00
without thinking about the destructive update part of Array
but this may be a weak reason. 17:01
(am I making some sense?) 17:03
fglock I've been thinking of making Array just define the API, and let "Eager" and "Lazy" roles define the implementation. One could define other implementations. So if you want to make an implementation that fails() on push/pop you can.
autrijus but I'd like .push/.pop to be compile time error 17:04
it makes little sense to make the runtime error. 17:05
$ perl -ce '(1,2)=3'
Can't modify constant item in list assignment at -e line 1, at EOF
-e had compilation errors.
fglock yes, this makes sense 17:06
but then, you still don't need List in the runtime - only at compile/optimization phases - after that, you can treat everything as Array 17:08
autrijus so then it makes sense to make what (1,2) produced to not be Array-but-fail-on-pop, but something else that does not have .pop altogether.
well -- if we have List, you can use it in signatures -- for example 17:09
my List @foo; # this would be an array that only contains readonly lists
and that will change the semantic.
I'm not entirely sure it's the Right Way to go, but something to consider 17:10
fglock how do you populate this Array? if you push a List, it would push the Values instead, I think 17:12
please note I'm not against List - I'm just trying to figure things out 17:13
autrijus *nod* 17:14
thinking 17:15
I don't have a good answer, really... because ArgList conflates with List. 17:16
(brb)
fglock bbiab too 17:19
(back) 17:44
stevan is back 17:45
geoffb is bak 17:46
It's a party!
stevan hey autrijus :)
autrijus hey :)
geoffb hey all!
stevan so autrijus any thoughts on the DSL stuff? 17:47
autrijus fglock: www.ruby-doc.org/core/classes/Range.html 17:48
fglock: Range is of course just a small part of what List is
fglock: I think to push a List into @foo you'd like to do @foo.push(List.new(1,2,3)) 17:50
instead of @foo.push(1,2,3)
stevan: I think the DSL may better be a restricted set of p6
stevan autrijus: good point 17:51
right now it is the bastard love child of Perl 6 and Standard ML :) 17:52
autrijus I think p6 subsumes SML on that, and if it does not, it's borken 17:53
fglock autrijus: I think it needs to be @foo.push( \List.new(1,2,3)) - assuming List doesn't auto-dereference - because Array.push can't tell the difference between this and push(1,2,3) 17:56
autrijus fglock: it probably could, as the List.new form probably won't respond to slurpy context 17:57
on the other hand, as Juerd suggested, because a rvalue List's item number is fixed 17:58
maybe calling it a Tuple makes more sense.
(1,4..Inf,9); # might be a Tuple(Int, Range[Int], Int) 18:00
(I'm fine with calling it a Tuple to represent the fixedness of items) 18:02
and that would explain the lack of .push.
fglock right - I'm ok with that. Do we still need List? 18:04
autrijus if we call it Tuple then no, we don't need a separate List. 18:05
fglock does it need to handle argument-list attributes (named, slurpy, etc) or is this a separate thing? 18:06
autrijus I think ArgList and SigList both subclasses Tuple.
and in that sense Tuple::Argument and Tuple::Signature may be better names. not sure 18:07
but the idea is that those things are not part of vanilla tuple
fglock ok
autrijus stevan: so... I think P6P6 would actually work, as we can test the validity with an existing parser/codegen 18:13
stevan autrijus: cool
autrijus but it's past 2 and I need to sleep :)
stevan ok, I am fairly busy with $work at the moment anyway,.. so I will keep thinking and toying around 18:14
18:15 Lopo_ is now known as Lopo
autrijus k, cool. I'll keep toying around with prim objspace designs too 18:15
not quite sure when will I hit the "enough design up front" spot 18:16
stevan excellent :)
autrijus but iterative stuff without pressure-to-code actually fits my brain well
<- slowly being brainwashed by cc2e
g'nite! & 18:17
stevan nite :)
18:23 GeJ_ is now known as GeJ
gaal I'm surprised to find ~~/smartmatch.t/op2Match has so much :todo! 20:20
There's a comment in the code saying
-- XXX - need to generalise this 20:21
does anybody know what kind of generalization is in order there? there's certainly a lot of code right now, and only about a 1/4th of the features are covered...
also, eek, I only now noticed some matches are reversible and some aren't. 20:24
should some of the ~~ code be implemented in Prelude.pm? eg. Hash Hash hash keys identical match if $_.keys.sort Ā»eqĀ« $x.keys.sort 20:25
r0nny coyo 20:43
any sucesses in adding meta objects ? 20:44
gaal heya nm 20:49
nothingmuch hola 20:50
gaal hmmmm I can't pattern match against class instances in haskell? 20:56
nothingmuch: maybe you have an idea. please look at src/Pugs/Prim/Match.hs:84 20:57
the general sig is of course op2Match :: Val -> Val -> Eval Val
but I want to write the case e.g. for %h1 ~~ %h2
integral you can't pattern match against types. You pattern match against constructors
gaal I don't have a constructor here
nothingmuch gaal: i don't have pugs repo 20:58
gaal If there were no other cases, I'd do
nothingmuch my HD got corrupt in the weekend
integral Val has no constructors? o_O it would seem stupid for Val to be uninhabited
nothingmuch hadn't had a chance to restore yet
gaal you poor, poor fellow :(
integral: VHash doesn't
So I'd've wanted op2Match (VHash x, VHash y) => x -> y -> Eval Val 20:59
but of course I can't do that
because there are a million other cases for this function
nothingmuch is living w/o ghc/darcs/pugs/fun
not that i've been working on pugs lately
integral gaal: I have no idea what you think you're meaning, but the VHash type is declared by "type VHash = Map VStr Val" in Ast.Internals
umm, sorry, the type is Val, not VHash 21:00
and Vals have a VRef constructor 21:01
gaal so VRef for hashes and look from there? Iffy; the comment there says that's resolvable only at runtime? 21:02
integral umm, yeah. perl's dynamic so you don't know you've actually got a hash until runtime
gaal but %h is not a referece. 21:03
integral umm, perl6 automatically makes references of containers in item context I thought?
gaal of course I can't tell the type of $x at compile time here: $x = rand > .5 ?? %h !! @a 21:04
but I want %h ~~ %h2 to be able to do the right thing at compile time
integral %h ~~ %h2; is different from: do { my $a = %h2; %h ~~ $a } ? 21:05
of course, your op2Match isn't even called at compile time...
Juerd autrijus: (1,2).push(3) should just work, IMHO 21:06
autrijus: But I think any (,).normalmethod should warn.
gaal integral: point. Then I don't understand why S04/"Smart matching" mentions compile-time at all. 21:07
Juerd autrijus: Or die even, perhaps
TBH, more and more I think commas in scalar context should just be forbidden. 21:10
There are many features we could hang onto this syntax, and none of them is obvious or always non-surprising.
I love the array-of-aliases, but this is might just be a little too subtle.
r0nny i got a weird idea - how about supporting .net libs in perl6 21:11
Juerd For that matter, I think a simple "alias" keyword would work better, returning in list context a list of aliases, in item context an array of aliases.
r0nny: Not weird, not new, not controversial. Does this disappoint you? :)
r0nny hmm 21:12
yeah - i need to feed my brain, so i get weird, new and controversial ideas again
Juerd Sorry ;)
r0nny ;P 21:13
hmm - just need to find a way to make .net more perl6-ish 21:14
*afk* 21:15
22:10 _SamB_ is now known as SamB 22:33 lampus_ is now known as lampus 22:48 knewt__ is now known as knewt
kgftr|konobi damn... haskell.org/hawiki/Frag is just scary 23:05
integral I guess no one told the author of Frag that you can't write games in functional languages ... :-P 23:13
wilx Hey! Abuse uses Lisp for scripting the whole game. So it is not the first game that uses functional language. 23:19
SamB wilx: well, that LISP is messed up 23:20
I tried to load it in CL and it couldn't handle the comments!
wilx Heh.
SamB (of course, it would have needed plenty of things defined, but I was not about to rip the reader apart and put it together again just to try and port Abuse to use a real LISP 23:22
Shillo SamB: What do they use for comments? 23:23
SamB Shillo: well, it evidently supports one or both of C and C++ style comments 23:24
Shillo SamB: *Shriek!* 23:25
SamB: C++ style is at least easy. Search/replace // with ; 23:26
ajs_ I've always thought that comments should be required to start in column zero, begin with "#;//*" and end with "*//;#" 23:29
Shillo ajs_: Nah. They should start at column 0, and begin with ' C ' (remove quotes) 23:39
Later, folks. :) 23:40