pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | <stevan> Moose... it's the new Camel ":P | .pmc == PPI source filters!
Set by Alias_ on 16 March 2006.
00:01 stevan__ joined 00:20 amnesiac joined, nirgle left 00:45 FurnaceBoy joined 00:47 Quell joined
avar what's the best perl6/parrot way of generating a syntax tree for a given syntax? 00:51
Let's say a xml doc or a markdown doc,
i.e. what stuff is new that makes it easy to write parsers like that?
dvtoo there is a perl6 version of parse::recdescent, no? 00:57
arcady um... perl6 rules? or whatever they're called these days 01:20
01:21 mako132_ joined
avar arcady: uh, yeah, I was thinking of those too 01:22
cognominal avar, see pge in parrot 01:25
it is a parser written in parrot 01:26
buu Woo, sexy. 01:30
01:37 particle_ joined 01:41 jserv-- joined 02:10 weinig is now known as weinig|sleep 02:31 FurnaceBoy is now known as FB|afk 02:45 FurnaceBoy joined 03:22 Quell joined 03:24 Quell joined 03:25 Quell joined 03:34 frederico joined 03:37 KingDiamond joined 03:44 stevan__ is now known as stevan
svnbot6 r10102 | audreyt++ | * Pugs.Parser: Speed up things... dramatically by avoiding 03:59
r10102 | audreyt++ | recalculating optable exccessively.
audreyt (pending benchmarks)
meppl good morning audrey 04:01
audreyt yo
spinclad svn up's 04:02
TimToady shall I start a new smoke here? 04:04
audreyt that'd be cool 04:05
TimToady It's still about 3000 tests down from where it used to be...
audreyt yup
that's known and will be taken care of :)
(but brb) 04:06
TimToady I've got my snapshot with just that difference, so comparison to my previous smoke should be somewhat meaningful. 04:07
buu audreyt: 'sped' =]
meppl gute nacht 04:26
TimToady night. 04:29
meppl ;)
audreyt buu: English (tense, plurality) ne my forte :) 04:33
TimToady looking at a few of the tests, does seem faster. 04:34
sanity tap went from 33 seconds to 25 seconds. 04:35
previous one, "live" went from 17 to 13 seconds.
so I'm guessin' it might actually run less than 2 hours this time. 04:36
audreyt yay. 04:39
TimToady actually, it was getprint and live, no tap
but still.
and seems to be passing the same tests...
audreyt but this change breaks one assumption 04:40
sub infix:<moose> { 1 moose 2 }
previously we install moose into infix as soon as we see the sig
now it's only done after the body
our &infix:<moose>;
BEGIN { &infix:<moose> := { ... } }
is the correct desugaring once we get declarators for real
so after-the-body is fine, as it will be desugared into two things 04:41
and the infix table is repopulated after the "our" thing
so, "it'll be fine again soon"
04:56 elmex joined
arcady pugs takes about 12 and a half minutes to build here 04:58
parrot takes just under 2 minutes
TimToady Haskell thinks harder than gcc... 04:59
arcady this is true
spinclad thinks more, for sure; harder, likely 05:00
'think smarter, not harder' 05:02
svnbot6 r10103 | audreyt++ | * Lexer/Parser: drop all mention of tryRule and tryChoice;
r10103 | audreyt++ | next step is to take out all the unneccessary explicit "try".
TimToady "do, or do not. there is no try..." 05:04
arcady so true... 05:07
audreyt so in 05:10
f / g
if &f is nullary or known type
then it's division
if not, it's rx quoting
right?
("known type" = ::f) 05:11
spinclad .oO{ if the known type doesn't Regex } 05:12
audreyt mrr?
no, I mean where "f" stands for type literal
like Int
arcady ruby seems to disallow the regex quoting interpretation 05:13
spinclad so generic in its argument ?
TimToady though what it would mean to divide a type, I'm not sure... 05:14
spinclad well in ring theory we used to calculate with Z/2... Z ~~ Int ... 05:15
TimToady seems to me I just saw plenty of Unicode operators for that sort of thing... 05:16
spinclad right, for when double-striking just isn't good enough
oh, for the / ? no, we just used the vanilla / operator (in chalk) 05:17
TimToady there are several of those vanilla /'s too...
āˆ• 2215 DIVISION SLASH 05:18
spinclad well yeah, there's several of pretty much everything...
TimToady ā„ 2044 FRACTION SLASH
ļ¼ FF0F FULLWIDTH SOLIDUS 05:19
spinclad but this was even before TeX, we weren't making all those distinctions ... just making up new kinds of arrows all the time
TimToady ooh, don't get me started on arrows... 05:20
I've been trying to figure out what => and ==> map to...
FurnaceBoy how about => and ==> :-) /* sometimes ASCII is best */ 05:21
spinclad follow haskell and just kern them together ? (look, new symbols! overlap is kewl!) 05:22
FurnaceBoy APL 05:23
pioneered the creative doublestrike
TimToady don't need no stinkin' kernin'...
FurnaceBoy apostrophes go with everything :)
TimToady quads R us
spinclad linguists didn't do so badly either 05:24
TimToady heh, heh...
spinclad ... 'make' tends to take about 3 hours here. i may not stay up that long. tests run about 11 hours and tend to make my system very sluggish. 05:28
TimToady well, I'm up to rules now, and that's for a smoke 05:29
obra gave me a nice machine.
obra++
audreyt obra++ 05:30
spinclad obra++ but i'd like one too
audreyt spinclad: apply for SoC? 05:31
spinclad not a student... only unemployed
TimToady Maybe if you resolder the motherboard on your old machine six times obra will get you one too.
spinclad i could try soldering in some more memory and see if it passes smoke tests 05:32
audreyt or you can use feather...
obra spinclad: invent a language that's the core of my business ;) 05:33
spinclad true... but i *like* to play locally 05:34
obra TimToady++ # putting the machine to good use
TimToady just trying to burn it in... :)
obra Oh. That reminds me. I should hassle the vendor about the warranty package again.
TimToady yeah, I think the microphone went dead in it. not a big deal, but still. 05:35
audreyt $job &
TimToady bye
spinclad see you soon
obra indeed. 05:36
Sent 05:37
This reminds me that I should hassle panasonic about my toughbook 05:38
also, that i should go to bed, about an hour ago
'night, all
TimToady g'night
spinclad night night, sweet dreams 05:39
FurnaceBoy it has a built-in microphone... it's a Mac?? :)
TimToady no, thinkpad 05:40
arcady whoa, those have built in microphones? 05:41
TimToady mike input (both internal mike and external) now just hiss at me.
so I think it's slightly upstream of the mike itself.
was feeding line-level in, which it's supposed to be able to handle, but apparently it couldn't. 05:42
05:42 cfkklwww joined
TimToady well, mine does... 05:43
It's a T43
but then, it doesn't have a Windows button. I feel so deprived... 05:45
FurnaceBoy sniggers
FurnaceBoy goes hunting for one on his Apple keyboards 05:46
TimToady Though why a Chinese computer has an "Access IBM" button on it is beyond me...
arcady it's still from IBM times, I think
06:08 cfkklwww left
scw TimToady: Thanks for pointing out :) I found I made the mistake in the bed last night but almost forget it when reaching computer 06:12
TimToady np 06:13
audreyt: your one change reduced my smoke time from 133.48 min to 121.53 min. Exact same number of tests passed. 06:15
So, say, about 9% less time.
just reduce it by 12 minutes a few more times and pugs will finish running before it starts... :) 06:16
scw TimToady: That'll need a time machine, but you don't have one
only I have used one :p
TimToady you have one for sale?
arcady unfortunately mine seems to be stuck at a setting of one second per second 06:18
TimToady positive or negative?
06:19 Quell joined
arcady imaginary 06:20
spinclad for fine tuning of time rate, displace it upward or downward in your local field of acceleration
TimToady now that's what I call a general solution...
spinclad mine here is set to about one light-year per year per year 06:21
so move it one light-year downward to reduce its observed rate to zero
TimToady I keep trying to measure a light-year to see if it changes but my meter always seems to be the same length proportionally for some reason. 06:22
spinclad farther for negative rates (though unobservable)
06:24 bsb joined
TimToady we know where you are... 06:25
spinclad one light-year above an event horizon?
TimToady I suspect I've been closer than that to an event horizon. Albeit, a temp one. 06:26
FurnaceBoy around here we call it "bedtime" 06:27
it's like Douglas Adams' lunchtime, but it's dark
TimToady a pajama'd singularity...
FurnaceBoy yes, but I'm not lookin' 06:28
spinclad his teatime though was dark
TimToady a state mainly defined by entropy....
gaal I once had a laptop with speakers and mic set up so that if they were both on I could wave my hands over the keyboard and it would produce an eerie sound from the feedback
spooked a few people that way :) 06:29
FurnaceBoy you're spooking me right now
TimToady you have this thing about waving, don't you...
gaal yeah, I'd really love to meet particle in yapc 06:30
TimToady could be a rather simplie Feynmann diagram... 06:31
*simple
gaal the glue (== Perl) bringing us together 06:32
ah, the drama of elementary physics
TimToady Audrey is charming, and I'm strange... 06:33
FurnaceBoy seems to be the consensus 06:34
gaal and nothingmuch has the Mus on
TimToady Well, at the moment I'm up, but I should be down.
FurnaceBoy amen to that... 06:35
gaal how does this bit of patch still typecheck? 06:36
-literalRule name action = (<?> name) $ postSpace $ action
+literalRule name = (<?> name) . postSpace
the signature hasn't changed, it's
literalRule :: String -> RuleParser a -> RuleParser a
spinclad seems to me the second $ is redundant ... 06:37
TimToady I don't believe Haskell is strongly typed in this timeline... 06:38
gaal never moose that, that line used to work
there seems to be an arity mismatch?
spinclad if you apply literalRule name to an action, either version will apply postSpace to the action and (<?> name) to the result.
06:39 xern joined
gaal but look at the sig 06:39
the sig didn't change in the patch
so this can't autocurry
spinclad true, same sig, *by* autocurry. 06:40
literalRule :: String -> RuleParser a -> RuleParser a <more>
literalRule name :: RuleParser a -> RuleParser a
and if you apply that to action, literalRule name action :: RuleParser a 06:41
gaal oh of course
sorry, a case of Morning Dumbness
spinclad haskell shock
it's very common 06:42
gaal I think the thing that was confusing me was that when you write declaratively and have several decs, they must all have the same arity
so you can't refactor one to be pointsfree without changing the others 06:43
aaagh! on my machine, audrey's recent commits seem to considerably slow down parsing! 06:44
ah oops, no no
sorry, I had unoptimized this time
silly me.
now *that* is less excusable morning dumbness :)
audreyt: so, when you're around, I'd like to discuss the name and pos states 06:56
07:00 iblechbot joined 07:01 Ymmv joined
gaal so, yeah, I see about a 10% speedup 07:08
audreyt++
07:12 marmic joined 07:30 scook0 joined 07:34 Aankhen`` joined, Cryptic_K joined 07:36 drrho joined 07:45 elmex joined 07:56 macroron joined
svnbot6 r10104 | Darren_Duncan++ | ext/Relation/ : simplified the Relation class to remove any type/class distinctions on tuple attributes, so values can be of mixed types by default, like other Perl 6 composite types ; also clarified that Relation objects are immutable (like Set objects) 07:56
r10103 | audreyt++ | * Lexer/Parser: drop all mention of tryRule and tryChoice;
r10103 | audreyt++ | next step is to take out all the unneccessary explicit "try".
gaal audreyt: moose? 07:57
xinming audreyt: Is it easy to convert PIL to PIR? :-) 08:09
08:25 wilx`` joined 08:29 kane_ joined
audreyt xinming: ./pugs -CPIR -e 'say 1' 08:51
gaal: moose
xinming audreyt: why I ask is about self-hosting perl 6. :-) 08:53
audreyt xinming: I know, and that's why I did that PIR codegen as well :) 08:54
xinming audreyt++
hm, May I ask how much is finished about self-hosting progress?
audreyt sure. in short: not much. 08:56
08:56 ghenry joined
audreyt currently only some builtin functions is in perl 6 08:56
scw's recent work will hopefully bring the parser part to perl6.
beyond that, it's all still in PIR/Perl5/Haskell.
end of report :)
scw I couldn't have Pugs::Compiler::Rule accept 'rule Parameters { <Expr> [ , <Parameters> ] * }' any idea? 08:57
audreyt []* instead of [] * ? 08:58
not sure if it matters
scw I means, *Parameters = Pugs::Compiler::Rule->compile(' <Expr> [ , <Parameters> ] * ')->code
audreyt fglock: ping?
08:58 KingDiamond joined
scw doesn't work either 08:59
audreyt: I think he usually appears three hours later :)
audreyt ok... hm 09:02
check in the code? 09:03
so I can duplicate the error here
scw audreyt: I have now a testing grammar file, using misc/pX/Common/Pugs-Compiler-Rule/compile_p6rule.pl 09:04
it can be compiled to a perl 5 module
audreyt cool 09:05
scw the line above I gave (*Parameters = blah blah) cause the error
audreyt try drop the space after ]
]*
scw I did
audreyt hm 09:06
did you define Expr?
hm 09:07
escape the comma, I think
\,
scw Expr is defined later, but I've tried to replace it with something defined earlier
audreyt seems silly, but I think it could be the problem
scw Ya, it's the problem :(
audreyt ow. :(
leave a comment saying that? 09:08
fglock: why does , has to be escaped in rules?
pasteling "gaal" at 192.115.25.249 pasted "mutator attempts" (11 lines, 359B) at sial.org/pbot/16943
audreyt (brb)
gaal ahhh, actually the signature does make sense doesn't it. someRule = captureNamed "moose" $ realRule 09:11
so, is something like what withRuleConditional does appropriate? 09:14
audreyt back 09:17
yes
makes ~perfect sense
in fact
capturePositioned can take another form that just captures into the "next" pos 09:18
but for now, explicit numbering may be fine
gaal um, I was assuming a Pugs.AST.Pos 09:19
not good?
maybe a little background will help :)
audreyt here Pos is actually just Int
gaal how is this going to be used?
audreyt yeah :)
ok 09:20
currently RuleParser a
is just
CharParser RuleState a
right?
gaal yes
audreyt but I'd like to make
CharParser RuleState (Match a)
in the future
(bbiab again... in midst of $meeting)
gaal k
ingy audreyt: let's live in Porland for the summer 09:24
Haskell conference in Sept
Portland 09:25
ingy is looking for a place in Portland for the summer
gaal Come live with me and be my Love / And we will all the pleasures prove / That hills and valleys, dale and field, / And all the craggy mountains yield.
ingy zep? 09:26
audreyt ingy: my visa goes to Jul15
gaal haha, no, Christopher Marlowe actually :)
audreyt trying ot get it extended
gaal: so, (Mathc a)
gaal y
audreyt has matchResult :: a 09:27
matchPos :: [forall b. Typeable b => Match b] 09:29
matchNam :: Map Str (forall c. Typeable c => Match c)
matchBegin :: SourcePos
matchEnd :: SourcePos
ingy audreyt: is that hard to extend? and are you going to the Haskell conference?
audreyt ingy: I didn't plan to go there 09:30
I don't know how hard it is to extend
ingy just think... OSCON
audreyt I'll fidn out soon
gaal audreyt: I don't see these fuinctions...?
ingy we could probably rent a good place cheaply
audreyt gaal: er, sorry
data Match a = Typeable a => MkMatch
{ matchResult :: a 09:31
, matchPos :: ...
, ...
}
gaal where? I have MatchRule in Rule.hs
audreyt I mean, to add it to Pugs.Parser.Types 09:32
gaal ahhh
okay :)
audreyt Text.Parser.Rule is old prototype
but the idea is same
namely instead of just returning "a"
we now return a complete Match object
describing how "a" was matched
its subparts
as well as the begin and end moose
and write a "match" combinator 09:33
moose <- match ruleMoose
match :: CharParser RuleState (Match a) -> CharParser RuleState a
that just retrieves the result object, if we want to discard the submatches 09:34
that will be the bridge between parsec-world and p6rules-world
gaal okay (I think), except that I don't grok those sexy types yet 09:35
audreyt you can ignore sexy types
and use Dynamic
for now
it means the same thing
sexy types just means less boxing 09:36
but Dynamic will do fine
(Data.Dynamic)
gaal okay
so, I was about to do 09:37
audreyt (it's for scw's emitter)
gaal sorry, pasting:
captureNamed newState p = do
prev <- gets ruleName
modify $ \state -> state{ ruleName = newState }
rv <- rule
modify $ \state -> state{ ruleName = prev }
return rv
but shouln't that be easily higer-ordered?
09:38 KingDiamond joined
audreyt you can refactor them into withRuleName 09:38
but it amounts to the same thing
so don't bother to higher-order that, I think
gaal capturePositioned and captureNamed have like, the same body except for the field 09:39
but not sure you can type the constructor polymorphically
never mind 09:40
audreyt haskell's record system really sucks...
we can use OO-records 09:41
hacked in by yours truly
but that'd require 6.6 ;)
gaal sure :)
hey at least we won't need to rm Syck.o
audreyt 6.4.2 still requires that?
I thought the new cabal means that's not needed
oh, that's what you are saying :)
gaal I was kidding actually 09:42
I haven't tested yet.
audreyt neither have I
meeting over, yay
--> home, back in 40min
gaal don't think 6.4.2 in debian yet
see ya
audreyt neither ports; I built it by hand
only took 2hr here
&
gaal that's not bad! I remember kernel compiles used to take that long, back in the day when I botherd with those 09:43
bbiab also & 09:44
09:46 cdpruden joined 10:01 b00t joined 10:05 KingDiamond joined 10:12 xinming_a1200 joined 10:13 reZo joined 10:18 xinming_a1200 joined 10:19 xinming_a1200 joined 10:20 iblechbot joined 10:27 Aragone is now known as Arathorn 10:28 Odin-LAP joined
svnbot6 r10105 | audreyt++ | * Pugs.Parser: Took out most of the "try"s. 11:13
r10105 | audreyt++ | Also, rx_ macros are now retired; since Parsec is going to
r10105 | audreyt++ | be a rules engine, Perl6-level rules shuffling is perhaps
r10105 | audreyt++ | better done in a separate level.
audreyt should be another 20% or so faster now 11:14
more optimizations to come...
xinming audreyt++ 11:23
11:27 jsiracusa joined
szbalint yay 11:41
audreyt another 10% or so coming... 11:42
svnbot6 r10106 | gaal++ | * Parser: captureNamed and capturePositioned combinators, to 11:49
r10106 | gaal++ | be refactored later with a Match type.
11:53 reZo joined 11:59 FurnaceBoy joined 12:04 trym joined 12:07 kolibrie joined
audreyt Data.ByteString++ 12:16
# new and improved FPS
with more scarily-fast bits
audreyt is benchmarking Syck performance
theorbtwo wonders what a ByteString has to do with first person shooters. 12:20
audreyt FPS == FastPackedString
gaal "Hmm. Worse than [Char]. Unfortunately, this is not uncommon with Data.PackedString."
# haskell.org/haskellwiki/Wc 12:21
eep
audreyt PackedString is so bad
it's why FastPackedString was born
gaal ahhhhh, I didn't see there was no Fast there :) that didn't make sense
12:22 xinming joined
gaal so what's the difference between FPS and BS? 12:22
audreyt in particular, I learned that there is a faster way to write unsafePerformIO
inlinePerformIO (IO m) = case m realWorld# of (# _, r #) -> r
gaal as opposed to...? 12:23
audreyt which is really sick... this maximizes inlining
gaal needs to go
ach, back tomorrow morning 12:24
bye
theorbtwo Bye.
audreyt bye
theorbtwo Have a nice wahtever.
audreyt gaal: it's the same definition, but in userland, with explicit {-#INLINE#-}
gaal will, thanks (game night)
theorbtwo Ah, nice.
xinming pugs++, It works faster 30% times than before... :-) 12:29
theorbtwo Wow!
Just from the inlinePerformIO change?
audreyt no, I havn't committed that change yet! :) 12:30
theorbtwo Ah.
xinming theorbtwo: I don't know, I just tested `for %*ENV.kv -> $k, $v { "{ $k } --> { $v } <br />".say; }`
audreyt (it's from earlier "there's no try" changes)
theorbtwo There is no try! There is only do {...}. 12:31
audreyt i.e. eliminate backtracking
do {...}, or do {not ...}. !exists &try
xinming theorbtwo: It ever used 4 seconds here, but now, It takes about 2.5 ~ 2.8.
audreyt just wait, there's more... :) 12:32
12:33 avarab joined 12:36 chris2 joined
meppl guten morgen 12:37
12:38 Ymmv joined
audreyt hi meppl 12:44
meppl y0 12:45
audreyt so, I upgraded to new bytestring 12:48
time ./pugs t/01-sanity/02-counter.t 12:49
before:
real 0m1.903s
user 0m1.427s
after:
real 0m0.807s
user 0m0.617s
that's... 50%?
FurnaceBoy you cheated! you put two hamsters in the wheel!
audreyt rofl
xinming real 0m2.088s 12:50
user 0m2.024s
sys 0m0.020s
time ./pugs t/01-sanity/02-counter.t <--- result of this.... 12:51
audreyt good. expect it to become <1sec in your computer
committing
xinming `svk pull`ing 12:52
FurnaceBoy <anakin> NOOOOooooooo....... </anakin>
xinming real 0m1.118s 12:53
user 0m1.068s
sys 0m0.012s
the same command, but with my CPU full speed running... :-) 12:54
audreyt you have a pretty good computer :)
ok, r10110 landed
try to see if it gets faster?
xinming audreyt: It's the same model as the one you suggested me, I mean the CPU, 12:55
svnbot6 r10107 | audreyt++ | * Data.FastPackedString is now gone.
r10107 | audreyt++ | * Date.ByteString joins us at third-party/.
r10107 | audreyt++ | * Pugs is now 2x faster on startup!
audreyt oh, cool 12:56
try r10107...
12:58 cdpruden joined
xinming Build configuration: 12:58
ghc_heap_size => 12:59
inline_prelude_source => 0
install_dir =>
optimization => -O
precompile_modules => []
precompile_prelude => 1
smoke_concurrent => 1
smoke_upload => 0
Setup: Line 24: Parse of field 'hs-source-dir' failed
Build failed: 256 at util/build_pugs.pl line 96.
make: *** [pugs] Error 2
???
12:59 rgs joined
audreyt xinming: try r10108 12:59
xinming after I updated, I only use make, I get an error, So, I tried make clean, then generate the Makefile again, But now, It tells me this
audreyt: Ok
Build configuration: 13:01
ghc_heap_size =>
inline_prelude_source => 0
install_dir =>
optimization => -O
precompile_modules => []
precompile_prelude => 1
smoke_concurrent => 1
svnbot6 r10108 | audreyt++ | * Pugs.cabal.in: switch to hs-source-dirs
xinming smoke_upload => 0
Setup: Line 24: Unknown field 'hs-source-dirs' 13:02
Build failed: 256 at util/build_pugs.pl line 96.
make: *** [pugs] Error 2
clkao gets the same error
audreyt mmm
xinming Glasgow Haskell Compiler, Version 6.4.1, for Haskell 98, compiled by GHC version 6.4.1 13:03
:-)
audreyt ok. sec 13:04
clkao ghc-pkg: cannot find package plugins
ld: Undefined symbols:
_rl_catch_sigwinch
during makefile.pl
audreyt that's fine
we hit cabal bugs :/
xinming: are you on win32?
clkao to the cabal
this is darwin
xinming I am in Linux 13:05
audreyt ok, I know how to fix. gimme a sec
xinming audreyt++
13:08 jsiracusa joined
audreyt try now 13:08
ibetter? 13:10
clkao Preprocessing library Pugs-6.2.11...
Syck.hsc:3:34: ../../cbits/fpstring.h: No such file or directory
Setup: got error code while preprocessing: Data.Yaml.Syck
svnbot6 r10109 | audreyt++ | * work around sad cabal bug by adding symlinks.
r10109 | audreyt++ | (this breaks win32, so I'll check in a better fix.)
xinming Preprocessing library Pugs-6.2.11... 13:11
Syck.hsc:3:34: ../../cbits/fpstring.h: No such file or directory
Setup: got error code while preprocessing: Data.Yaml.Syck
Build failed: 256 at util/build_pugs.pl line 96.
make: *** [pugs] Error 2
audreyt ok, fixed
r10110
clkao you want to symlink the whole directory maybe
svnbot6 r10110 | audreyt++ | * relocate cbits.
audreyt no, I don't really want symlinks 13:12
nonportabl
what I need is either to bundle Cabal 1.1.4 (bad idea)
require everyone use GHC 6.4.2 (bad idea)
clkao pulling things into src
audreyt or just cp -Rf if Cabal version too low
the probelm is GHC642/Cabal114 supports multiple source dirs 13:13
but GHC641/Cabal100 does not
xinming audreyt: I use gentoo, So, compilation isn't a problem... :-P It's handled well by portage... :-)
clkao single-minded cabal
xinming hmm, for now, no ghc-6.4.2 in portage... :-( 13:15
audreyt: make them sym-link might make windows guy unhappy. :-) 13:19
13:19 multic joined
FurnaceBoy maybe they'll get the hint 13:19
13:20 Daveman joined
xinming real 0m1.150s 13:21
user 0m0.996s
sys 0m0.020s
This is in powersave mode... :-)
real 0m0.494s 13:22
user 0m0.456s
sys 0m0.020s
<==== Performance mode.
audreyt so, really 2x faster :) 13:23
xinming yes... :-P 13:24
audreyt: will there be more hack on speed?
13:29 audreyt_ joined
audreyt_ somehow taiwan<->feather connection is broken 13:29
a certain ISP called "hinet" is having broken router and broken DNS :/
xinming: yes, I've a few other commits. a sc 13:30
sec
xinming audreyt: hmm, Could you please guess about when the self-hosted perl 6 be out? 13:31
ok
13:31 qmole joined
audreyt_ I can guess, but my guess will be wrong 13:31
clkao and once you spent the time doing the guess, it gets later 13:32
xinming It's Ok to be wrong, Just tell me your guess... ;-) 13:33
clkao: the guessing is only cost about at most 5 minutes...
audreyt_ I guess a self-hosting perl 6 will be released by christmas 13:35
there is a strong indication that it will be scheduled to be released by christmas.
(just to agree with previous prophesies) 13:36
xinming So, If Larry wish to release the official one in 20th birthday of perl 6.. Is that mean, we only have one year to writing other modules and docs etc??? 13:37
>_<
I mean after the perl 6 bootstrapped. 13:38
s/Is that mean/Does that mean/
audreyt_ another 6% coming 13:39
13:39 Qiang joined
xinming hmm, Ok, thanks anyway, There is one truth between "self-hosting perl 6 in Christmas" and "official perl 6 release in 20th birthday of perl", which one is more likely to choose? This answer is left for Larry. :-) 13:40
svnbot6 r10111 | audreyt++ | * Pugs.Parser.Operator.ops: shave another 6% by using a
r10111 | audreyt++ | Schwartzian transform that limits user-defined function
r10111 | audreyt++ | names to be at most 64k long.
13:41 multic left, elmex joined
audreyt_ also note we never say which Christmas. 13:42
xinming >_<
well, the next year is perl 6's 20th birthday.
So, I don't think Larry will choose perl's 30th birthday... 13:43
hmm, BTW, I mean perl's 20th birthday, not perl 6's... :/
FurnaceBoy belongs in topic -> "<audreyt_>also note we never say which Christmas." 13:44
audreyt_ FurnaceBoy: it's a FAQ with a FAA 13:50
13:55 weinig|sleep is now known as weinig
clkao clkao:~/work/pugs clkao$ time ./pugs -e1 14:06
real 0m1.335s
clkao:~/work/pugs clkao$ time svk version
real 0m0.506s
clkao would love to see pugs being just as slow as svk ;)
FurnaceBoy well, that round trips to server, right? 14:08
round the world, twice, is at least 400ms ... or 80% of that time
what's the 'user' time on that? 14:09
clkao 1.0 and 0.35
FurnaceBoy you're on a dual processor?
particle_ xinming: please say it's perl's birthday, but never say which birthday :)
clkao no
FurnaceBoy how can user be > real on a single cpu?
clkao how is 1.0 > 1.3 ? 14:10
FurnaceBoy sorry, I'm talking about your svk timing
clkao that's 0.35 > 0.5 ;)
FurnaceBoy erm.
14:14 vel joined 14:15 DaGo joined 14:25 lichtkind joined
audreyt another... oh, 10% arriving soon. 14:25
xinming ... 14:29
14:30 hexmode joined 14:33 justatheory joined 14:38 fglock joined, Ymmv joined
gaal heh, best log message ever in r10111 :) 14:41
<- not here, really
audreyt :D
I can up the limit to 2**31... 14:42
gaal not useful unless someone forsees encoding programs in function names... 14:43
audreyt yeah
actually, the limit is 1114111
gaal interesting limit. 14:44
audreyt it's maxunicode.
gaal I think it's prime.
audreyt it's 10ffff. 14:45
gaal I know it's a palindrome in base 10 :)
audreyt for someone who is really not here, you make some acute observations :)
gaal hmm? why is that maxunicode?
audreyt cuz it's specced as such?
gaal huh v1.1: why would that be specced to be maxunicode? 14:46
audreyt: sure, this is the other side of what they call "absent mindedness"
FurnaceBoy disgorges rationale on demand
audreyt heh 14:47
I imagine it's to make surrogates possible.
or to make utf8 max 4 bytes.
or both.
gaal isn't surrogates a representation thing? 14:48
audreyt surrogates makes use of two U16 to represent a U32 14:49
but obviously if you have the max U32
all allocated
then surrogates doesn't work
gaal or need to be longer. gotcha.
audreyt :) 14:50
gaal oh, I never realized till now that utf8 in the highest range looks like surrogate utf-16 14:51
wikipedia++
kolibrie Juerd: (OT) do I want LVM (Debian install)? 14:52
fglock audreyt: backlogged to a ping a few hours ago
gaal aways again
fglock <Expr> [ , <Parameters> ] * - may need \, because there is no rule to parse a comma yet
audreyt fglock: oh. "," is unrecognized in PCR
k 14:53
fglock: btw, SoC proposal looks very nice, I can't think of any thing to add
fglock I wonder if it could be clearer - looks like something simple but explained in too many words :)
thanks! 14:54
audreyt I applied as a mentor to SoC 14:57
not sure if TPF will list me as mentor, though.
fglock cool! 15:00
how about setting up a new 2-month target for pX/Common? some people love challenge 15:02
something reasonably unreasonable 15:03
obra audreyt: why wouldn't they?
15:20 jserv-- joined
svnbot6 r10112 | fglock++ | Pugs-Compiler-Rule - comma is not a special char 15:26
15:26 aufrank joined
aufrank hello! 15:26
audreyt aufrank: yo 15:34
15:37 amnesiac joined 15:41 hexmode joined
audreyt ?eval 1..100 15:44
evalbot_10082 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
audreyt praises a faster evalbot
xinming ?eval 1..100 15:49
evalbot_10082 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
svnbot6 r10113 | audreyt++ | * Pugs.Types.findList dominates a typical profile;
r10113 | audreyt++ | attempt to fix it by memoizing the original result using
r10113 | audreyt++ | initCache, and change the representation to a "Buf"
xinming Not that slow... :-)
svnbot6 r10113 | audreyt++ | (i.e. Data.ByteString.ByteString.)
r10113 | audreyt++ | * Update all our tools to deal with ByteStrings.
r10114 | fglock++ | Pugs-Compiler-Rule - grammar cleanup
nothingmuch audreyt: ping? 15:51
audreyt pong 15:53
nothingmuch see my question about hackathonian iternary
audreyt got it 15:54
Juerd kolibrie: That depends. 15:56
kolibrie: In most cases, I don't. But if a main function of the box is data storage, and you want to add more space later, LVM is a very useful thing. 15:57
audreyt benchmark shows r10113 is a 16% gain
Juerd kolibrie: I wouldn't use LVM for my / or /boot, though
aufrank r10113++ 15:58
svnbot6 r10115 | audreyt++ | * retire .yml.gz support (for now) as ByteString has no native 16:05
r10115 | audreyt++ | zlib support, and also I'd like to use mmap.
kolibrie Juerd: okay. I think I'll skip it for this install. Not a data storage box 16:10
svnbot6 r10116 | scw++ | Pugs::Grammar::MiniPerl6 16:17
r10116 | scw++ | * MiniPerl6 language construction described
r10116 | scw++ | * basic grammar added
r10116 | scw++ | * parsing sample added
16:23 lisppaste3 joined
xinming ($scw, $audreyt, $fglock)>>. .++; 16:28
Arathorn can't you do >>++? 16:32
or are they a tuple of objects which you're applying the ++ method to? 16:33
xinming Arathorn: yes, we can, But the fact is, I ever wrote ($scw, ... )>> .++; But I realized long dot should be used... 16:34
Arathorn: hmm, hold on please...
Arathorn: hmm, sorry, my example might be wrong, as I can't test this in pugs, 16:35
?eval my ($a,$b,$c) = 1,2,3; my @l = $a,$b,$c; @l>>++
evalbot_10082 Error: Can't modify constant item: VInt 1
audreyt the listop= isn't implemented 16:36
?eval my ($a,$b,$c) = (1,2,3); my @l = ($a, $b, $c); @l>>++ 16:37
evalbot_10082 Error: Can't modify constant item: VInt 1
xinming audreyt: so, my `($scw, $audreyt, $fglock)>>. .++;` is right.
audreyt hm
I think it should be right, yes
the hyper form currently assumes rvalue
that's wrong
xinming by the way, can we say PIR a language? 16:39
audreyt sure
xinming for perl 6 can be self-hosting, 5 languages are used. :-P We can make it in <<Guinness World Records>> 16:40
audreyt heh :) 16:42
it's very perlish :)
xinming GHC $pugs ==> Perl5 $MiniPerl ==> PIL $perl6 ==> PIR ==> Perl6 $rules 16:45
16:47 manbou joined
svnbot6 r10117 | audreyt++ | * Pugs.Parser.Operator: Further speed up "ops" by avoiding 16:53
r10117 | audreyt++ | repeated words/unwords calls.
scw It's really a good thing to write a blog that someone knows -- that make me feel like there should be a post every day so I'll spend time on hacking every day 16:57
audreyt now you know the feeling... :)
scw yup! Thanks for discovering it :) 16:58
TimToady wow, smoke testing now wasting a lot less of PG&E's E...
audreyt TimToady: you running a smoke with 1011x?
TimToady 10116, I think 16:59
audreyt excellent
10117 should be within 3%
not significant
I just posted today's journal entry...
"Maybe multi-hour smoke loops will become a thing of past. Or maybe we just need more tests. :-)"
ingy hi audreyt 17:00
audreyt er, "of the past"
hi ingy
17:00 avarab joined 17:01 avar joined
audreyt tomorrow I'll take a look at new parsefails 17:02
and if all works out, then I'll see how to merge scw/gaal/fglock's current grammar hacks into one bootstrapping piece, as well as starting to implement the new Reference-free object model 17:03
but now sleep is definitely in order.
have fun :) &
TimToady g'night. --> $job myself & 17:06
scw going home, too &
svnbot6 r10118 | audreyt++ | * "use Perl-6" and "use Perl::Foo" needs a 'try' to distinguish
r10118 | audreyt++ | between version forms. Either that or we play tokenizer tricks
r10118 | audreyt++ | that allows future Audreys to do something like "use v6-pugs"
r10118 | audreyt++ | all over again...
fglock scw: ping 17:07
17:10 Limbic_Region joined
audreyt Limbic_Region: Win32 build is currently broken, because of symlinks; 17:11
if you rm -rf src/Data/ByteString and rm src/Data/ByteString.hs, and copy from third-party/fps/Data into them, the build should work 17:12
clkao fugure audreys...
future
audreyt I'd be happy if someone can rm the symlinks
and hack Makefile.PL's prereqs rule to do the cp -Rf
automatically from third-party/fps/Data to src 17:13
Limbic_Region audreyt - amazingly enough, I got pugs to compile last night
audreyt excellent
Limbic_Region so it must have happened after that
audreyt today's pugs is nearly 3x faster here
Limbic_Region I just read
audreyt in runtime speed
yeah :)
so getting it to build on win32 would be a win
but I really need to sleep now :)
Limbic_Region so when you say currently - currently as in last 14 hours?
audreyt last 5hour or so 17:14
Limbic_Region sleep well
audreyt g'nite
Limbic_Region ok - will play with it tonight (if I get a chance)
audreyt Limbic_Region++ # in advance
& 17:16
scw fglock: pong # last five minutes on computer 17:17
xinming ?eval sub mysub { my $a = shift; }; 17:19
evalbot_10082 Error: unexpected ";" expecting term
Limbic_Region ?eval sub mysub {my $a = shift; } 17:22
evalbot_10082 Error: unexpected ";" expecting term
xinming a bug,
Limbic_Region ?eval sub mysub {my $a = shift @_; }
evalbot_10082 undef
Limbic_Region yep - bug
unless of course the synopses have been changed to reflect different DWYMery
audreyt I don't think shift defaults to @_ anymore, but I may be wrong.
Limbic_Region shhhh - you're sleeping remember 17:23
audreyt oh ok.
audreyt remembers
audreyt goes back to sleep
Limbic_Region xinming - unless you can find it in one of the synopses it is a bug
it may be a documentation bug though
and pugs has the implementation right 17:24
xinming ... she might somnambulate...
Limbic_Region was assuming she was sleep talking - and I guess that falls under ambulate
xinming hmm, I'm not sure, But in fact, for your example, `sub mysub {my $a = shift @_};` is wrong anyway 17:25
because @_ is readonly alias... :-)
fglock scw: just checking if you needed any help :) 17:26
xinming so, I think @_ can't be modified. as it is a *$capture IMO
clkao i thought by default it's @_ is rw in s06/ 17:27
xinming Arguments implicitly come in via the @_ array, but they are readonly aliases to actual arguments: 17:28
copy from S06
If you need to modify the elements of @_, declare the array explicitly with the is rw trait
svnbot6 r10119 | fglock++ | Pugs-Compiler-Rule - Pugs::Grammar::Rule use base 'Pugs::Grammar::Base'; 17:31
r10119 | fglock++ | tilde is not special
TimToady shift is not modifying the elements of @_, it's modifying @_ itself.
the slurpy array defaults to rw. 17:32
as an array...
xinming TimToady: So, Is S06 wrong? 17:34
TimToady no 17:35
xinming hm, Ok, so, the @_ is rw, and the elements in @_ is ro, 17:36
TimToady yes, that's an effect of the *
xinming then, `sub mysub {my$a = shift}` doesn't work in pugs should be a bug
TimToady whether shift should default to @_ is a different question.
arguably, shift should default to whatever the slurpy array is... 17:37
if it defaults to anything,
xinming hmm, TimToady, do you think make 3 types of _ is "right"? eg, $_ @_ %_ shift defaults to shift in @_ if no arguments, and, kv defaults to %_ if no arguments 17:40
17:42 szbalint joined 17:51 froh-doh joined 17:52 gavins joined, gavins left 18:00 xerox- is now known as xerox_ 18:04 FurnaceBoy_ joined
svnbot6 r10120 | audreyt++ | * unTODO passing tests. 18:13
r10121 | audreyt++ | * Pugs.Parser: Supprot for:
r10121 | audreyt++ | @a .= map(&sqrt);
r10121 | audreyt++ | by moving (Syn ".=")'s handling to Eval. Eventually it's
r10121 | audreyt++ | going to be an AST-rewriting macro...
xinming .... 18:20
scw imagining how audrey commits code in her dream 18:21
szbalint She has that special power. The next state of the onion speech should include that. :) 18:22
theorbtwo She has mastered the inner teachings of the lamda-fu.
Also, her lips do not move in time with her words. 18:23
scw but her fingers do, I guess :p
fglock scw: I just answered your mail - I wasn't paying attention to irc :) 18:27
18:38 KingDiamond joined
scw fglock: thanks a lot. I'll tell you if I need more help :) 18:45
FurnaceBoy_ wonders where our favourite troll has got to. 18:48
scw, I was on the Subversion download pages today, they have a new port to "Human Cortex" -- that's how she does it I guess.
unfortunately it's only installable on brains of her revision level 18:49
FurnaceBoy_ needs an upgrade 18:50
19:10 dduncan joined, FurnaceBoy_ is now known as FurnaceBoy 19:11 Quell joined 19:27 js0000 joined
TimToady xinming: I think you're basically on the right track with $_ @_ %_. These are the names that are by default environmental and hence usable as CALLER::<@_>. So I think now that shift should default to @_, whether or not it is bound as a slurpy parameter. 19:28
nothingmuch since .foo defaults to $_ 19:29
does .shift default to @foo
err
@_
instead of $_
TimToady that is, shift() should default to @_, not .shift
nothingmuch due to some MMD dispatch stuff?
TimToady no .foo is always $_
nothingmuch is shift() and MMD call that takes an optional array that defaults to @_? 19:30
or is it a global?
TimToady basically .foo always rewrites to $_.foo.
it's not an MMD default.
nothingmuch is @foo.shift always equivalent to shift @foo, even if @foo overrides .shift?
19:31 ghenry joined
TimToady how would @foo override .shift? 19:31
nothingmuch by having a different impl type
e.g. ties
foreign objects
what mess
i'm guessing 'shift' is just a sub shift ( @array = @_ ) { @array.shift } in the preludre 19:32
TimToady as a single arg function they both end up SMD.
the single arg default is CALLER::<@_>, which gives a zero-arg MMD form. 19:33
nothingmuch i'm mostly curious as to whether the "functional" style is a wrapper
TimToady but .shift never calls zero-arg form, but $_.shift
nothingmuch or some magic to get the method invoked on a default invocant
with some inndirect syntax 19:34
dduncan ?eval ('foo' => 'bar')
evalbot_10082 ("foo" => "bar") 19:35
TimToady zero-arg forms could be somewhat magical in implementation/optimization given that there can only be one MMD variant with 0 args
19:35 KingDillyDilly joined
TimToady but we still distinguish a syntactically missing invocant from .shift vs a semantically missing invocant from shift(). 19:36
gotta go eat lunch (company BBQ)... & 19:37
qmole hf
KingDillyDilly FurnaceBoy: He's right here, and doesn't intend to be a regular here because of the immaturity of way too many regulars, so you can stop wondering.
dduncan ::('foo').ref 19:38
js0000 hi- i offered to help with the pod stuff when audrey called for english speakers 19:39
dduncan ?eval ::('foo').ref
evalbot_10082 ::Type
js0000 some of it seems to be done already
KingDillyDilly Yesterday, I read someone criticise the Python community for being too polite. I can accept a fault like that.
js0000 is there anyone organizing this?
particle_ js0000: this is loosely organized, and sometimes largely unorganized :) 19:40
js0000 well, i'm willing to help 19:41
i can just start hacking away at it ...
particle_ js0000: if you have a commit bit, Just Do It.
if not, just do it (and submit a patch)
then you'll get a commit bit 19:42
js0000 ok
will do
thx
19:44 DaGo joined
xinming js0000: If you want a commit bit, private message me your email address 20:03
js0000: or, maybe, You already have one. :-) 20:04
TimToady doesn't seem to be a js0000 in the AUTHORS file yet... 20:05
xinming TimToady: hmm, also, can we make _ default === self ? 20:07
and don't use .meth, use _.meth, $_ is the same as perl 5. 20:08
TimToady you mean as a bare token? probably not. There's people want to use it for _() internationalization.
On top of which $.meth is no longer, and tells you the sigilness of the thing you're trying to call. 20:09
but there's no reason you couldn't declare your _ to mean self.
xinming why I think this is because of inner consistence. 20:10
TimToady It was certainly one of the many proposals during the "self" wars...
20:11 vel joined 20:14 particle_ joined
xinming IMO, Internationalization can use q_ and qq_ form or even add an adverb to quote operator, and we can make _ === self 20:14
and I don't think self is perlish... :-) 20:15
particle_ then _._ can be the default method on self 20:18
xinming particle_: self.self can do the same... :-)
IMO, there isn't a _ use for _ yet.... :-P 20:19
s/_//;
TimToady we aren't gonna fight the self wars again. we will allow you to say "use self '_'". But _ is still being reserved (along with `) for user definitions. 20:20
js0000 xinming: i already have one 20:21
although i haven't used it [yet]
20:24 orafu joined
xinming TimToady: I don't wanna get into the self wars fight either. but for me, "use self '_'" in every class is abit like I have to use "use strict;" in every package in perl 5. 20:24
hmm, BTW, self isn't that bad though
TimToady js0000: first thing most people do is add themself to AUTHORS. it's a good confidence builder... 20:25
20:25 frederico joined
TimToady xinming: that's not in the same class at all. what you really want is a policy module "use xinming" that just sets everything you like. 20:26
20:26 larsen joined
TimToady and if you can persuade everyone else to use it, then everyone will be programming in your dialect. 20:27
on the other hand, as soon as you have that, suddenly you have to be Very Responsible. 20:28
svnbot6 r10122 | particle++ | i'm an author, too!
particle_ shirks responsibility 20:29
FurnaceBoy notes, TimToady should know
no more all night partying, a bug report might come in on the Telex. It must be like being a superhero. 20:30
Mr Incredible. Not for everybody.
xinming well, I don't like making an dialect, As you think much more than I do, I'm lazy <--- :-D
TimToady Well, me too--I just work a lot harder at being lazy than most people do. 20:31
particle_ eternally striving for mediocraty...
no, wait... that's me 20:33
TimToady are you a boson or a fermion? 20:34
particle_ i'm the most abundant particle in the universe...
the moron.
since i use so much perl, i consider myself a gluon most of the time 20:35
TimToady along with its supersymmetric partner, the lesson.
particle_ sets spin to 1
TimToady what, you're not immutable?
they just don't teach values like they used to... 20:36
particle_ i guess you're not up on "the new physics"
TimToady I just want a big enough collider to de-symmetry-break the moron/lesson brokenness... 20:37
particle_ i'm afraid that'd take up most of the space in the solar system, so nasa's not likely to fund it
TimToady "fire up the counterrotating clue beams, Scotty!" 20:38
particle_ nice 21st century update of the old "clue stick" metaphor
js0000 TimToady: i'll add myself to AUTHORS once i actually do something! 20:39
it's all hypothetical now ...
TimToady adding yourself to AUTHORS *is* doing something.
don't discount the importance of cultural hacking to Perl.
xinming thinks TimToady is "seducing" someone doing something. :-P 20:41
obra it's the standard requested first commit
js0000: It's a good way to safely test your commit pipeline
Either that, or update the VICTUALS file ;)
xinming js0000: yes, just do it...
obra: It's easy, and fun. 20:42
Kattana js0000: no, dont give in to the peer preasure
xinming js0000: did you get the invitation? 20:43
dduncan question: is there a 'not' form of === ? eg; !== ? Or do I have to say !($foo === $bar) ?
particle_ js0000: if you don't do it, we'll all point at you and laugh
dduncan I don't see a !== in S03 20:44
particle_ ?eval !123 == !456
evalbot_10082 bool::true 20:45
particle_ ?eval !123 === !456
evalbot_10082 bool::true
particle_ just having fun until pugs compiles on win32
dduncan ?eval !123
evalbot_10082 bool::false
js0000 you'll all point at me and laugh anyway 20:46
sometimes i even point at myself and laugh
but it's usually just the medication talking ...
TimToady most of Pugs is medication talking... 20:49
js0000 woo hoo! 20:50
svnbot6 r10123 | js0000++ | adding myself [even though i haven't done anything yet ...] 20:51
js0000 AUTHORS update checked in
i need a cigarette ...
and i don't even smoke
haha!
particle_ welcome to the club. now, can you top that?
js0000 no
that's the top for me
xinming welcome js0000 :-)
particle_ you'd better have that cigarette, then :)
dduncan TimToady, looking at the operator precedence table in S03, I don't see or recognize a negative version of the === operator ... is there one or can we have one? 20:52
particle_ do you really need !== and !=== ?? 20:53
Juerd particle_: !===? 20:54
dduncan I don't see either of those
I wanted a clean way to say $foo !== $bar
just as we have negative versions of == for numbers and eq for strings, and other types of equality tests 20:55
20:55 js0000 left
particle_ juerd: you haven't seen ==== yet? ;) 20:55
i got carried away
dduncan in particular, not having to say !($foo === $bar) will let me hyperize the test 20:56
if that makes sense
particle_ btw i added the xand op to parrot, any chance we'll see it in perl6?
fglock Juerd: is it possible to run a cgi in feather?
dduncan eg @ary_of_sets >>!==<< $set
particle_ xand is like xor... A and B, but not BOTH
arguably !== is more important 20:57
dduncan eg, that's a test to see if any elements of @ary_of_sets are not equal to $set
Juerd fglock: See feather.perl6.nl/ 21:03
fglock Juerd: thanks! 21:04
TimToady that would better be written all(@array_of_sets) === $set. Hyperops are not for logic. 21:08
hypers are only for parallelism with run-to-completion semantics.
particle: I like xand. It seems like a very...reliable...operator. 21:11
21:18 lisppaste3 joined
Juerd but true|false 21:21
particle_ it is quite reliable, and easy to tset
reverse that last word there 21:22
Juerd particle_: You should make more software
21:22 SamB joined
spinclad notes that evalbot_10082 is yesterday's news, and still faster than it's been lately. 21:23
theorbtwo ?eval my $t1=time; $x=[*]1..20; [$x, time-$t1]
particle_ come to think of it, __ looks like a good candidate for high-precedence xand
evalbot_10082 Error: Undeclared variable: "$x"
theorbtwo ?eval my $t1=time; my $x=[*]1..20; [$x, time-$t1] 21:24
evalbot_10082 [2432902008176640000, 5501/500000]
21:24 kanru2 joined
theorbtwo ?eval my $t1=time; my $x=[*]1..20; [$x, 0.0+time-$t1] 21:24
evalbot_10082 [2432902008176640000, 11629/1000000]
theorbtwo ?eval my $t1=time; my $x=[*]1..20; [$x, ~(time-$t1)]
evalbot_10082 [2432902008176640000, "0.017718"]
theorbtwo Looks pretty fast to me.
...if occasionally obnixious. 21:25
spinclad i think a lot of the recent sluggishness has been in the prelude or earlier, before your first time even 21:26
Juerd [cold heat]-- 21:27
spinclad re >>. .++ : aren't >>op >>op<< op<< single tokens, like [op] ? Though S03 doesn't speak in those terms, but that 'spaces are not allowed on the pointy end'. 21:29
dduncan okay, never mind my example of the hyper-operator ... I was trying to do something clever that wasn't so clever
spinclad but i suppose long dot is not strictly space...
>>. .++ ==== >>.++, which works (i think), so never mind. 21:32
(dduncan, i was answering xinming from backlog, not your example, and getting it wrong (i think) besides) 21:35
dduncan yes, my comment was a belated follow-up to Larry's reply that I shouldn't be using hypers where I was
spinclad (ah. well, ok, then.) 21:36
dduncan anyway, my new commit 10124 may be fuel for discussion, or non-discussion 21:37
my impression of Perl 6's Mapping type looks like what a "tuple" is in relation-land
svnbot6 r10124 | Darren_Duncan++ | ext/Relation/ : following examples in ext/Set/, reimplemented the Relation class as a junction of mappings (where all mappings have the same set of keys) rather than an array of hashes ... my understanding of a Mapping is what I would call a tuple, and a set of same-headered tuples is a relation
dduncan maybe I should say 'set of mappings' rather than 'junction of mappings' ... but the examples in Set.pm use junctions and I don't know how to do otherwise at the moment 21:38
21:38 ruoso joined
spinclad i would call them a set, as they have no logical operator attached 21:40
so... a map from a set of names to corresponding values. sounds good. 21:41
(as a tuple.) 21:42
dduncan yes
I had been using a Hash to represent a tuple before, but then decided a Mapping would work better
relation-land's concept of a tuple, that is, where the values have names 21:43
22:12 jsiracusa joined 22:17 dduncan left 22:40 Khisanth joined 22:55 masak left 22:59 avar joined 23:11 cjn joined 23:27 steve`` joined 23:29 PseudoPlacebo joined 23:35 macroron__ joined 23:52 larsen joined 23:55 dbrock left