»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:02
daxim_ joined,
daxim left
00:03
Rotwang left
00:09
sftp left
00:12
sftp joined
00:18
sftp_ joined,
sftp left
00:21
wallberg left,
silent_h_ left
00:25
mikemol left
00:29
cdarroch left,
tylercurtis left
00:32
leprevost joined
00:33
impious left
00:37
baest_ joined
00:40
risou joined
00:45
risou left
00:46
am0c left
00:57
mtk left
01:00
noganex_ joined
01:01
woosley joined
01:03
flatwhatson joined,
noganex left
01:05
mtk joined
01:08
tylercurtis joined
01:11
JimmyZ__ left
01:16
orafu left
01:17
orafu joined
01:18
whiteknight left
01:35
_jaldhar left,
hudnix left
01:36
_jaldhar joined
01:39
hudnix joined
01:45
jferrero left
02:00
DarthGandalf joined,
orafu left
02:01
cosimo joined
02:04
orafu joined,
s1n joined
02:10
donri left,
hudnix left,
leprevost_ joined
02:12
leprevost left
02:26
petdance joined
02:34
mikemol joined
02:53
leprevost_ left
02:59
petdance left
03:11
meswami joined
03:15
petdance joined
03:18
justatheory joined
03:23
Su-Shee_ joined
03:25
Su-Shee left
03:35
Alias joined
|
|||
ggoebel | perl6: 'hello'.flip.say | 03:35 | |
p6eval | niecza v4-54-g2a67dcf: OUTPUT«Unhandled exception: Unable to resolve method flip in class Str at /tmp/lp4F8tgjzB line 1 (MAIN mainline @ 1) at /home/p6eval/niecza/lib/CORE.setting line 1307 (CORE C549_ANON @ 2) at /home/p6eval/niecza/lib/CORE.setting line 1308 (CORE module-CORE @ 39) at | 03:36 | |
../home/p6eval/nie… | |||
..rakudo 4bf132: OUTPUT«olleh» | |||
..pugs: OUTPUT«*** No such method in class Str: "&flip" at /tmp/YEjJ5tnV6s line 1, column 1 - line 2, column 1» | |||
ggoebel | phenny: tell moritz let me know where to send a postcard for your nephew 'moc tod liamg ta lebeog tod tterrag'.flip.say | 03:37 | |
phenny | ggoebel: I'll pass that on when moritz is around. | ||
03:38
am0c joined
03:52
GinoMan joined
03:55
orafu left
03:56
orafu joined,
satyavvd joined
04:07
GinoMan left
04:08
ggoebel left,
ggoebel joined
04:15
am0c^ joined
04:18
arnsholt joined
04:19
nymacro joined
04:23
kaare_ joined
04:50
petdance left
04:52
satyavvd left
05:01
JimmyZ joined
05:10
birdwindupbird joined
05:15
sftp_ left
05:31
satyavvd joined
05:41
am0c^ left
05:48
wtw joined
05:55
JimmyZ left
05:57
ggoebel left
06:01
am0c left
06:02
justatheory left
06:03
justatheory joined,
ggoebel joined,
am0c joined
06:07
Tedd1^ left
06:14
ggoebel left
06:16
sjohnson left
06:17
sjohnson joined
06:19
Tedd1 joined
06:20
isBEKaml joined
06:21
ggoebel joined
06:28
baest_ is now known as baest,
simcop2387 left
|
|||
moritz | ggoebel: thanks, mail sent | 06:30 | |
phenny | moritz: 03:37Z <ggoebel> tell moritz let me know where to send a postcard for your nephew 'moc tod liamg ta lebeog tod tterrag'.flip.say | ||
06:30
[sbp] left
06:31
meswami left
06:35
justatheory left
06:37
Su-Shee_ is now known as Su-Shee
06:38
simcop2387 joined
06:44
simcop2387 left
06:46
mberends left
06:48
Mowah joined
06:52
am0c left,
am0c joined
06:53
kjeldahlw joined
06:56
simcop2387 joined
06:58
cosimo left
07:08
orafu left,
donri joined,
orafu joined
07:10
noganex_ left
07:11
noganex joined
07:22
Chat3466 joined
|
|||
Chat3466 | hi all | 07:22 | |
07:24
Su-Shee left
07:26
Chat3466 left
07:31
Mowah left
07:36
yegor left
|
|||
woosley | perl6: mutil sub foo(0, $){}; multi sub foo(Int $n, Str $a="A"){say $a; foo($n-1, $a)}; foo(2,"A") | 07:51 | |
p6eval | rakudo 4bf132: OUTPUT«===SORRY!===Multiple declarations of lexical '&foo'» | ||
..pugs: OUTPUT«***  Unexpected "foo" expecting "=", subroutine parameters, trait or block at /tmp/j32tdBtNuy line 1, column 11» | |||
..niecza v4-54-g2a67dcf: OUTPUT«Unhandled exception: Unable to resolve method ast in class Any at /home/p6eval/niecza/src/NieczaActions.pm6 line 198 (NieczaActions NieczaActions.mangle_longname @ 5) at /home/p6eval/niecza/src/NieczaActions.pm6 line 193 (NieczaActions | |||
..NieczaActions.simple_longname @ 2) at /h… | |||
woosley | perl6: multi sub foo(0, $){}; multi sub foo(Int $n, Str $a="A"){say $a; foo($n-1, $a)}; foo(2,"A") | 07:52 | |
p6eval | niecza v4-54-g2a67dcf: OUTPUT«Unhandled exception: Unable to resolve method ast in class Any at /home/p6eval/niecza/src/NieczaActions.pm6 line 198 (NieczaActions NieczaActions.mangle_longname @ 5) at /home/p6eval/niecza/src/NieczaActions.pm6 line 193 (NieczaActions NieczaActions.simple_longname | ||
..@ 2) at /h… | |||
..pugs: OUTPUT«***  Unexpected "0" expecting formal parameter or ")" at /tmp/vsofer3OdT line 1, column 15» | |||
..rakudo 4bf132: OUTPUT«No applicable candidates found to dispatch to for 'foo'. Available candidates are::(Int where (0), Any ):(Int $n, Str $a = { ... }) in main program body at line 22:/tmp/2Q_l7rwDkX» | |||
woosley | rakudo: multi sub foo(0, $){}; multi sub foo(Int $n, $a="A"){say $a; foo($n-1, $a)}; foo(2,"A") | 07:53 | |
p6eval | rakudo 4bf132: OUTPUT«AA» | ||
woosley | rakudo: multi sub foo(0, $){}; multi sub foo(Int $n, Str $a="A"){say $a; foo($n-1, $a)}; foo(2,"A") | ||
p6eval | rakudo 4bf132: OUTPUT«No applicable candidates found to dispatch to for 'foo'. Available candidates are::(Int where (0), Any ):(Int $n, Str $a = { ... }) in main program body at line 22:/tmp/ujRNU78DSv» | ||
woosley | rakudo: multi sub foo(0, $){}; multi sub foo(Int $n, Str $a="A"){say $a}; foo(2,"A") | 07:54 | |
p6eval | rakudo 4bf132: OUTPUT«No applicable candidates found to dispatch to for 'foo'. Available candidates are::(Int where (0), Any ):(Int $n, Str $a = { ... }) in main program body at line 22:/tmp/bHQu4n3fq6» | ||
woosley | rakudo: multi sub foo(Int $n, Str $a="A"){say $a}; foo(2,"A") | 07:56 | |
p6eval | rakudo 4bf132: OUTPUT«A» | ||
woosley | hmmm, this should be a rakudo bug | ||
moritz | it is, please submit it (rakudobug@perl.org) | 08:00 | |
08:00
Rotwang joined
|
|||
isBEKaml | multi sub foo(_0_,$) ? | 08:01 | |
can a literal simply be used there in a sub ? | 08:02 | ||
moritz | is short for multi sub foo(Int $ where 0, $) | ||
08:02
miso2217 left
|
|||
isBEKaml | ah | 08:02 | |
moritz | very handy if you declare separate cases for stopping recursion | ||
woosley | rakudo: multi sub foo(0, $){}; multi sub foo(Int $n, $a="A"){say $a}; foo(2,"A") | ||
p6eval | rakudo 4bf132: OUTPUT«A» | ||
moritz | rakudo: multi postfix:<!>(0) { 1 }; multi postfix:<!>(Int $n) { $n * ($n-1)! }; say 5! | 08:03 | |
p6eval | rakudo 4bf132: OUTPUT«120» | ||
isBEKaml | moritz: nice! | ||
moritz: it'd be even better if we didn't have to declare another sub for a terminating condition. Er, can we define/declare subs within another? | 08:04 | ||
moritz | isBEKaml: you can, but then you can't easily multi dispatch | 08:05 | |
isBEKaml: fwiw haskell does something very similar | |||
fac 0 = 1 | |||
isBEKaml | moritz: yes, that's what I was thinking of at first. | ||
moritz | fac x = x * fac (x-1) | ||
isBEKaml | moritz: and another language too, that I'm somewhat familiar with, works on the JVM. Provides TCO that way with inner functions. | 08:06 | |
moritz | except tht haskell's pattern matching is top down, and compile time | ||
isBEKaml | haskell, once compiled is mostly correct. | ||
moritz | except that my first patch to pugs resulted in an infinite loop | 08:07 | |
mathw | Haskell's type system is not robust enough to promise correctness just because your program compiles | 08:08 | |
I've done some work with dependently typed language, and that kind of thing is incredibly hard :) | |||
isBEKaml | mathw: agda? :) | ||
mathw | I had a lot of "oh dear, it looks like I need to solve the halting problem" moments | ||
isBEKaml: Epigram | |||
isBEKaml | mathw: Oh, I have Coq and Agda on my list of things to-do-when-I-have-copious-time | 08:09 | |
Haskell also doesn't have subtype polymorphism, a feature in Java that I hate to admit. :) | 08:10 | ||
mathw | meh, Haskell has type classes | 08:11 | |
Gorgeous, lovely type classes | |||
isBEKaml | type classes are great and everything. How do you define something to say that this has to be of such and such type before I can actually pass this as an argument to this function? | ||
GADTs can only do so much, but they have been pretty useful so far. | 08:12 | ||
map :: (a -> b) -> [a] -> [b] can take a function that maps a value of type "a" to a value of type "b" and a list of values of type "a", returning back a list of values of type "b" | 08:15 | ||
08:16
jfried joined
|
|||
isBEKaml | now I want map to work only on so and so types, say numeric, so I add a constraint. map :: (Num a) => (a -> b) -> [a] -> [b], but that doesn't cut it for composite data. | 08:16 | |
isBEKaml should just shut up and get back to reading.. | 08:18 | ||
08:23
dakkar joined
|
|||
moritz | rakudo: multi foo(0, $a) {1 }; multi foo(Int $n, Str $a = 'A'} { 2}; say foo(2, 'A') | 08:32 | |
p6eval | rakudo 4bf132: OUTPUT«===SORRY!===Malformed multi at line 22, near "foo(Int $n"» | ||
moritz | std: multi foo(0, $a) {1 }; multi foo(Int $n, Str $a = 'A'} { 2}; say foo(2, 'A') | 08:33 | |
p6eval | std 4608239: OUTPUT«===SORRY!===Default expression must come last at /tmp/eUn678yCIb line 1:------> $a) {1 }; multi foo(Int $n, Str $a = 'A'⏏} { 2}; say foo(2, 'A')Unable to parse signature at /tmp/eUn678yCIb line 1:------> multi foo(0, $a) {1 }; multi | ||
..foo… | |||
dalek | ast: 5b94e54 | moritz++ | S06-multi/value-based.t: [value-based.t] test for RT #88562, multi dispatch with int literals, anonymous parameters and default values |
08:35 | |
08:38
domidumont left
08:43
mtk left,
miso2217 joined
08:46
miso2217 left
08:51
domidumont joined
09:01
aindilis left
09:14
am0c left
09:16
miso2217 joined
09:18
snearch joined
09:31
SHODAN joined
09:40
starcoder2 joined
09:47
beppu joined
10:08
woosley left
10:09
snearch left
10:13
Rotwang left
10:22
tzhs joined
10:26
hanekomu joined
10:38
pernatiy left
10:42
icwiener joined
10:58
yegor joined
10:59
molaf_ left
11:13
risou joined
11:15
sftp joined
11:16
risou_ joined
11:19
risou left
11:20
hanekomu left,
hanekomu joined
11:50
mux_ is now known as mux
11:54
satyavvd left,
Patterner left,
hudnix joined
11:55
SHODAN left
11:56
Psyche^ joined,
Psyche^ is now known as Patterner
12:02
_jaldhar left
12:03
_jaldhar joined
12:09
shi joined,
risou_ left,
risou joined
12:17
ymasory left
12:33
shi left
12:38
icwiener left
12:43
bluescreen10 joined
12:49
Alias_ joined
12:54
noganex_ joined
12:55
noganex left,
noganex_ is now known as noganex,
pernatiy joined
13:11
hanekomu left
13:12
hanekomu joined
13:13
daxim_ left
13:18
pmurias joined
13:19
mtk joined
13:22
hanekomu left
13:23
awoodland joined,
hanekomu joined
13:24
MayDaniel joined
13:25
Lorn left
|
|||
pmurias | is it possible to make ids in a mysql table be assigned sequentially without the gaps being filled in so if i have ids 1,300,301 the new id will be 302 not 2 | 13:27 | |
? | |||
sorry | |||
meant to ask on #mysql | |||
13:28
awoodland left
|
|||
flussence | well, there is, but you have to manually tell it the new number to start at :) | 13:28 | |
flussence hasn't used that bit of mysql in a while... | 13:29 | ||
PerlJam | pmurias: why are there gaps? and why do you want to skip over those numbers? | ||
moritz | that's #perl6, you ask "how?", and get a "why?" as reply :-) | 13:30 | |
PerlJam | that's any #perl in general I think. context always matters :) | ||
13:33
Lorn joined
|
|||
isBEKaml | perl6 in general is very nosey. | 13:34 | |
isBEKaml scurries for cover! | |||
pmurias | PerlJam: i want to be able to display the items from the table in order of addition | 13:35 | |
isBEKaml | pmurias: not sure, there's initval in sql syntax. but in the case of mysql, last_insert_id ? | ||
pmurias: dev.mysql.com/doc/refman/5.1/en/cre...table.html | |||
search for sequence. | |||
flussence | pmurias: I'd always use a timestamp of some sort in that case | 13:36 | |
PerlJam | pmurias: what flussence said | ||
13:39
spq joined
13:41
Holy_Cow joined
|
|||
flussence | on a side note, I always thought Postgres' implementation of auto-incrementing numbers as pseudo-tables was a bit over-the-top, but it turns out things are cleaner-separated for it. | 13:44 | |
for instance here you'd change the start number using a select and some mutator function instead of an alter table, which means it needs less privileges | 13:45 | ||
isBEKaml | pmurias: you can create a table and later alter it to set auto_increment to your value | ||
pmurias: dev.mysql.com/doc/refman/5.1/en/exa...ement.html | |||
flussence | (I can never remember the syntax for either, mind you :) | 13:46 | |
isBEKaml | whoa, #perl6 doubles up as a get-all-channel. :) | ||
13:48
wallberg joined
|
|||
flussence | we inline off-topic things sometimes for efficiency :) | 13:48 | |
PerlJam | isBEKaml: It's one of the dangers of being a #perl | 13:49 | |
isBEKaml | PerlJam: been on #perl, I was one of those that drove you nuts with philosphy discussions. :P | ||
PerlJam: "you", I mean perl programmers. :) | 13:50 | ||
13:54
kjeldahlw left,
woosley joined
|
|||
isBEKaml | ofcourse, I didn't try that again. | 13:54 | |
14:00
coldhead left
14:17
risou left,
risou joined
14:21
wtw left
14:22
risou left
14:26
ymasory joined
14:31
risou joined
14:37
risou_ joined
14:38
risou left
14:39
risou joined
14:40
risou__ joined
14:41
meswami joined
14:42
risou_ left
14:43
risou left
14:45
daxim joined
|
|||
moritz | for error objects, I'm currently trying to figure out if they should be more like hashes or capture | 14:47 | |
ie if they should support positional data | |||
PerlJam | my gut says Capture but it doesn't tell me why | ||
moritz | that was my first reaction too | ||
isBEKaml | I'm guessing by "positional data" you mean error lines/stack traces.. | 14:48 | |
moritz | isBEKaml: no, those are encapsulated in other attributes | ||
lemme give you a bit of background | |||
the API for raising an error would be | |||
die('Cannot frobnicate objects of type $<type>', type => "Int") | 14:49 | ||
vs | |||
die('Cannot frobnicate objects of type $0', "Int") | |||
in the first case, the message is special-cased, and no more positional data would be allowed as payload | 14:50 | ||
isBEKaml | first is a named hash, second is a Capture, right? | ||
moritz | right | ||
the second allows positional data (here "Int") as payload | |||
it's more generic, but do we actually want/need it? | |||
isBEKaml | Capture makes sense, since you can basically add more attributes without any named params at runtime. | ||
moritz | you can also add more attributes at runtime in the hash model | 14:51 | |
it's not *really* attributes | |||
isBEKaml | is there something I'm missing that's the background picture? (performance/memory issues? ) | 14:52 | |
14:52
awoodland joined
|
|||
moritz | isBEKaml: capture will be need slightly more memory, but probably not significant | 14:52 | |
PerlJam: the real reason for our gut feeling might be that it's symmetric to invocations and regex captures | 14:53 | ||
isBEKaml | moritz: err, I'm like PerlJam here. Gut reaction goes with Capture without any rational/reasonably strong argument. | ||
moritz | ok, three gut feelings and no opposing votes -- that settles the matter for me :-) | 14:54 | |
PerlJam | until you obtain more information :) | 14:55 | |
moritz | right | ||
isBEKaml | or until after implementation to see if we're right.. :) | 14:56 | |
moritz | I just noticed that in my grant application I wrote that I'll discuss the spec with "the Perl 6 design team" and the implementors | ||
14:56
awoodland left
|
|||
moritz | which means that I don't have to take it up to p6l if I don't want to :-) | 14:56 | |
ok, next question | 14:58 | ||
14:58
icwiener joined
|
|||
moritz | should the context information (backtrace) be available the same way as the payload, or as a separate attribute? | 14:58 | |
I'm leaning towards the latter | 14:59 | ||
PerlJam | separate attribute. | ||
moritz | otoh then creation might become ugly | 15:00 | |
there are two cases | |||
15:01
shi joined
|
|||
moritz | have die('msg', a => b()) desugar to Exception.new(positional => ['msg'], named => { a => b() }, callcontext => callframe(1)) | 15:01 | |
then separate attribute is easy to do | |||
isBEKaml | moritz: are we still keeping backtrace display configurable in rakudo compilation? (ie., we can turn them on/off at will?) | ||
15:02
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
moritz | or it desguars to Exception.new('msg', a => b(), callcontext => callframe(1)), then the distinction might blur | 15:02 | |
isBEKaml: might be easy to configure with a context variable | 15:03 | ||
isBEKaml: the --ll-backtrace option from rakudo operates on a different level that probably won't interact with my work in any way | |||
15:03
icwiener_ joined
15:04
icwiener left
|
|||
moritz | next question: should the exception has-a or is-a Capture? | 15:05 | |
15:05
sji joined
|
|||
PerlJam | why not both? :) | 15:05 | |
isBEKaml | moritz: isn't that question same as the first? | 15:06 | |
isBEKaml has a vague feeling that moritz has undergone too many psychometric tests... | |||
moritz should repharse | |||
should the payload of the exception be kept in a separate object? or go directly into the Exception? | 15:07 | ||
an Exception *has* a payload? or *is* it a container of payload? | |||
s/of/for/ | |||
15:07
vuliev left
|
|||
isBEKaml | much better-o. | 15:07 | |
er, the =or= seem the same to me. | 15:08 | ||
1 or 1 == 1 | |||
moritz | it would be overkill to do both | 15:09 | |
15:09
shi left
|
|||
isBEKaml | anyway, Exception is best kept to be generic and it's exactly what it is. | 15:09 | |
moritz | s/or/xor/ if you will | ||
PerlJam | moritz: has-a | ||
isBEKaml | I'd probably go with exceptions containing payloads. has-a relationship. | ||
moritz | PerlJam: why? | ||
alester | I'd be glad to help out Andrew Whitworth with his Rakudo bug sniffing if there was something I could sniff at. | ||
15:10
MayDaniel left
|
|||
isBEKaml | moritz: do you find anything wrong in what I said? | 15:11 | |
pmurias | moritz: re exceptions taking positionals, positional info in exceptions doesn't seem very usefull (as it seems something that will need looking up in the docs) | ||
PerlJam | moritz: because that fits my brain best at the moment. I don't see an advantage to "isa" and if an advantage were to come up in the future, if we already has-a, we can just delegate. | ||
moritz | pmurias: the same point could be made for subroutine signatures | ||
isBEKaml | moritz: if so, please point it out. I could really do with some realigning in thinking to perl6 way.. | ||
moritz | nothing wrong. Design is just a bunch of compromises, and I'd like to make good ones :-) | 15:12 | |
one reason for is-a Capture would be the way we test for exceptions | |||
isBEKaml | good answer. :-) | 15:13 | |
pmurias | why not has-a? | ||
moritz | pmurias: why not is-a? | 15:14 | |
PerlJam | moritz: there's prickly feeling in the back of my mind that you're asking questions that are further in the future than we can see and that we need more experience to inform a decision. So ... pick one and go with it. Get some experience :) | ||
isBEKaml | moritz: If we want to avoid holding stacktrace and other information in the capture (not context specific), we can go with has-a, with the above information generically in the Exception. | ||
pmurias | moritz: will we have an OO hierarchy for exceptions? | ||
moritz | pmurias: I'd like to avoid that | ||
the problem with hierarchies is that however you approach them, they'll feel wrong in some way | 15:15 | ||
15:15
meswami left
|
|||
moritz | I'd rather have "labels" (or "tags" as they are called by mostly everyone) | 15:16 | |
so that you can check an exception for different properties | |||
like "was this thrown from a PRE phaser?" | |||
"is it a syntax error?" | |||
"is it an error releated to a numeric operation?" | |||
isBEKaml | error messages are contained in captures(assuming that's context specific enough) and other secondary details that are irrelevant to the user can be hidden in Exception. | ||
PerlJam | moritz: As long as a heirarchy can be overlaid on your design in some way (i.e., you don't decide anything that precludes heirarchies) then I think your design will succeed. You like "tags" but heirarchies fit other people's brains better. (those coming from a Java background for instance) | ||
isBEKaml | that way, we can avoid gathering calltraces unless absolutely necessary. | 15:17 | |
flussence | I've used OO exceptions in PHP, it's easy to make a hierarchy but in practice I only ended up writing catch blocks for one type at a time anyway. | 15:18 | |
moritz always has troubles coming up with hierarchies for orthogonal pieces of information | |||
15:18
wallberg left
|
|||
PerlJam | flussence: yeah, IME with heirarchies, I only go 2 or so levels deep, or not at all | 15:19 | |
isBEKaml | moritz: IOW, it boils down to this. You can use captures to generate error messages. Use Exceptions _only_ if you need calltraces and secondary information. | ||
pmurias | why do we need a hierarchy at all, don't we have roles? | ||
moritz | for example "does it come from phaser $x" and "is it related to a numeric operation" | ||
PerlJam | pmurias: you just read my mind! | ||
moritz | pmurias: the "tags" I mentioned are much closer to roles than to class inheritance | ||
15:20
prammer joined
|
|||
pmurias | tags seem a bit like using a blessed hash | 15:20 | |
moritz | I just don't know if we want to use actual role composition - I'd imagine it might become quite heavy very quickly | ||
pmurias | it's a implementation detail | 15:21 | |
moritz | and it bears the danger of method classes in composition | ||
isBEKaml | tags, tags -- they look like we are classifying error detail here. | ||
moritz | pmurias: blessed hashes is what I thought of, yes. Except with s/hashes/captures/ | ||
pmurias | tags seem usefull for logging unstructure info we need for debugging | ||
isBEKaml | log levels? | 15:22 | |
PerlJam | Hmm. | ||
isBEKaml | coming from a Java background - DEBUG, ERROR, TRACE, INFO ? | ||
PerlJam | The pendulum seems to have swung too far to one side ... | 15:23 | |
pmurias | but the Exception object seems likely to be heavy weight: content of nearby lexicals etc. | ||
PerlJam | moritz: do the simplest thing that could work *now*, you'll end up refactoring/redesigning several times before you're done :-) | ||
isBEKaml | pmurias: that's exactly what I mean. Exception carries a certain hit in performance. Use *only* when you need it. | ||
pmurias | what PerlJam suggests seems the most resonable thing | ||
jasonmay | is there a way to do parameterized traits for attributes? yet? | 15:24 | |
s/?// | |||
moritz | jasonmay: what do you mean by that? | ||
has $.x is foo('bar')? | 15:25 | ||
TimToady | $.foo('bar') = 42; ? | ||
jasonmay | hmm | ||
moritz | PerlJam: you're probably correct | ||
TimToady | we need some behavior driven development :) | 15:26 | |
jasonmay | something like: | ||
moritz | and "the simplest thing that could work" would mean s/Capture/Hash/ again | ||
PerlJam | aye | ||
jasonmay | has $.x is foo{'one' => 'jason', 'two' => 'may'} | ||
PerlJam | those curlies are syntactically odd. | 15:27 | |
jasonmay | or is foo({...}) | ||
I don't know, just getting back into perl6 :) | |||
isBEKaml | moritz: yes and I was for pushing auxiliary info into Exception (I'm still under the impression that populating exceptions with calltraces is expensive) | ||
moritz | isBEKaml: that's totally unrelated to what I'm trying to decide now | ||
TimToady | std: has $.x :foo{'one' => 'jason', 'two' => 'may'} | ||
jasonmay | (ignore syntax, just asking about the concept) | ||
p6eval | std 4608239: OUTPUT«ok 00:01 122m» | ||
isBEKaml | moritz: I understood that you're going for captures for exceptions. | 15:28 | |
moritz | jasonmay: how about just storing a hash in $.x ? :-) | ||
jasonmay | sugar | ||
here's what I want to do eventually | 15:29 | ||
maye I'm trying to shoehorn.. | |||
so I wrote something similar to p5's Bread::Board | |||
(github.com/jasonmay/perl6-ioc) | |||
and Bread::Board::Declare came out and it's awesome :) | 15:30 | ||
isBEKaml | moritz: Alright, the best thing about p6 development is, we'll quickly know when we are wrong. :-) | ||
moritz: especially in design. | |||
jasonmay | it uses meta attr traits instead of a bunch of declarative syntax | ||
PerlJam | isBEKaml: I don't know ... some of TimToady's early design decisions lasted quite a while before we figured out they were "wrong" | 15:31 | |
jasonmay | and I was thinking, if I wanted to put that in perl6-ioc, I'd have to use parameterized attr traits to get close | ||
isBEKaml | PerlJam: that was early, it's _now_ :-) | ||
jasonmay | sorry, I come from the moose world so I think very moosey :) | ||
TimToady | niecza: class Foo; has $.x :foo{'one' => 'jason', 'two' => 'may'} | ||
p6eval | niecza v4-54-g2a67dcf: OUTPUT«===SORRY!===Colonpair traits NYI at /tmp/CENqBFXe7Z line 1 (EOF):------> x :foo{'one' => 'jason', 'two' => 'may'}⏏<EOL>Traits, postconstraints, and shapes on variable declarators NYI at /tmp/CENqBFXe7Z line 1 (EOF):------> | ||
..x :foo{'one… | |||
moritz | jasonmay: a synopsis example might help me understand better what you're doing, and what you're trying to achieve | 15:32 | |
isBEKaml | PerlJam: more eyes, short shelf life for bad designs. | ||
jasonmay | moritz: nod. I might have time this evening to get into more detail | ||
PerlJam looks at BBD | |||
interesting. | 15:33 | ||
15:33
envi joined
|
|||
PerlJam | I kind of miss the declarative container though. You don't see it in the code; it's implicit in using BBD | 15:34 | |
isBEKaml | BBD? | ||
or BDD? | |||
:-) | |||
PerlJam | Bread::Board::Declare | ||
isBEKaml | ahh.. | ||
TimToady | in p6, 'is' traits have the option to be as declarative or as lazy as they like, so you aren't forced into run-time "declarations" as p5 tends to do | 15:35 | |
isBEKaml | sorry. didn't see it. | 15:36 | |
TimToady | but you aren't forced to be completely declarative either | ||
it's up to the trait itself | |||
well, might need extra {} to be lazy in some cases though... | 15:37 | ||
but that's what the other trait syntax is for: has $.x will foo { later() } | |||
15:38
pmurias left
|
|||
PerlJam | jasonmay++ for bringin IOC to perl6 | 15:39 | |
jasonmay | :) | 15:40 | |
IOC rocks | |||
TimToady | .oO(International Olympic Committee?) |
||
moritz | Inversion Of Olympic Committee | 15:41 | |
TimToady | :) | 15:43 | |
jasonmay | TimToady: so in other words, has $.x is (anything I want that returns a proper trait); ? | ||
15:43
[Coke] left
15:44
isBEKaml left
|
|||
TimToady | 'is' is declarative, but the grammar slot is extensible, and there's already a 'will' specced that takes a closure | 15:45 | |
other subparsers in that slot are possible, including macros | |||
I shouldn't use 'slot'; the're called categories currently | 15:46 | ||
*they | |||
15:47
justatheory joined
|
|||
TimToady | the cateogory in question is trait_mod | 15:47 | |
TimToady can't tpye this mronign | 15:48 | ||
s/"can't"/cannot/ :P | 15:49 | ||
moritz | :-) | ||
jasonmay | reading the spec on it now | 15:50 | |
that is pretty neat | 15:51 | ||
15:55
sji left
|
|||
TimToady | hopefully it's enough rope to shoot ourselves in the feet many times over someday | 15:56 | |
moritz is pretty sure there is :-) | |||
sbp | your :P adverb should have come before the substitution | ||
TimToady | but some bits of it still require time travel | ||
PerlJam | or our grandchildren | ||
sbp | otherwise you have to delay interpretation | ||
TimToady | std: s/"can't"/cannot/ :P | 15:57 | |
p6eval | std 4608239: OUTPUT«ok 00:01 121m» | ||
sbp | aw... :-) | ||
std is now my comic nemesis | |||
TimToady | arguably, it should be an error if there's no obvious operator | 15:58 | |
PerlJam | obvioius to whom? :) | 15:59 | |
TimToady | otoh, s/// is sort of an operator | ||
PerlJam | er, obvious even | ||
TimToady | std: "foo" :P | ||
p6eval | std 4608239: OUTPUT«ok 00:01 119m» | ||
moritz | that " is a quote operator, no? :-) | ||
PerlJam | heh | ||
TimToady | but currently std just puts the adverb on the top node and doesn't check what it is | ||
std: 42 :P | 16:00 | ||
p6eval | std 4608239: OUTPUT«ok 00:01 119m» | ||
TimToady | std: Nil :P | ||
p6eval | std 4608239: OUTPUT«ok 00:01 119m» | ||
moritz | TimToady: speaking of adverbs... would you be terribly opposed to change %h{@keys}:p to :pairs? | 16:01 | |
and :k to :keys | |||
give that the methods are %h.pairs and %h.keys | 16:02 | ||
TimToady | I'd be okay with that, I guess | ||
moritz | I'd even patch all compilers that implement it :-) | ||
that is, niecza | |||
TimToady | right | ||
moritz | rakudo: my %h = a=> 2, b => 2; say %h<b>:p | 16:03 | |
p6eval | rakudo 4bf132: OUTPUT«===SORRY!===Confused at line 22, near "say %h<b>:"» | ||
moritz | niecza: my %h = a=> 2, b => 2; say %h<b>:p | ||
p6eval | niecza v4-54-g2a67dcf: OUTPUT«b 2» | ||
moritz | muscle memory is quite strong :-) | ||
flussence | ooh, didn't know about that adverb thing. | 16:04 | |
TimToady | niecza: my %h = a=> 2, b => 2; say %h<b>:p.perl # fails, I suspect | ||
p6eval | niecza v4-54-g2a67dcf: OUTPUT«===SORRY!===Any()Method call found where infix expected (omit whitespace?) at /tmp/eDWMQfPZIH line 1:------> my %h = a=> 2, b => 2; say %h<b>:p⏏.perl # fails, I suspectParse failed» | 16:05 | |
16:05
birdwindupbird left
|
|||
moritz | niecza: my %h = a=> 2, b => 2; say (%h<b>:p).perl | 16:05 | |
p6eval | niecza v4-54-g2a67dcf: OUTPUT«"b" => 2» | ||
16:05
birdwindupbird joined
|
|||
TimToady considers the merits of distinguishing postfix adverbs from "infix" adverbs | 16:05 | ||
or of making %h<b>:p\.perl into a backwards precedence dropper to auto-paren what was before the \ | 16:07 | ||
PerlJam | uh .... wha? | 16:08 | |
TimToady | these are both ideas I've rejected before :) | ||
pmichaud | good morning, perl6 | 16:09 | |
PerlJam | pmichaud! | ||
TimToady | o/! | ||
PerlJam | pmichaud: how's life? | ||
moritz | pmichaud, I hope your morning is good | ||
sbp | why did you reject distinguishing postfix adv. from infix? | ||
sbp waves at and to pmichaud | |||
pmichaud | life is fine :-) | ||
TimToady | sbp: I don't remember... | ||
PerlJam | TimToady: as long as you keep them on the reject pile I'll hold questioning your sanity in reserve ;) | ||
pyrimidine | pmichaud: good to hear! | ||
pmichaud frequently questions his sanity. (Note the ambiguous "his" :-) | 16:10 | ||
TimToady | :P | ||
huf | pmichaud: you're trans? | ||
pmichaud | huf: no. :-) | ||
huf | no, sorry, that was a forced misunderstanding-on-purpose | ||
not a nice natural one | 16:11 | ||
pyrimidine | tr///? | ||
PerlJam | Though I suppose if the conceptual "temperature" gets hot enough, they might evaporate from the reject pile and condense upon the "ideas to seriously consider pile" | ||
er, put the quote in the right place | |||
16:13
yegor left
16:16
yegor joined
|
|||
TimToady | huh, I never removed the .:foo syntax from std | 16:21 | |
niecza: my %h = a=> 2, b => 2; say %h<b>.:p.perl | 16:22 | ||
p6eval | niecza v4-54-g2a67dcf: OUTPUT«===SORRY!===Colonpair dotties NYI at /tmp/5QraWAOp9g line 1:------> my %h = a=> 2, b => 2; say %h<b>.:p⏏.perlUnhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 388 (CORE die @ 2) at | ||
../home/p6eval/niecza/… | |||
TimToady | that was originally for ~~ :e | 16:23 | |
16:23
SHODAN joined
|
|||
TimToady | but we might repurpose it | 16:23 | |
as a postfix adverb | |||
note to interested bystanders: the reason we use an adverb instead of a method is that the subscript would throw away the keys too soon in %h<b>.pairs | 16:25 | ||
so we need some way to tell the subscript not to do that | |||
16:25
mberends joined
|
|||
TimToady | and an adverb is sufficiently macro-y to do that | 16:25 | |
the proposal above is to treat .:pairs as macro-y in a similar way (it wasn't, in its original :e form) | 16:26 | ||
16:27
hercynium joined
|
|||
TimToady | %h<b>.:pairs would have the identical semantic effect to %h<b>:pairs, but would leave the parser in a postfix state instead of switching to an infix state | 16:28 | |
moritz | that sounds vaguely sane-ish | ||
TimToady | it's a little odd to add something to make it bind tighter though | 16:29 | |
alester | About to make my first Rakudo changes in who knows how long. | ||
Andy Lester: Code janitor. | |||
moritz | I think the CREDITS file was just taken verbatimly from parrot when the repos were split :-) | 16:30 | |
alester | I didn't mean to say that that was in the CREDITS. | ||
It's just how I see my job. | |||
16:31
hercynium left,
hercynium joined
|
|||
alester | Certainly not complaining. | 16:32 | |
moritz | :-) | 16:33 | |
PerlJam | alester: we certainly wouldn't complain about it either :) | 16:34 | |
alester | What? Unused variables! I'M ON IT. | ||
16:35
Alias__ joined
16:37
kjeldahl joined
16:38
Alias left,
Alias_ left,
Alias joined
16:39
JimmyZ_ joined
16:50
woosley left
|
|||
alester | ok, distracted, but now back on make spectest | 16:50 | |
16:52
Chillance joined
|
|||
PerlJam | moritz: have you read blogs.perl.org/users/jt_smith/2011/...-hurt.html ? | 16:54 | |
16:55
yegor left
|
|||
PerlJam | moritz: maybe you can glean some good design ideas from there and morph them into something Perl6ian | 16:55 | |
jasonmay | .oO( has $.x is service lifecycle Singleton depends-on <y z> ) |
16:56 | |
alester | moritz: what box are you on that is segfaulting? | 16:57 | |
What OS/compiler/etc | |||
My spectest has yet to burp. | |||
16:58
yegor joined
17:01
barika joined
17:04
nymacro left
|
|||
pmichaud | afk, lunch | 17:05 | |
17:07
dakkar left
17:09
pernatiy left
|
|||
jnthn | d'oh, missed pmichaud++ by 10 minutes | 17:13 | |
17:18
JodaZ joined
|
|||
moritz | alester: linux amd64, gcc 4.4.5 | 17:21 | |
jnthn | moritz: Where in the build? | 17:22 | |
17:23
Alias_ joined
17:25
Alias left
|
|||
jnthn | I'd guessing missing write-barrier, apart from it seems the issue happens in the non-gengc too... | 17:25 | |
17:25
Alias__ left
17:26
Alias joined,
hudnix left
17:27
hudnix joined
|
|||
jnthn | nom & | 17:31 | |
17:33
JodaZ left
17:34
JodaZ joined,
JodaZ left
|
|||
moritz | jnthn: irclog.perlgeek.de/parrot/2011-04-14#i_3503566 | 17:34 | |
17:39
JodaZ_ joined
|
|||
moritz | img01.lachschon.de/images/101639_da...s_yeah.jpg reminded me of some of the smilies in here :-) | 17:40 | |
PerlJam | heh! | 17:41 | |
moritz | ~o~ | 17:46 | |
17:47
birdwindupbird left
17:48
Alias__ joined
17:50
Alias_ left,
Alias left,
Alias joined
17:54
Alias left,
Alias joined
18:04
saaki left
18:06
saaki joined
18:10
pernatiy joined
18:16
larsen left,
larsen joined
18:26
risou__ left
18:45
icwiener joined,
icwiener_ left
18:46
colomon left
18:54
masak joined
|
|||
masak | hi, lolzebras. | 18:54 | |
moritz | lol, hizebra | 18:55 | |
tadzik | hi zebras | 18:58 | |
19:02
mtk left
|
|||
TimToady | it's not just constants: multi foo (::T $x, T $y) {...} also turns T into a constraint, $y where T, I think, since you can't do a nominal type check on something without a nom, er, name | 19:03 | |
masak | someone is hungry... :) | ||
TimToady | can't make lunch yet; waiting for a contractor to show up | 19:04 | |
tadzik | anything new in perl6land? | ||
masak | TimToady: you subcontract your lunches? :P | ||
TimToady | I do usually subcontract dinners | ||
masak | I wonder how static the parametric roles are. after having seen more .NET than usual in the past few days, I have some feature envy wrt static typechecking of generic types. | 19:05 | |
19:05
rgrau joined
|
|||
masak | maybe s/are/can be/ | 19:05 | |
rgrau! \o/ | |||
TimToady | sure, but ::T can be known at instantiation time if it's in the role's sig | 19:06 | |
I was just thinking about normal multis | |||
rgrau | hey! loong time offline | 19:07 | |
dalek | ecza: 8851938 | (Martin Berends)++ | / (3 files): [now] refactor the underlying function names and tweak 'make aot' |
19:08 | |
19:09
mtk joined
|
|||
TimToady | rakudo: multi truncate (::T $x) { $x.Int.T }; say truncate(42.33) | 19:09 | |
p6eval | rakudo 4bf132: OUTPUT«Method 'T' not found for invocant of class 'Integer' in 'truncate' at line 22:/tmp/sHjQmsIJjs in main program body at line 22:/tmp/sHjQmsIJjs» | ||
TimToady | rakudo: multi truncate (::T $x) { T($x.Int) }; say truncate(42.33) | ||
p6eval | rakudo 4bf132: OUTPUT«Could not find sub &T in 'truncate' at line 22:/tmp/WKN7DlZoqd in main program body at line 22:/tmp/WKN7DlZoqd» | ||
TimToady | aww | 19:10 | |
pugs: multi truncate (::T $x) { T($x.Int) }; say truncate(42.33) | |||
p6eval | pugs: OUTPUT«42» | ||
TimToady | pugs: multi truncate (::T $x) { T($x.Int) }; say truncate(42.33).WHAT | 19:11 | |
p6eval | pugs: OUTPUT«Int» | ||
TimToady | er, oopsie | ||
pugs: multi trunc (::T $x) { T($x.Int) }; say trunc(42.33).WHAT | |||
p6eval | pugs: OUTPUT«Int» | ||
TimToady | hmm | ||
pugs: multi foo (::T $x) { T($x.Int) }; say foo(42.33).WHAT | 19:12 | ||
p6eval | pugs: OUTPUT«*** No such subroutine: "&T" at /tmp/t6DojQbngB line 1, column 22-32» | ||
TimToady | pugs: multi foo (::T $x) { $x.Int.T }; say foo(42.33).WHAT | ||
p6eval | pugs: OUTPUT«*** No such method in class Rat: "&Int" at /tmp/X0qOJPels9 line 1, column 22-31» | ||
masak | is this spec'd anywhere? | 19:16 | |
TimToady | which, that Type() and .Type are both coercions? | 19:17 | |
masak | no, that this works even for type captures. | ||
19:17
pernatiy left
|
|||
TimToady | well, it's a type name--so what if it's known to be generic? | 19:18 | |
masak | arguably one of those "it just falls out" things, but... right. | ||
TimToady | one could go as far as to argue that any construct using ::T is generic and automatically gets instantiated over T whenever a new type is seen | 19:19 | |
however, if that were a multi, it would work against knowing the candidate list at compile time | 19:21 | ||
19:21
pernatiy joined
|
|||
TimToady | (if new candidates can be generated at run time) | 19:21 | |
masak | I bet jnthn would have something to say on this. | 19:22 | |
I know he's been talking in these terms. | |||
TimToady | so while lazy instantiation is a possible optimization technique, I don't think we should mandate it | ||
masak | I'm more interested in how far we can statically trace call dependencies over class boundaries, if parametric roles are involved. | 19:23 | |
TimToady | especially since we have type objects that are required to respond correctly (cross fingers) to .() | ||
masak | ouch :) | ||
TimToady | well, composition is normally at compile time, so that part's not a problem | 19:25 | |
dalek | ecza: 4b205f2 | (Martin Berends)++ | lib/CORE.setting: [CORE.setting] add a List.reverse() method to complement the reverse function |
||
19:27
[Coke] joined
19:30
mberends left
19:34
mberends joined
|
|||
dalek | d: 3468e14 | larry++ | STD.pm6: LTA "Default argument must come last" |
19:34 | |
19:41
SHODAN left
|
|||
jnthn | TimToady: I'm skeptical $x.Int.T would work, but that T($x.Int) doesn't is a bug afaik. | 19:53 | |
Since T there is parsed as a literal method name | |||
And yes, plesae not lets break knowing lexical multi candidate lists at compile time :) | 19:55 | ||
wtf, my english... | |||
...please let's not break... :) | 19:56 | ||
tadzik | oh, a fellow beer drinker! :) | 19:57 | |
jnthn | I only had one with a very large dinner :P | ||
tadzik | I had two with a kebab :) | ||
but, whatever | 19:58 | ||
jnthn | :) | ||
jnthn is still pondering whether to drop by the hotel bar before bed | |||
tadzik | do! | ||
drink to the health of my wrist :( | |||
jnthn | They have my favorite Czech beer on tap here, and I don't know anywhere else on Sweden that does. | 19:59 | |
...in Sweden... | |||
Dammit, how strong *was* that beer... :) | |||
Your wrist? :( | |||
tadzik | yeah, I've gone with a friend to check how much skateboarding do I remembre (I don't remember much) | 20:00 | |
now I can barely code! | |||
20:00
envi left
|
|||
jnthn | ouch! | 20:00 | |
Was this...after the kebab and two beers? ;) | 20:01 | ||
tadzik | no, before :) | ||
jnthn | Wow :) | ||
tadzik | getting hurt after getting drunk would have been embarasing :) | 20:02 | |
...as if it isn't now ;) | 20:03 | ||
20:03
Rotwang joined
20:05
jferrero joined
|
|||
tadzik | jnthn: how is 6model doing? | 20:08 | |
jnthn | not much the last couple of weeks | ||
:( | |||
tadzik | hugme: hug jnthn | 20:09 | |
hugme hugs jnthn | |||
jnthn | I've started on some better docs for it though | ||
tadzik | someone was asking about the docs recently | ||
jnthn | And my schedule for the coming weeks looks a lot nicer than it's been of late. | ||
tadzik | not sure if that wasn't jaffa4 | ||
20:10
Mowah joined
20:34
MayDaniel joined,
MayDaniel left,
MayDaniel joined
20:48
silent_h_ joined
20:51
MayDaniel left
20:57
silent_h_ left,
MayDaniel joined
21:02
Holy_Cow left
21:03
MayDaniel left
21:05
kjeldahl left
21:06
tzhs left
21:10
impious joined
21:11
hudnix left
21:19
hanekomu left
21:21
kaare_ left,
hudnix joined
21:31
eternaleye left,
eternaleye joined
21:39
donri left
|
|||
masak | 'night, #perl6 | 21:41 | |
21:41
masak left
21:42
impious left
21:51
whiteknight joined
21:57
spq left
21:59
bacek left
22:02
ymasory left
22:05
daxim left
22:06
Mowah left
22:13
mux left,
mux joined,
aesop left,
aesop joined
22:14
diakopter left,
jfried left,
sorear left
22:16
diakopter joined,
mdxi left,
mdxi joined,
sorear joined,
Tene joined
22:18
jfried joined
22:20
coldhead joined
22:29
ymasory joined
22:32
alester left
22:51
Rotwang left
22:59
DarthGandalf left
23:04
DarthGandalf joined
23:15
colomon joined
23:16
itz joined,
colomon_ joined
23:17
risou joined
23:20
colomon left,
colomon_ is now known as colomon
23:34
icwiener left
23:39
hercynium left
23:40
risou_ joined,
risou left
23:41
rgrau left
23:44
Chillance left
|