Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2005-11-19

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 sapper has joined #perl6
00:19 frederico has joined #perl6
00:21 liz6 has left
00:35 frederico has quit IRC (niven.freenode.net irc.freenode.net)
00:36 frederico has joined #perl6
00:42 frederico has quit IRC (niven.freenode.net irc.freenode.net)
00:43 frederico has joined #perl6
01:03 scw has joined #perl6
01:04 Qiang has joined #perl6
01:11 penk has quit IRC (Read error: 110 (Connection timed out))
01:14 svnbot6 r7970 | Darren_Duncan++ |  r861@Darren-Duncans-Computer:  darrenduncan | 2005-11-18 12:46:27 -0800
01:14 svnbot6 r7970 | Darren_Duncan++ |  /ext/Rosetta-Incubator : added SEE ALSO to indicate dependents of 5 core modules
01:14 svnbot6 r7971 | Darren_Duncan++ |  r863@Darren-Duncans-Computer:  darrenduncan | 2005-11-18 13:23:48 -0800
01:14 svnbot6 r7971 | Darren_Duncan++ |  /ext/Rosetta-Incubator : updated LICENCE AND COPYRIGHT in Validator.pm and all 8 en.pm files to briefly refer to their core modules for details rather than verbosely reprinting them
01:14 svnbot6 r7972 | Darren_Duncan++ |  r865@Darren-Duncans-Computer:  darrenduncan | 2005-11-18 13:52:17 -0800
01:14 svnbot6 r7972 | Darren_Duncan++ |  /ext/Rosetta-Incubator : updated ACKNOWLEDGEMENTS in the same 9 files likewise
01:14 svnbot6 r7973 | Darren_Duncan++ |  r867@Darren-Duncans-Computer:  darrenduncan | 2005-11-18 17:05:59 -0800
01:15 svnbot6 r7973 | Darren_Duncan++ |  /ext/Rosetta-Incubator : in each of the 17 lib/*.pm files, split up the NAME pod into 2 lines
01:16 larsen has quit IRC ("later")
01:29 joepurl_ has quit IRC ("Lost terminal")
01:29 joepurl has joined #perl6
01:32 justatheory has joined #perl6
01:56 frederico has quit IRC ("...")
01:56 Qiang has quit IRC (Remote closed the connection)
01:57 venk has quit IRC (Read error: 104 (Connection reset by peer))
01:57 Qiang has joined #perl6
02:00 sapper has quit IRC (Read error: 104 (Connection reset by peer))
02:07 Qiang has quit IRC ("brb")
02:10 Qiang has joined #perl6
02:11 penk has joined #perl6
02:11 rafl leo: Ah, OK.
02:16 penk has quit IRC ("Download Gaim: http://gaim.sourceforge.net/")
02:40 scook0 has joined #perl6
03:22 xinming has joined #perl6
03:35 xinming has quit IRC ("I really love GNU")
03:52 xinming has joined #perl6
04:01 joepurl has quit IRC (Read error: 110 (Connection timed out))
04:25 Qiang has quit IRC ("reboot")
04:43 xinming has quit IRC (Connection timed out)
04:46 Amnesiac has quit IRC ("Leaving")
04:46 xinming has joined #perl6
04:46 xinming has quit IRC (Read error: 104 (Connection reset by peer))
04:52 xinming has joined #perl6
05:11 joepurl has joined #perl6
05:15 saorge__ has quit IRC (Connection timed out)
05:16 xern has joined #perl6
05:18 saorge__ has joined #perl6
05:30 eMac has joined #perl6
05:31 saorge_ has joined #perl6
05:34 coumbes has joined #perl6
05:47 saorge__ has quit IRC (Connection timed out)
06:08 Aankhen`` has joined #perl6
06:15 gugod_ has quit IRC (Read error: 110 (Connection timed out))
07:14 Cryptic_K has joined #perl6
07:30 lisppaste3 has quit IRC ("Want lisppaste3 in your channel? Email chandler AT unmutual.info.")
07:30 lisppaste3 has joined #perl6
07:42 justatheory has quit IRC ()
07:45 Cryptic_K has quit IRC (Client Quit)
08:20 saorge_ has quit IRC (Read error: 110 (Connection timed out))
08:22 saorge_ has joined #perl6
08:25 luqui has joined #perl6
08:31 khisanth_ has joined #perl6
08:34 khisanth__ has joined #perl6
08:36 Khisanth has quit IRC (Nick collision from services.)
08:36 khisanth__ is now known as Khisanth
08:51 khisanth_ has quit IRC (Read error: 110 (Connection timed out))
08:52 iblechbot has joined #perl6
09:14 joepurl has quit IRC (Read error: 110 (Connection timed out))
09:27 nothingmuch has joined #perl6
09:31 r0nny has joined #perl6
09:45 dduncan has quit IRC ()
10:02 saorge_ has quit IRC (Read error: 104 (Connection reset by peer))
10:05 elmex has joined #perl6
10:06 nothingmuch has quit IRC ("reboot")
10:06 larsen has joined #perl6
10:07 saorge has joined #perl6
10:23 larsen has quit IRC ("brb")
10:23 larsen has joined #perl6
10:29 elmex has quit IRC ("leaving")
10:30 nothingmuch has joined #perl6
10:43 xinming has quit IRC ("I really love GNU")
10:53 xinming has joined #perl6
10:58 pjcj has quit IRC (Read error: 110 (Connection timed out))
11:16 pjcj has joined #perl6
11:20 gaal autrijus: ping
11:30 gaal autrijus: we have dates for YAPC, finally
11:30 gaal 26-28 Feb
11:30 theorbtwo Febuary?
11:30 theorbtwo YAPC::Na?
11:31 gaal we'd like to do the hackathon 21-25 maybe?
11:31 gaal theorbtwo: YAPPC::Israel
11:31 theorbtwo Aaah
11:53 r0nny_ has joined #perl6
11:58 christopher_ has joined #perl6
11:58 christopher_ luqui: ping
12:04 luqui christopher_, pong
12:07 christopher_ I thought about things you worried about in your journal entry about a week ago.
12:07 christopher_ First thought: The only problem with making Natural do Ring is with the return type.  So, for multiple-dispatch, subtypes are okay for parameters, but not
12:07 christopher_ for return values.
12:08 luqui sure
12:09 christopher_ Are subtypes actually full-fledged classes?
12:10 luqui well, I'd like to answer you, but I'm afraid "class" is something we still haven't defined :-)
12:10 r0nny has quit IRC (Read error: 110 (Connection timed out))
12:10 christopher_ I came to the conclusion that maybe they shouldn't be.  If something was
12:10 christopher_ inherited from Integer, then it should inherit the Ring role.  But I
12:10 christopher_ don't think a subtype should.
12:10 christopher_ the first "inherited" should be "derived"
12:11 luqui yeah... um.  so if you inherit from integer
12:11 luqui you are specifying a subset of the integers, right?
12:11 luqui I mean, anything that is your derivation of integer is also an integer is a subset
12:11 luqui but the only subsets of the integers which are rings are {0} and all the integers
12:12 christopher_ No, that's what subtypes are for.  If you derive from integer, you're
12:12 christopher_ basically an integer but you represent something more special and so you
12:12 christopher_ have extra, pretty little functions attached.
12:12 luqui but what if you also have extra data attached?
12:12 luqui certainly "1" is not your special derived integer, because it doesn't have the pretty data
12:12 luqui and then your ring doesn't have a multiplicative identity :-)
12:13 christopher_ If you have extra data attached, then you still do Ring by forgetting
12:13 christopher_ the extra data.  If the extra data makes Ring ambiguous, well, that's
12:13 christopher_ what my other proposal is for.
12:13 luqui that's the subtyping *within* the ring you're talking about
12:13 luqui the set of your specialized integers still does not do the ring
12:13 luqui but they can certainly be used as elements of the ring.
12:13 luqui you're just not guaranteed to get a specialized integer back again
12:14 luqui let's call it MyInt
12:14 luqui That is, Ring{MyInt} is still not true
12:14 luqui even though you may certainly use MyInt in Integers place if MyInt is a subtype (or subclass or whatever) of Integer
12:14 christopher_ By "derived" above, I mean class B isa A.  I'm distinguishing the "isa"
12:14 christopher_ relation from the "subtype" relation.
12:15 luqui sure.  but when you reduce it to fundamentals, you realize that they're both just certain kinds of subsets
12:15 luqui here's what I'm saying:
12:15 luqui if Ring{MyInt}, that means there is a method infix:<+> (MyInt, MyInt --> MyInt)
12:15 luqui if Ring{Int}, that means there is a method infix:<+> (Int, Int --> Int)
12:16 luqui If MyInt isa Int, then you can still pass MyInts to the latter function
12:16 luqui but you might not get a MyInt back
12:16 christopher_ When you have "isa" class inheritance, you can think about properties of
12:16 christopher_ the group as a whole.  When you use subtypes, then lots of your methods
12:16 christopher_ may fail.  Subtypes work fine for many self-invoked methods but as you
12:16 christopher_ observe the multiple-invocant start making less sense, because there's
12:16 christopher_ no concept of the "subtype as a whole" having nice properties.
12:16 luqui If Ring{MyInt} were true, that means you'd have to define a infix:<+> where if you added two MyInts, you'd get another MyInt back
12:17 luqui christopher_, what is "isa" inheritance in the presence of multimethods?
12:18 luqui you can fail there, too
12:18 luqui only in the single-invocant case are you guaranteed still to succeed
12:18 luqui but Ring defines lots of multimethods.
12:20 luqui I'm not sure what you mean by "when you have 'isa' class inheritance, you can think about properties of the group as a whole'
12:24 christopher_ With isa inheritance, aren't all the Int variables and methods automatically
12:24 christopher_ visible in the derived class?
12:24 iblechbot has quit IRC (Read error: 110 (Connection timed out))
12:24 christopher_ You're right, you could recede to the base type when you call some of them..
12:25 luqui with subtyping, isn't the *exact same* value automatically visible in the derived class?
12:25 luqui I think of subtyping as derivation without adding any methods or data
12:26 luqui (though construction is certainly different)
12:27 iblechbot has joined #perl6
12:28 christopher_ So, how about trying to separate covariant and contravariant promises?
12:28 christopher_ Role gets into so much trouble by trying to satisfy both of them at once...
12:28 christopher_ at least, it makes it impossible for it to deduce much of anything.
12:28 gysmo has joined #perl6
12:29 luqui did you read theory.pod?
12:29 christopher_ parts of it.  why, are they already separated?
12:29 luqui the idea was:  role: contravariant only; factory: covariant only;  theory: both
12:30 luqui (but I called them the opposite things, as TSa hadn't corrected me yet)
12:30 christopher_ But roles aren't contravariant-only in A12, are they?
12:31 luqui sure
12:31 luqui they're even more restrictive
12:31 luqui you can only have the topic type (the type being defined) in the first invocant position
12:31 christopher_ so, the problem is with Ring as Theory?
12:32 luqui the problem is in the expansion law; the rules that I use to transform the "sugared" form into constraints on variables
12:32 luqui it doesn't work
12:32 luqui in order to solve it, I have to introduce "theory-valued theories" (theories that take other theories as parameters)
12:33 luqui which I imagine could be a major pain for the typechecker
12:34 christopher_ "Theory-valued theories" were already in theory.pod before yesterday
12:34 christopher_ (though admittedly, I didn't read that part).
12:34 luqui oh, yeah, the note at the end
12:35 luqui I was hoping that I could eliminate that
12:35 luqui and then I did.  but now I realize that I *really* can't
12:35 luqui (it's a much bigger problem than the GADT case mentioned at the end)
12:38 christopher_ So, I'd imagined that if you needed contravariant promises and covariant
12:38 christopher_ ones at once, you wouldn't be able to inference anything non-explicit.
12:38 christopher_ But you say that with this extra machinery, there are some special
12:38 christopher_ inferences you'll be able to make about Ring?
12:38 luqui with what extra machinery?
12:38 christopher_ theory-valued theories
12:38 christopher_ ..
12:39 luqui uh, no.  they're necessary just to express the kinds of algebra that people want to express
12:39 luqui you couldn't make a Functor class without them.
12:40 luqui oh, you were talking about inference
12:40 luqui but maybe you weren't... the rest of your sentence doesn't seem to suggest that you're talking about type inference.
12:41 christopher_ I think I was talking solely about type inference.
12:41 luqui hmm... okay, let me figure out what you were saying then :-)
12:42 christopher_ maybe I should just ask a different question: why are theories necessary for p6?
12:43 luqui well, they're not *really*.  We could settle for a Java-like type system
12:43 christopher_ okay, why do we want theories in p6?
12:43 luqui Theories are really just an extension of Haskell's type classes.  And type classes rock.  So we stole them.
12:44 luqui In most type systems, which don't have them, you can't even express algebraic structures like Ring
12:44 luqui You just settle for assuming it implicitly in your program
12:46 luqui It's really kind of obvious.  We're all about generalization.  You can think of theories either as a generalization of classes to multiple parameters, or a generalization of multimethods to collections of related multis.
12:46 luqui s/classes/roles/
12:47 christopher_ By the expansion law, do you mean the place where you rewrite your
12:47 christopher_ simple syntax and put in '<=' a few times?
12:47 luqui Yeah.
12:48 luqui Haskell makes you write:  sort :: (Ord a, Ord b) => [a] -> [b]
12:48 luqui and I thought that was linguistically and conceptually complicated
12:48 luqui so I wanted to be able to write it:  sort :: [Ord] -> [Ord]
12:48 luqui It gave a meaning to putting a role in a signature, since a role was just a theory
12:49 christopher_ that may have led to my question about signature syntax, and how
12:49 christopher_ you express that whether the ord's are supposed to be fulfilled by
12:49 christopher_ the same or different classes...
12:49 luqui ahh, if you require them to be fulfilled by the same class, you have to use a variable
12:50 luqui hmm, maybe the flaw in the rewrite syntax was the existential flaw I made in haskell the other day
12:50 luqui do you know haskell?
12:50 luqui (to know whether I should put it in haskell or perl 6 syntax)
12:50 luqui (because p6 syntax isn't as well-defined)
12:50 christopher_ i'm trying to learn it.  I'm up to chapter 9 in the gentle intro, and
12:50 christopher_ have just discovered that 'local' is provided by the Reader monad...
12:50 luqui that's definitely good enough
12:51 luqui basically, I was trying abstract away my implementation types.
12:51 luqui so I had a function:  mkFoo :: (Foo a) -> a
12:51 luqui and I defined it:  mkFoo = ImplFoo, where ImplFoo was a constructor for a type that was an instance of Foo (whew)
12:52 luqui and then ghc whined at me about it
12:52 luqui oh, s/->/=>/ above
12:52 luqui I was making a logical error
12:52 luqui my signature says that *whatever* type a you give me, if it is an instance of Foo, I can return it
12:53 luqui whereas I was thinking, there exists a type a that is an instance of Foo that I return
12:53 luqui And the latter is what I'm thinking when I say:  sub mkFoo(--> Foo)
12:53 luqui so clearly the expansion law doesn't work there either
12:53 luqui in the "returns" position, the type has to be existential, not universal
12:54 luqui so I think I was bound to hit a wall in the big picture eventually
12:54 luqui (because mkFoo is equivalent to sub mkFoo(--> ^T <= Foo{^T}), which is the same as the haskell example)
12:54 elmex has joined #perl6
12:56 christopher_ remind me what the --> means?
12:56 luqui "returns"
12:58 luqui however, it is very early in the morning, and I think it's time for me to go to bed
12:58 luqui nice chatting with you; it clarified *my* thoughts a bit
12:58 luqui I hope it did yours too
12:58 luqui sayonara
12:59 luqui has quit IRC ("Leaving")
12:59 christopher_ thanks for bringing me up to speed!  i definitely need more ghc prractice.
13:00 christopher_ has quit IRC ()
13:07 svnbot6 r7974 | iblech++ | * Usual svn props.
13:07 svnbot6 r7974 | iblech++ | * New t/oo/attributes/defaults.t:
13:07 svnbot6 r7974 | iblech++ |     has $.foo = get_foo();      # &get_foo executed at compile-time
13:07 svnbot6 r7974 | iblech++ |     has $.foo = { get_foo() };  # &get_foo executed at object initialization time
13:07 svnbot6 r7974 | iblech++ | * New t/oo/attributes/is_rw_on_class.t:
13:07 svnbot6 r7974 | iblech++ |     class Foo is rw {
13:07 svnbot6 r7974 | iblech++ |         has $.bar;  # automatically "is rw"
13:07 svnbot6 r7974 | iblech++ |     }
13:07 gysmo has quit IRC (Read error: 110 (Connection timed out))
13:24 penk has joined #perl6
13:32 G2 has joined #perl6
13:40 Juerd Hmm
13:40 Juerd What does class Foo { has $.foo; is rw; has $.bar; } do?
13:40 Juerd (a) invalid syntax: is and friends have to come before anything else
13:41 Juerd (b) both $.foo and $.bar are rw, because is influences the entire class
13:41 Juerd (c) $.foo is ro, $.bar is rw, because is rw works lexically
13:42 Juerd 14:08 < svnbot6> r7974 | iblech++ |     has $.foo = { get_foo() };  # &get_foo executed at object initialization time
13:42 Juerd Eek!
13:42 Juerd But it should assign a closure.
13:42 Juerd Or does "my $foo = { ... }" also not assign a closure?
13:43 Juerd Symmetry must be
13:43 theorbtwo ?eval my $foo = { 1 }; $foo;
13:43 evalbot_7969 is now known as evalbot_7974
13:43 evalbot_7974 \sub {...}
13:45 Juerd luqui++  # apparently changed evalbot :)
13:48 coumbes has quit IRC ("Later!")
13:51 lampus_ has joined #perl6
13:52 gysmo has joined #perl6
13:53 scook0 has quit IRC ("Leaving")
14:01 svnbot6 r7975 | iblech++ | * Changed $:foo to $!foo, per latest S12 (r6618) in examples/, t/, ext/, and docs/.
14:01 svnbot6 r7975 | iblech++ | * Changed $self.:bar to $self!bar, same reason, same directories.
14:01 svnbot6 r7975 | iblech++ | * Changed method :foo to my method foo, same reason, same directories.
14:01 svnbot6 r7975 | iblech++ | * Pugs.Parser: Parse $!foo.
14:01 svnbot6 r7975 | iblech++ |   Note: Calling of private methods (self!foo) is not yet parsed.
14:04 lampus has quit IRC (Nick collision from services.)
14:05 lampus_ is now known as lampus
14:20 penk has quit IRC (Remote closed the connection)
14:21 penk has joined #perl6
14:56 qmole has joined #perl6
15:01 Juerd There goes infix none() :(
15:04 r0nny_ ls
15:05 qmole :)
15:06 r0nny_ how does adding new stuff to ΩINC work in perl6 ?
15:09 Juerd ...OhmINC?!
15:10 r0nny_ i found - again a 'foo" typo :/
15:10 Juerd Hoping you mean @INC, it's no different than in Perl 5, BEGIN { push @INC, ... }
15:12 r0nny_ im doing use lib 'foo';
15:12 r0nny_ it threw totally unrelated error messages at me casue i wrote 'foo";
15:14 r0nny_ is there a way, to allow special classes to read pricate methods of other classes ?
15:15 r0nny_ eh provate
15:15 nothingmuch has quit IRC ("leaving")
15:29 nothingmuch has joined #perl6
15:30 lisppaste3 has quit IRC ("Want lisppaste3 in your channel? Email chandler AT unmutual.info.")
15:30 lisppaste3 has joined #perl6
15:33 xern has quit IRC ("leaving")
15:34 xern has joined #perl6
15:42 joepurl has joined #perl6
16:15 dudley_ has joined #perl6
16:22 elmex has quit IRC ("leaving")
16:23 dudley_ Does anybody have an svn dump of the pugs repo so that I could bootstrap my svk mirror?
16:24 dudley_ I lost my repository and I don't really want to pull down 10000 revisions from svn.
16:25 * nothingmuch lost it too today
16:29 integral dudley_: there is an option to sync to limit how much it pulls
16:30 dudley_ Oh, I know. It's just an OCD packrat thing, I want to have the whole history.
16:39 Aankhen`` has quit IRC ("Reboot [Time wasted online: 10hrs 31mins 35secs]")
17:05 frobnitz has quit IRC (Read error: 110 (Connection timed out))
17:09 gysmo has left
17:26 dudley_ has quit IRC (Read error: 110 (Connection timed out))
17:45 _Vutral has joined #perl6
18:18 dudley_ has joined #perl6
18:57 Amnesiac has joined #perl6
20:10 dduncan has joined #perl6
20:21 Amnesiac has quit IRC ("Leaving")
21:00 liz6 has joined #perl6
21:24 iblechbot has quit IRC (Read error: 110 (Connection timed out))
21:40 _Vutral has quit IRC (Read error: 110 (Connection timed out))
21:42 justatheory has joined #perl6
22:17 Shillo has joined #perl6
22:18 r0nny_ has quit IRC ("leaving")
22:38 _SamB_ has joined #perl6
22:40 SamB has quit IRC (Nick collision from services.)
22:40 _SamB_ is now known as SamB
22:58 luqui has joined #perl6
23:04 sapper has joined #perl6
23:18 Bit-Man has quit IRC (Remote closed the connection)
23:30 lisppaste3 has quit IRC ("Want lisppaste3 in your channel? Email chandler AT unmutual.info.")
23:30 lisppaste3 has joined #perl6
23:31 emmons has joined #perl6
23:34 frederico has joined #perl6
23:36 Jthon has joined #perl6
23:38 Jthon Hello
23:38 rafl Hello Jthon
23:39 Jthon Is there anyone around who would be willing to answer some questions about threading in parrot?
23:39 liz6 wouldn't #parrot be a better place to ask this?
23:39 Jthon Well there is all of one person there, and it is the perl6 vm.
23:40 rafl Jthon: #parrot on irc.perl.org
23:40 obra Jthon: What do your questions look like?
23:41 Jthon I'm just trying to write some PASM/PIR code that starts additional threads and runs code in parallel.  Unfortuneatly the calling code doesn't seem to work correctly.
23:41 Jthon The only example I have is thr-primes.imc and that doesn't work either.
23:41 Jthon Same error as I get.
23:41 obra So. It's my understand that parrot threading isn't yet specced ;)
23:41 Jthon Which is get_str() not implemented in class 'NCI'
23:42 Jthon That's dissapointing.
23:42 leo Jthon: calling code wrt threading is currently not working at all - it was though
23:43 leo Jthon: get_string()
23:44 leo but as said that belongs to #parrot, which is at L<irc://irc.rhizomatic.net>/ or L<irc://irc.pobox.com/>
23:45 Jthon Ok I'll try there then.
23:45 Jthon I'm trying to get Parrot running on a HW transactional memory system, and need some benchmarks.
23:45 leo obra: and that too of course
23:45 Jthon thanks for the help
23:47 leo these exists already: 'HW transactional memory system'?
23:47 Jthon Well not entirely
23:47 Jthon Its running in a simic simulator as its still in development.
23:47 leo simulator?
23:48 leo <- #parrot

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo