»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:00
chenryn__ joined
00:01
psch left
00:05
chenryn__ left
00:06
chenryn__ joined
00:15
chenryn__ left,
jnap left
00:30
erkan joined
00:33
jnap joined
00:42
chenryn__ joined
00:46
chenryn__ left
00:56
vendethiel left
00:57
vendethiel joined
00:58
BenGoldberg joined
01:00
hoverboard left
01:02
klapperl_ joined
01:06
klapperl left
01:07
Su-Shee left
01:09
Su-Shee joined
01:20
thou joined
01:27
[Sno] left,
[Sno] joined
01:39
thou left,
thou joined
01:41
Akagi201_ left
01:43
[Sno] left
01:44
colomon_ left
01:46
chenryn__ joined
01:48
colomon joined
01:51
chenryn__ left
01:53
tempire left
01:54
tempire joined,
camelia left
01:59
camelia joined
02:01
ChanServ sets mode: +v camelia,
Sqirrel left,
xiaomiao left,
xiaomiao joined
02:07
dayangkun joined,
xiaomiao left
02:08
xiaomiao joined
02:13
jnap left
02:18
Sqirrel joined
02:20
vendethiel-- joined
02:21
vendethiel left
02:24
noganex joined
02:27
silug left,
noganex_ left
02:39
silug joined
02:40
erkan left
02:47
chenryn joined,
chenryn__ joined
02:51
chenryn__ left
02:52
teodozjan joined
02:57
teodozjan left
03:04
chenryn__ joined
03:08
chenryn__ left
03:10
davercc joined
|
|||
[Coke] | . o O (Colorado) | 03:14 | |
03:22
mr-fooba_ left,
kaare__ joined,
mr-foobar joined
03:23
xragnar is now known as Guest10047,
xragnar_ joined,
Guest10047 left,
xragnar_ is now known as xragnar
03:25
davercc left
03:26
davercc joined
03:27
molaf left
03:50
James-YeJ3TE48lO joined
|
|||
James-YeJ3TE48lO | utf8 ทำงานดีไหมครับ | 03:52 | |
03:58
Sqirrel left,
Sqirrel joined
03:59
Sqirrel_ joined,
Sqirrel left
04:02
Sqirrel joined,
Sqirrel_ left,
Sqirrel_ joined,
Sqirrel left
04:03
BenGoldberg left
04:05
ivanshmakov left
04:06
ivanshma` joined
04:09
xenoterracide__ left
04:11
James-YeJ3TE48lO left,
cognominal left,
lyda_ left,
Khisanth left,
ggoebel111116 left,
MilkmanDan left,
Exodist left,
japhb_ left,
TimToady left,
sjohnson left,
apejens left,
matija left,
bloonix left,
cosimo left,
frettled left,
thilp left,
robinsmidsrod left,
mtj_ left,
ChoHag left,
raydiak left,
mhasch left,
Possum left,
djanatyn left,
perigrin left,
ccverg left
04:19
xenoterracide__ joined
04:21
kaare__ left
04:22
cognominal joined,
lyda_ joined,
Khisanth joined,
MilkmanDan joined,
Exodist joined,
japhb_ joined,
TimToady joined,
Possum joined,
sjohnson joined,
apejens joined,
matija joined,
bloonix joined,
ggoebel111116 joined,
cosimo joined,
frettled joined,
thilp joined,
robinsmidsrod joined,
ChoHag joined,
mtj_ joined,
raydiak joined,
ccverg joined,
mhasch joined,
djanatyn joined,
perigrin joined
04:25
kaleem_ joined
04:27
lyda joined,
lyda_ left
04:31
rurban1 left
04:36
chenryn left
04:41
xenoterracide__ left
04:42
chenryn joined
|
|||
moritz | p6: say 'ทำงานดีไหมครับ'.chars | 04:48 | |
04:48
kaare__ joined
|
|||
camelia | rakudo-{parrot,jvm,moar} 77024f, niecza v24-109-g48a8de3: OUTPUT«14» | 04:48 | |
04:53
gfldex joined
05:01
James-YeJ3TE48lO joined
05:02
rurban1 joined
05:05
chenryn__ joined
05:06
rurban1 left,
hoverboard joined
05:09
chenryn__ left
05:12
[Sno] joined
05:15
xenoterracide__ joined
05:16
pdcawley left
05:21
James-YeJ3TE48lO left,
pdcawley joined
05:22
James-YeJ3TE48lO joined
05:25
kaleem_ left
05:26
xenoterracide__ left
05:32
rurban1 joined
05:36
rindolf joined,
rurban1 left
05:41
kaare__ is now known as kaare_
06:01
hoverboard is now known as moistcherry
06:02
ivanshma` is now known as ivanshmakov,
ivanshmakov left,
ivanshmakov joined
06:03
thou left
06:05
mutani joined
06:06
chenryn__ joined
06:07
mutani left
06:11
chenryn__ left
06:12
rindolf left
06:14
lizmat joined
|
|||
lizmat finally made it to Brussels | 06:16 | ||
06:20
davercc left
06:34
[Sno] left
|
|||
lizmat | .tell vendethiel-- please look at blog.timbunce.org/2010/07/16/java2p...d-whereto/ | 06:35 | |
yoleaux | lizmat: I'll pass your message to vendethiel--. | ||
06:42
moistcherry is now known as hoverboard
06:43
SamuraiJack joined
06:45
lizmat left
06:50
ingy left
06:51
hoverboard left
07:01
ingy joined
07:03
FROGGS joined
|
|||
FROGGS | o/ | 07:06 | |
07:07
chenryn__ joined
|
|||
tadzik | o/ | 07:07 | |
FROGGS reads blog.timbunce.org/2010/07/16/java2p...d-whereto/ | 07:08 | ||
07:10
atroxaper joined
07:11
zakharyas joined,
chenryn__ left
07:12
atroxaper left
07:14
sqirrel__ joined
|
|||
sergot | morning o/ | 07:14 | |
07:16
virtualsue joined
07:17
teodozjan joined
07:22
darutoko joined,
Isp-sec joined
07:24
anaeem1 joined
07:25
chenryn left
07:26
virtualsue left
07:28
anaeem1 left
07:30
virtualsue joined
07:35
rurban1 joined
|
|||
masak | a morn', a morn'! \o/ | 07:36 | |
<James-YeJ3TE48lO> utf8 ทำงานดีไหมครับ | |||
why yes, James, it does. | |||
it's our friend :) | 07:37 | ||
James-YeJ3TE48lO | Hehe, thanks. Do you read Thai? | ||
FROGGS | sort of... .chars is still wrong :o) | ||
07:39
rurban1 left,
anaeem1 joined
07:43
igorsutton joined
07:47
ivanshmakov left
|
|||
masak | James-YeJ3TE48lO: Google Translate is also my friend ;) | 07:50 | |
07:50
ivanshmakov joined
|
|||
James-YeJ3TE48lO | Haha, thought as much. :) | 07:50 | |
masak | "[...] we should note that the proverb about not putting all your eggs in one basket is *not* necessarily a sound engineering principle. The right answer depends on the margin of error and on the per-basket failure rate. It also greatly depends on the chance of correlated, uncorrelated, and anti-correlated basket failures. Sometimes the best way to get your eggs from point A to point B is to put them all in one basket and take really good care of that basket." | 07:51 | |
^ a really nice quote I just found at www.av8n.com/computer/htm/secure-random.htm | |||
07:51
anaeem1 left
|
|||
James-YeJ3TE48lO | Yes, it's certainly true of security and crypto primitives. | 07:51 | |
07:52
pecastro_ left,
dmol joined
07:54
anaeem1 joined
08:00
[Sno] joined
|
|||
masak | James-YeJ3TE48lO: so you're calling in from .th? | 08:01 | |
08:04
lelf joined
|
|||
James-YeJ3TE48lO | Yes ใช่ครับ | 08:04 | |
08:09
Alina-malina left,
Alina-malina joined
|
|||
masak | :) | 08:10 | |
08:14
anaeem1 left
08:19
ivanshmakov left,
ivanshmakov joined
08:21
brrt joined
08:22
donaldh joined
08:24
anaeem1_ joined
|
|||
FROGGS | jnthn: say we have a C struct that has a void * in it which will be represented as an OpaquePointer - how can we unpack that pointer later using a class? | 08:27 | |
08:28
anaeem1_ left
|
|||
FROGGS | it seems we'd need parts of nqp::nativecall($!rettype, self, nqp::getattr(nqp::decont($args), Capture, '$!list')) | 08:29 | |
so this could become its own op: result = MVM_nativecall_make_cstruct(tc, res_type, dcCallPointer(vm, body->entry_point)); | 08:31 | ||
08:31
sqirrel__ left
|
|||
jnthn | FROGGS: I think it'll need some kind of nqp::nativecast or so | 08:32 | |
08:32
fhelmberger joined
|
|||
FROGGS | (or the entirem switch statement, including int/Int/wahtever) | 08:33 | |
yes | |||
sergot | jnthn: what should we do if we have an function inside the struct? | ||
FROGGS .oO( cry? ) | |||
sergot | :) | ||
jnthn | sergot: Not immediately sure how we express that. | ||
FROGGS | jnthn: also, I'd like to see that OpaquePointer gistifies to: OpaquePointer<24982734>, so you see its mem address for debugging | 08:34 | |
08:35
rurban1 joined
|
|||
FROGGS | okay, who wants to implement nqp::nativecast(OpaquePointer, <Type>) ? :o) | 08:35 | |
08:37
anaeem1_ joined
08:38
anaeem1_ left
08:39
rurban1 left
08:40
dakkar joined,
dalek joined,
ChanServ sets mode: +v dalek
08:43
James-YeJ3TE48lO left,
anaeem1 joined,
anaeem1 left
|
|||
arnsholt | FROGGS: I don't really have the time to implement that ATM, but it should be pretty straightforward I think | 08:44 | |
Mostly a matter of hooking already existing functionality into a new op | |||
FROGGS | arnsholt: pssst, I wanna trick sergot in doing it :P | 08:46 | |
or I do it, should be a fairly small amount of work for one who has already implemented ops | 08:47 | ||
arnsholt | sergot: If your struct contains a function pointer, you'll have to implement support for function pointers first =) | 08:49 | |
FROGGS | perhaps something can be stolen from how callbacks work? | 08:50 | |
sergot | hmmm, I can try :) | ||
arnsholt | The existing callback stuff should have a fair amount of what's needed, yeah | ||
But storable function pointers are a bit fiddly, 'cause it's not obvious (to me anyways) what kind of type they should have | 08:51 | ||
sergot | challenge accepted ;)) | ||
arnsholt | The pointer type fiddling should be pretty straightforward though | 08:52 | |
(That's zavolaj #13, BTW =) | |||
teodozjan | hi, I would like to ask whether I'm the only person who has error while trying to compile parrot backend :) | 09:00 | |
xiaomiao | teodozjan: I have encountered an error too | 09:01 | |
teodozjan: tried with 6.2-6.5 parrot, they all don't want to cooperate | |||
09:02
pecastro joined
09:03
anaeem1 joined
|
|||
teodozjan | i've bisected it but i'm not sure it is real cause github.com/rakudo/rakudo/commit/f1...nt-6843467 | 09:03 | |
09:04
anaeem1 left,
anaeem1 joined
|
|||
jnthn | That would be a very strange patch to casue such a failure, given it's mostly just adding an extra condition on whether to apply an optimization (and means we apply it *less*) | 09:06 | |
09:08
chenryn__ joined
09:09
chenryn joined
|
|||
teodozjan | maybe it triggered something faulty | 09:09 | |
09:10
smls joined,
Su-Shee left
|
|||
masak | ++sergot # function pointers | 09:13 | |
09:13
chenryn__ left
|
|||
masak | a function pointer has type Func[Param1, Param2, RetVal], no? | 09:13 | |
at least conceptually. | |||
the same should hold for C. | 09:14 | ||
smls | "<FROGGS> sort of... .chars is still wrong :o)" -- I don't think it is | 09:16 | |
ดี and รั are two alphabet characters each: the bottom ones consonants, the top ones the vowels following them. | 09:17 | ||
(If I remember correctly) | |||
They just happen to be written on top of each other... :) | 09:18 | ||
ทำ is different: The bottom left part is the consonant, and the right+top parts together are the vowel character. | 09:20 | ||
FROGGS | smls: I just selected the text using firefox, and it looked like as if there where two codepoint pairs that were combined | ||
I counted 12 grapheme clusters by selecting the text | |||
smls | Well I don't know how Unicode defined chars, but that's how the Thai alphabet (as taught in Thai kindergarten) separates them | 09:21 | |
FROGGS | and .chars should tell you the amount of grapheme clusters, which should be identical to the *visible* characters | ||
09:26
silug left,
spider-mario joined
09:28
mls_ is now known as mls
09:35
tadzik left
09:36
rurban1 joined
09:37
silug joined
09:40
Possum left,
dylanwh left,
rurban1 left
|
|||
vendethiel-- | thanks lizmat | 09:40 | |
yoleaux | 06:35Z <lizmat> vendethiel--: please look at blog.timbunce.org/2010/07/16/java2p...d-whereto/ | ||
09:45
teodozjan left
09:46
pecastro left
09:47
teodozjan joined
09:53
denis_boyun joined
|
|||
vendethiel-- | not related though :( | 09:55 | |
09:55
vendethiel-- is now known as vendethiel
09:57
brrt left
10:01
pdcawley left
10:03
tadzik joined,
pecastro joined
10:09
Isp-sec left
|
|||
masak likes that today's topic seems to involve the Thai alphabet | 10:18 | ||
10:18
Sqirrel_ left
10:26
sqirrel joined
|
|||
masak | a good friend of mine turns 32 today. | 10:29 | |
I went to Wikipedia and discovered that 32 is a happy number. | |||
naturally, I had to implement a way to show this in Perl 6Ö | |||
naturally, I had to implement a way to show this in Perl 6: | |||
m: sub happy($n is copy) { $n = [+] $n.comb X** 2 until $n == 1 || (my %){$n}++; $n == 1 }; say happy 32 | |||
camelia | rakudo-moar 77024f: OUTPUT«True» | ||
masak | it was easier than I thought. | ||
jnthn | eww, look at that state :D | 10:30 | |
masak | note especially that it is *not in a .map* :P | 10:31 | |
jnthn | :P | ||
masak | yes, that's just a matter of taste. | 10:32 | |
10:37
rurban1 joined
10:38
kaleem_ joined
10:41
rurban1 left
10:45
grondilu left,
psch joined
|
|||
psch | hi #perl6 o/ | 10:45 | |
vendethiel: did you see day 03 from the 2013 advent calender? it has an example for calling java.util.zip.CRC32 | 10:48 | ||
vendethiel | psch: yeah, I saw it | 10:49 | |
10:50
zengargo1le joined
|
|||
colomon | m: gist.github.com/colomon/fea0ec14fbf3ad02c5ed | 10:50 | |
camelia | rakudo-moar 77024f: OUTPUT«gist not found» | ||
psch | vendethiel: but it didn't help? FWIW, the example doesn't even actually work for me. | ||
vendethiel | well, I don't even know how to link a jar for example | 10:51 | |
colomon | masak: gist.github.com/colomon/fea0ec14fbf3ad02c5ed | 10:52 | |
10:52
zengargoyle left
|
|||
vendethiel | psch: also, I'm on p62014.03-parrot, sooo... :) | 10:54 | |
masak | colomon: nice. | 10:55 | |
colomon: would 'is cached' work as well, instead of %memory ? | |||
colomon | masak: no, because of the %memory{$n} = False line | ||
masak | just saw that one. | ||
well, it *feels* like an eminently memoizable problem, except for the fact that it sometimes loops infinitely. | 10:56 | ||
colomon desperately wanted to make it is cached, mind you. | |||
10:56
pdcawley joined
10:57
anaeem1__ joined
|
|||
psch | vendethiel: clog says you asked about "jvm libs from perl6-jvm" yesterday, that's what I was refering to... :) | 10:57 | |
vendethiel | I mean, I can't test | ||
10:57
pdcawley left
10:58
pdcawley joined
10:59
anaeem1 left,
pdcawley left,
pdcawley_ joined
11:00
pdcawley_ left,
pdcawley joined
|
|||
colomon | masak: gist.github.com/colomon/adf4d949d1835730ba65 | 11:03 | |
masak: solutions keep getting longer and slower. time to stop and make breakfast | |||
11:05
lelf left
11:07
SamuraiJack left
|
|||
psch | vendethiel: gist.github.com/peschwa/0158083bc4e5613a6390 # as an example; as it says, it doesn't quite work as-is | 11:08 | |
so it's probably not something that should be showed around | |||
I don't understand the jvm compilation process (in general and for rakudo) enough to say why it's not enough to add the correct CLASSPATH | 11:09 | ||
11:11
erkan joined,
erkan left,
erkan joined
11:13
amkrankruleuen left
11:14
amkrankruleuen joined
|
|||
vendethiel | m: say 'FOO1;2;3' ~~ / :r ^ 'FOO' $<id>=(\d) ** 3 % ';' $ / | 11:18 | |
camelia | rakudo-moar 77024f: OUTPUT«「FOO1;2;3」 id => 「1」 id => 「2」 id => 「3」» | ||
vendethiel | m: 'FOO1;2;3' ~~ / :r ^ 'FOO' $<id>=(\d) ** 3 % ';' $ /; say $/<id>.list>>.ast; | 11:19 | |
camelia | rakudo-moar 77024f: OUTPUT«(Any) (Any) (Any)» | ||
11:20
chenryn left
|
|||
vendethiel | >>.Num it is then. | 11:23 | |
FROGGS | right, there is nothing in the .ast (called .made now), as long as you don't 'make' anything | ||
11:26
vendethiel left
11:27
vendethiel joined
11:30
brrt joined
11:31
chenryn joined
11:37
rurban1 joined
|
|||
vendethiel | m: my ($a, $b, *) = 1..*; say $a | 11:38 | |
camelia | rakudo-moar 77024f: OUTPUT«===SORRY!=== Error while compiling /tmp/bUXHGDClquMalformed parameterat /tmp/bUXHGDClqu:1------> my ($a, $b, ⏏*) = 1..*; say $a expecting any of: scoped declarator formal parameter…» | ||
vendethiel | m: for ({a => 1}, {a => 50}, {a => 60}) -> $a { say $a } | 11:40 | |
camelia | rakudo-moar 77024f: OUTPUT«{"a" => 1}{"a" => 50}{"a" => 60}» | ||
vendethiel | m: for ({a => 1}, {a => 50}, {a => 60}) -> $a { say $a<a> } | ||
camelia | rakudo-moar 77024f: OUTPUT«15060» | ||
11:40
anaeem1__ left
|
|||
ChoHag | Does calling callsame twice do Bad Things? | 11:40 | |
11:40
Alina-malina left
11:42
rurban1 left
|
|||
moritz | I sure hope not | 11:43 | |
ChoHag | Just checking. | 11:44 | |
jnthn really can't remember how stateful iterating the candidate list is... | |||
11:45
chenryn left
11:50
lelf joined
|
|||
moritz | m: class A { method x() { 42 } }; class B is A { method x() { say callsame; say callsame; } }; B.new.x | 11:54 | |
camelia | rakudo-moar 77024f: OUTPUT«42Nil» | ||
moritz | bug (IMHO) | ||
11:54
LLamaRider joined
|
|||
jnthn | Not sure. | 11:55 | |
Can we change that without breaking lastcall? | |||
moritz | I have no idea | ||
jnthn | Hm, perhaps can | 11:57 | |
It'll involve more copying stuff, I guess... | |||
11:57
Alina-malina joined
|
|||
ChoHag | If I wanted to create a magic Int, how would I do it? Class MagicInt is Int { ... }? Then how can I create a MagicInt attribute which coerces an Int to a MagicInt? | 12:00 | |
masak submits rakudobug | 12:02 | ||
12:03
igorsutton left
|
|||
awwaiid | How does one choose between "my $x = {a => 1}" and "my %x = {a => 1}" ? | 12:04 | |
12:04
igorsutton joined
|
|||
awwaiid | and is that decision any different for a &x vs $x for storing a lambda? | 12:04 | |
moritz | awwaiid: there are two answers (for the % case) | ||
the first is that % does a type check, so if you want type checks, go with % | |||
the second is that % flattens, and $ doesn't | 12:05 | ||
awwaiid | right, type check is a clear answer | ||
ok, flatten, right | |||
12:05
virtualsue left
|
|||
moritz | the type check applies also to & variables (which don't flatten) | 12:05 | |
awwaiid | what is a simple example of that type check happening? | 12:06 | |
moritz | m: my %h := 42; | ||
camelia | rakudo-moar 77024f: OUTPUT«Type check failed in binding; expected 'Associative' but got 'Int' in any bind_error at src/vm/moar/Perl6/Ops.nqp:217 in block at /tmp/XKGM0otdkw:1» | ||
moritz | oh, third point | ||
12:06
kaleem_ left
|
|||
moritz | assignment to % variables is coercing | 12:07 | |
awwaiid | oh yes, I always forget about := | ||
moritz | m: my %h = a => 1, b => 2; say %h.perl; # the RHS is a Parcel, the LHS an array | ||
camelia | rakudo-moar 77024f: OUTPUT«("a" => 1, "b" => 2).hash» | ||
moritz | s/array/hash/ | ||
awwaiid | ok, that helps. I'm giving my talk on Rakudo tonight, and during prep keep imagining some of these sorts of questions :) | 12:08 | |
12:14
virtualsue joined
12:15
chenryn joined
12:19
jnap joined
12:21
prevost joined
12:23
lelf left
|
|||
masak | awwaiid++ | 12:31 | |
12:33
ClarusCogitatio left
12:36
guru joined,
guru is now known as Guest69569
12:37
Guest69569 is now known as ajr_
12:38
chenryn left
12:39
kaare_ left
12:40
ClarusCogitatio joined
12:41
vendethiel left,
vendethiel joined
12:45
brrt left
12:47
kurahaupo joined
12:49
xenoterracide__ joined
12:54
xenoterracide__ left,
xenoterracide__ joined
12:59
fhelmberger_ joined,
fhelmberger left
13:00
xenoterracide__ left,
zengargo1le left
13:04
brrt joined
13:05
raiph joined
13:06
bluescreen10 joined
13:07
rurban1 joined
13:08
zengargoyle joined
13:10
ajr_ left,
virtualsue left
13:16
molaf joined
|
|||
vendethiel is trying to help his friend play w/ Java interop | 13:19 | ||
It Works (TM) (but it's a bit ugly :P) | |||
13:21
virtualsue joined
13:24
LLamaRider left
13:30
anaeem1 joined
13:33
lelf joined
13:34
virtualsue left
13:36
virtualsue joined
13:38
rurban1 left,
chenryn joined
|
|||
FROGGS | vendethiel: coat it with sugar | 13:39 | |
vendethiel | well, that's not easy | ||
13:40
anaeem1 left
|
|||
ChoHag | Sugar makes you fat. | 13:41 | |
13:42
chenryn left
13:43
sqirrel left
|
|||
FROGGS | ChoHag: there is nothing wrong with being fat | 13:44 | |
ChoHag | Apart from heart disease. | ||
And never stairs. | |||
s/never// | |||
13:45
kaare_ joined
|
|||
ChoHag | And summer insulation. | 13:45 | |
I tried being fat. Not doing that again. | 13:46 | ||
13:47
btyler joined
|
|||
FROGGS | :o) | 13:48 | |
13:50
James-YeJ3TE48lO joined
13:51
virtualsue left
13:53
treehug88 joined
13:54
James-YeJ3TE48lO left
14:01
woolfy joined
14:04
SamuraiJack joined,
vendethiel left
14:06
vendethiel joined,
kaleem_ joined
|
|||
brrt wonders, and has decided not too, discuss the evidence on sugar-making-you-fat | 14:12 | ||
FROGGS | *g* | ||
No! it is not the sugar that is making you fat! You eating it makes you fat! | 14:13 | ||
:P | |||
tadzik | well, the law of energy conservation surely has something to do with getting fat | 14:15 | |
masak | tadzik: and then there's that group that say "you can't apply *physics* to a biological organism like that!" | 14:16 | |
14:16
kaleem_ left
|
|||
tadzik | :) | 14:17 | |
masak | tadzik: as if physics somehow ceased to apply inside bodies. | ||
14:17
carlin joined,
rurban1 joined
|
|||
tadzik | don't forget, there's the spiritual part that science can't explain | 14:19 | |
www.youtube.com/watch?v=HhGuXCuDb1U explained here | |||
14:21
kaleem_ joined
14:28
hoverboard joined
14:32
kaare_ left
14:33
dylanwh joined
|
|||
zengargoyle | biology is on a sliding scale. if it were physics E=mc^2 and 1g of food would sustain many lifetimes. :P | 14:33 | |
moritz | as long as you don't want to build muscles with that energy alone :-) | 14:34 | |
then you'd be limited to 1g of new body tissue :-) | |||
zengargoyle | if it were calories in vs out it would be easy. but it's also non-energy processes like all that non-calorie water you drink. | ||
so like 1g of calorie food + 1kg of non-calorie water = ~.5kg fat | 14:35 | ||
*bogus numbers* | |||
14:37
thou joined
|
|||
brrt | tadzik - and i'm with those people | 14:39 | |
Ulti | plus plenty of stuff is energy dense but humans can't process it, plant fibre we burn it for fuel to heat a home but it does nothing going through you | ||
14:39
chenryn joined
|
|||
ChoHag | Are return signature types implemented? | 14:39 | |
moritz | m: sub f(--> Int) { "str" }; f() | 14:40 | |
camelia | rakudo-moar 77024f: OUTPUT«Type check failed for return value; expected 'Int' but got 'Str' in any return_error at src/vm/moar/Perl6/Ops.nqp:598 in block at /tmp/HFhuHAVYBJ:1» | ||
zengargoyle | yeah, think it might be along the lines of we can only get energy from low total energy processes | ||
moritz | and that's good for us | ||
zengargoyle | otherwise we'd be prone to accidental explosion or something. :) | ||
moritz | aye | ||
brrt | zengargoyle - don't forget that drinking water at 15deg celsius needs to be 'heated' to 37 degrees celsius and thus actually costs energy | 14:41 | |
moritz thinks of a rod of burning Magnesia | |||
14:41
James-YeJ3TE48lO joined
|
|||
zengargoyle | maybe that's how vampires work. | 14:41 | |
ChoHag | Where does the --> go wrt the rest of the signature? | ||
moritz | ChoHag: after them | ||
ChoHag | No comma? | ||
moritz | m: sub f(Int --> Int) { "str" }; f(52) | ||
camelia | rakudo-moar 77024f: OUTPUT«Type check failed for return value; expected 'Int' but got 'Str' in any return_error at src/vm/moar/Perl6/Ops.nqp:598 in block at /tmp/NSk9TrUs8z:1» | ||
moritz | m: sub f(Int $x --> Int) { say $x; "str" }; f(52) | 14:42 | |
camelia | rakudo-moar 77024f: OUTPUT«52Type check failed for return value; expected 'Int' but got 'Str' in any return_error at src/vm/moar/Perl6/Ops.nqp:598 in sub f at /tmp/TqsVTPPQHY:1 in block at /tmp/TqsVTPPQHY:1» | ||
14:44
chenryn left
14:45
dwarring left
|
|||
mr-foobar | hey all, want to try perl6 on the jvm on mac. any star release for it ? | 14:45 | |
moritz | not yet | 14:46 | |
well, the last one contains the code for the JVM, but some of the modules don't work | |||
mr-foobar | anything I can do to test ? | 14:47 | |
i am interested in calling java from pl6 | 14:48 | ||
moritz | I have no idea; I hope somebody else ( FROGGS? [Coke]? ) knows the current state and where to start | 14:50 | |
FROGGS | there are issues as seen in the daily star build/test reports | 14:51 | |
mr-foobar | oh, how about moarvm ? | ||
star release ? | |||
FROGGS | moarvm is clean and can be released easily | ||
mr-foobar one liner installers ftw ! | 14:52 | ||
14:59
dylanwh left
15:00
dylanwh joined
15:01
dylanwh left,
dylanwh joined
15:04
dylanwh left
15:06
dylanwh joined
15:07
denis_boyun left
15:09
firefish left
15:11
chenryn joined
15:15
dylanwh left
15:16
chenryn left
|
|||
ChoHag | How do I set up a coercion from one type to another? So that my Foo $bar = Baz.new can be made to work? | 15:16 | |
15:17
dylanwh joined,
dylanwh left
15:18
dylanwh joined
15:20
dylanwh left,
dayangkun left,
dylanwh joined
15:22
raiph left
15:25
dylanwh left
15:26
dylanwh joined
|
|||
jnthn | ChoHag: The Foo is a type *constraint*. The thing you assign has to match. It's not a coercion request. my Foo() $bar = ...; is the proposed syntax for a type that coerces to Foo. | 15:26 | |
15:27
brrt left,
[Sno] left
15:30
raiph joined
|
|||
sjn reminds that YAPC::EU talk submission deadline is July 1st (today) | 15:31 | ||
jnthn | :) | 15:32 | |
jnthn submat two talks :) | |||
Only once in the last 9 YAPC::EUs did all my submissions get rejected, so I'm fairly hopeful one will make the cut. :) | 15:34 | ||
15:35
FROGGS left
|
|||
masak submat one, ponders whether to do a second | 15:36 | ||
15:36
zakharyas left
|
|||
colomon | what will you guys' talks be on? (assuming you are allowed to make them) | 15:37 | |
ChoHag | So if Baz is an existing class, can I create a role Foo which is automatically mixed into any Baz put into $bar? | 15:39 | |
Or do I just have to wait for my Foo() $bar to work? | 15:40 | ||
psch | m: class Baz { method baz { "baz" } }; my $bar = Baz.new does role { method foo { "foo" } }; $bar.foo.say # not quite the same | 15:42 | |
camelia | rakudo-moar 77024f: OUTPUT«foo» | ||
psch | i don't think you can stick the (in this case anon) role onto the container itself | 15:43 | |
mr-foobar | "legal issues as per freenode" | 15:44 | |
sjn | colomon: mine is called "Creative Perlmongership" :) | 15:46 | |
colomon | sjn++ | ||
sjn wonders if he should rather call it "Baeudacious Perlmongitude" or something like that | 15:47 | ||
15:52
igorsutton left
15:54
cooper_ left,
kaare_ joined,
kaleem_ left
16:01
FROGGS joined
16:05
sqirrel joined
16:07
teodozjan left,
fhelmberger_ left
|
|||
masak | colomon: mine is called "GOTO considered awesome", and is about more or less insane applications of userland CPS transforms. | 16:10 | |
16:12
chenryn joined
|
|||
jnthn | ChoHag: Have to wait, I suspect...though I'd also consider whether there's not a more elegant approach to whatever you're trying to achieve... | 16:15 | |
ChoHag | Well in the immediate case I'm just trying to find new ways of breaking perl so that I can examine the pieces. | ||
16:17
chenryn left
|
|||
colomon | masak++ # awesome | 16:18 | |
colomon remembers the bad old days of programming with goto…. | |||
jnthn | oh, and talks... I submitted one about the performance work in Rakudo and MoarVM (including spesh), and another about the primitives Perl 6 provides for asynchronous programming. | 16:19 | |
colomon | jnthn++ | 16:20 | |
colomon imagines the "jnthn surprise" for performance work could be disturbingly awesome... | 16:21 | ||
carlin | m: use MONKEY_TYPING; augment class Rat { method cieling { die "'i' before 'e' except after 'c', except where the sound is 'ee' and except where it's just plain weird" } }; say 4.2.cieling; | 16:24 | |
16:24
erdic left
|
|||
camelia | rakudo-moar 77024f: OUTPUT«'i' before 'e' except after 'c', except where the sound is 'ee' and except where it's just plain weird in method cieling at /tmp/NZpTbe6xYT:1 in block at /tmp/NZpTbe6xYT:1» | 16:24 | |
carlin | that should be in core | ||
or maybe I should remember how to spell ceiling | |||
16:24
erdic joined
|
|||
flussence | m: say cieling 4.2 | 16:25 | |
camelia | rakudo-moar 77024f: OUTPUT«===SORRY!=== Error while compiling /tmp/AX0X_fzxRfUndeclared routine: cieling used at line 1. Did you mean 'ceiling'?» | ||
flussence | it should probably do that for methods... | ||
jnthn | m: say 4.2.cieling | ||
camelia | rakudo-moar 77024f: OUTPUT«No such method 'cieling' for invocant of type 'Rat' in block at /tmp/FBQC56Hl21:1» | ||
jnthn | Yeah, should be possible | ||
16:27
silug left
16:30
pecastro left
16:37
silug joined
16:38
spider-mario left
16:39
jlaire joined
16:40
brrt joined
16:46
ren1us joined
|
|||
ren1us | out of pure curiosity, is there a particularly reason why lists don't seem to support deleting an element other than at the ends? | 16:46 | |
masak | ren1us: .splice | 16:47 | |
ren1us | I'll go back to my cave of being an idiot. Thank you. | 16:48 | |
16:48
spider-mario joined
|
|||
carlin | an idiot is someone who doesn't know something you learned yesterday :) | 16:50 | |
jnthn | carlin: Do you know what I learned yesterday? | 16:52 | |
16:53
sqirrel left
|
|||
jnthn | .oO( darn, didn't fall for it :) ) |
16:55 | |
16:55
pdcawley left
|
|||
carlin | jnthn: I'll bite, what did you learn yesterday? | 16:55 | |
16:55
virtualsue joined
|
|||
jnthn | See, you don't know. :P | 16:56 | |
moritz | => idiot :-) | ||
jnthn | :D | ||
carlin | heh | ||
jnthn | Sorry, was too good to resist. :) | ||
carlin | :) | 16:57 | |
16:58
dakkar left
|
|||
carlin | my point was ren1us++ now knows about .splice and is therefore no longer an idiot | 16:59 | |
see also: xkcd 1053 | 17:00 | ||
17:00
brrt left,
Possum joined
17:05
donaldh left
17:08
SamuraiJack left
17:12
kaleem_ joined
17:13
chenryn joined,
telex left
17:14
telex joined
17:17
chenryn left,
[Sno] joined
17:18
vendethiel left
17:20
vendethiel joined
17:21
jnap left,
rindolf joined
17:23
kaleem_ left
17:28
jnap joined
17:29
erdic left
17:30
pdcawley joined
17:36
erdic joined
17:50
larks left
|
|||
masak | it's the people who never ask probing questions and never get interesting answers we should feel sorry for ;) | 17:55 | |
17:55
itz_ joined
18:00
pdcawley left
|
|||
FROGGS | jnthn: there? | 18:00 | |
18:01
xinming_ joined
|
|||
FROGGS | jnthn: the nativecast thingy works for some things now and I wonder... should that be available as a method on OpaquePointer? | 18:02 | |
like .cast-to(MyClass) ? | |||
18:04
xinming left
18:05
brrt joined
18:06
Sqirrel joined
18:07
virtualsue left
18:10
raiph left
|
|||
masak | m: sub happy($n is copy) { $n = [+] $n.comb X** 2 until $n == 1 || (my %){$n}++; $n == 1 }; say happy 32 | 18:11 | |
camelia | rakudo-moar 77024f: OUTPUT«True» | ||
masak | m: say (sort gather for 2..8 -> $x { for $x..8 -> $y { take $x ** $y + $y ** $x } })[^10] | 18:12 | |
camelia | rakudo-moar 77024f: OUTPUT«8 17 32 54 57 100 145 177 320 368» | ||
masak | ...I'm a little bothered by the two 8s in that code. | ||
they're the lowest constant I can put there to get the right first 10 terms, but I found that through trial and error. | |||
maybe someone can think of some code that doesn't involve them? :) | 18:13 | ||
18:14
chenryn joined
|
|||
jnthn | .oO( 2..^9 ) |
18:14 | |
masak | actually, this reminds me of strangelyconsistent.org/blog/t2-sums-of-cubes | ||
also, this could probably find quite an elegant (if longer) solution using Supplies. | 18:15 | ||
18:15
lizmat joined
18:18
ren1us left
18:19
chenryn left
18:25
virtualsue joined
18:40
denis_boyun joined
|
|||
dalek | kudo/nom: e371c34 | (Elizabeth Mattijsen)++ | src/core/Method.pm: Implement "is cached" on methods properly |
18:42 | |
lizmat is sorta back, but at the NLPM meeting | |||
masak | lizmat++ # 'is cached' on methods | 18:44 | |
colomon | I dunno if I agree that's a proper fix or not. | 18:45 | |
was there more discussion on it on IRC after the initial disucssion yesterday? | 18:46 | ||
masak | oh, I didn't check the patch. | 18:47 | |
masak does so | |||
using $self.WHICH is what I'd do, too. | |||
so +1 on that. | |||
the question I *didn't* ask yesterday -- but do now -- is: why are we not using .WHICH for all the parameters? | 18:48 | ||
colomon | If I understand it correctly, now it caches on WHICH instead of the value of the attributes of self | ||
masak | we should be using .WHICH for all kinds of hashing, right? and caching does hashing. | ||
I don't think .gist is up to the task in general. | |||
18:50
Isp-sec joined
|
|||
colomon | masak: it seems to me (re self) there are two cases: | 18:51 | |
1) The object is immutable. In this case using .WHICH means we don't get possible caching when two different objects of the type have the same attribute values. | 18:52 | ||
2) The object is mutable. In this case, using only .WHICH means we don't even notice when the values of the attributres have changed. | 18:53 | ||
…. errrr .... | 18:55 | ||
but wait, immutable objects with the same attributes are supposed to have the same WHICH, aren't they? | |||
18:56
teodozjan joined
|
|||
colomon | So my objection #1 goes away | 18:56 | |
lizmat | I was actually thinking about .WHICH as well, but that would have meant a recursive .WHICH implementation | 18:57 | |
18:59
virtualsue left
|
|||
lizmat is not completely clear yet: sleep depravation does that to you | 19:01 | ||
lizmat also wonders whether she missed TimToady's ruling on the behaviour of: | 19:03 | ||
my %hash = { a => 1 }; | |||
being the same as: | |||
my %hash = ( a => 1 ); | |||
19:03
treehug88 left
|
|||
lizmat | (which I think is wrong) | 19:03 | |
19:04
prevost left
|
|||
masak | colomon: IMO, people shouldn't do 'is cached' on functions which take mutable arguments. | 19:06 | |
colomon | masak: including classes which are mutable? | ||
masak | well, 'self' may be the exception here. haven't thought about it. | 19:08 | |
colomon | self is what I'm talking about. | ||
masak | but I really don't think so. | ||
if 'self' is an object which mutates, then we're in the same kind of trouble as if other params mutate. | |||
lizmat | ah, that would be the reason I used .gist :-) | 19:09 | |
masak | IMO it's a case of "things *may* come out right, but really all bets are off if you have mutability" | ||
lizmat | supposedly, the .gist should reflect any changes to self | ||
colomon | right, if you don't care about mutable things, then .gist is maybe better than .WHiCH | ||
masak | so I vote for using .WHICH throughout and then conditioning users to dislike combining 'is cached' (or really any kind of hashing) with mutability. | 19:10 | |
colomon | er,, or am I thinking about that backwards | ||
masak | that's really the only long-term sane option. | ||
using .gist is going down the wrong road, trying to compensate for insanity which can't really be compensated for. | |||
19:12
kurahaupo left
|
|||
lizmat | S06:2121: A given C<Capture> would always calculate the same return value. That is, there is no state hidden within the dynamic scope of the call. | 19:12 | |
synopsebot | Link: perlcabal.org/syn/S06.html#line_2121 | ||
rurban | src/gen/p-CORE.setting.pir:147823 fails with parrot (handler.'handle_types'(.CONTROL_LOOP_LAST) since some time. | 19:13 | |
19:13
darutoko left
|
|||
rurban | looks like the .CONTROL_LOOP_LAST nqp-p constants are gone on | 19:14 | |
19:14
denis_boyun left
|
|||
lizmat | actually, the spec indicates that we don't need special handling for "is cached" for methods | 19:14 | |
anyway, that's how I read it | 19:15 | ||
FROGGS | rurban: the constants were removed? | ||
19:15
denis_boyun__ joined
|
|||
rurban | I see them in nqp, but rakudo doesn't see them. | 19:15 | |
nqp/install/bin/parrot -o CORE.setting.pbc src/gen/p-CORE.setting.pir | 19:16 | ||
error:imcc:syntax error, unexpected DOT, expecting '(' ('.') | |||
in file 'src/gen/p-CORE.setting.pir' line 147823 | |||
FROGGS | that sounds more like there is something bogus before that line | ||
rurban | It worked a week before YAPC | ||
colomon | masak: I think the biggest problem I'm having with your logic is I see .WHICH as a way of tracking mutable objects, whereas here you want to switch to using it while culturally banning using it in this context with mutable objects. | 19:18 | |
lizmat | well, maybe we need a clearer spec, then :-) | 19:20 | |
colomon | lizmat: I'd argue the specs there say we *have* to pay attention to mutable state. | ||
or maybe not. | 19:21 | ||
clearer spec++ | |||
lizmat is too tired to think straight about this right now | |||
m: class A { has $.foo }; A.new(:foo<bar>).gist.say # makes me think a separate "is cached" for methods is wrong | 19:28 | ||
camelia | rakudo-moar 77024f: OUTPUT«A.new(foo => "bar")» | ||
lizmat is going to revert | 19:29 | ||
dalek | kudo/nom: 71eab81 | (Elizabeth Mattijsen)++ | src/core/Method.pm: Only implement things when sufficiently awake This reverts commit e371c34206800c777fb7e06e11427acbd492a0f5. |
19:30 | |
colomon is not sure he understands lizmat++'s reasoning there | |||
lizmat | masak used the example with class A {} and two A.new's | ||
TimToady | .WHICH should never change on a mutable container, because it's container identity, not contents | 19:31 | |
lizmat | if there are no attributes, the class A is in fact value based, as you the two objects have identical behaviour | ||
rurban | FROGGS: It's a problem in your 196b4ff55e "implement labeled loops and throwing of labels as payload" | ||
lizmat | TimToady: agree | 19:32 | |
19:33
kolbe joined
|
|||
colomon | it seems to me that "is cached" should indeed be for logically non-mutable things. but … it's not clear me that set of things is the same as the set of things with stable WHICH | 19:33 | |
19:33
kolbe left
|
|||
TimToady | possibly 'is cached' should decontainerize, then it can base itself off of value identities | 19:33 | |
FROGGS | rurban: ohh... but that was applied way earlier... | 19:34 | |
FROGGS looks | |||
TimToady | much like we can test a value for boolean without losing the object: if $x -> $obj { ... } | ||
lizmat | TimToady: do you mean on methods? or on subs? or both? | 19:35 | |
TimToady | on any parameter that gets a mutable container rather than an imutable object | ||
that is, 'is cached' should perhaps try for 'eqv' semantics, snapshotting the current value of containers | 19:36 | ||
FROGGS | rurban: is that a problem? handler.'handle_types'(.CONTROL_LOOP_LAST, .CONTROL_LOOP_NEXT, .CONTROL_LOOP_REDO, 512, 513, 514) | ||
TimToady | to put it another way, 'is cached' should probably pretend everything is passed by value rather than by reference | ||
lizmat | which is in a way what .gist in practice usually does ? | 19:37 | |
TimToady | .gist should be considered completely unreliable for identity | ||
"gist" means a summary | |||
19:38
xenowoolfy joined
|
|||
FROGGS | but in a way .gist is also more about values | 19:38 | |
TimToady | gist is designed to allow information loss, unlike .Str | ||
lizmat | so, more like .perl then :-) | ||
assuming .perl can roundtrip with EVAL | |||
TimToady | well, currently .perl loses a heck of a lot of info as well | 19:39 | |
lizmat | which breaks the roundtripping | ||
but if roundtripping would work, would .perl be a good candidate for the cache key ? | |||
rurban | FROGGS: Yes. the problem is the seperation of Q:PIRT blocks for !$labels in MapIter.pm | 19:40 | |
I moved the handler to the local block, and now it works | |||
moritz still thinks that .WHICH would make the best cache key | |||
TimToady | lizmat: it wouldn't be bad, though I tend to think of eqv semantics as dealing in serializations of a more dense nature | ||
lizmat | then perhaps the serialization of the structure should be the key ? | 19:41 | |
TimToady | I believe I said something to that effect when it was first being worked on...but maybe I'm confabulating... | 19:42 | |
lizmat will need serialization before long for CURL::Installation anyway... | |||
TimToady | there is the possibility that someone would want to cache based on container identity rather than contents, but it feels like a marginal use case to me | ||
FROGGS | rurban: still weird that it breaks now | 19:43 | |
TimToady | except for 'self', it should generally be clear from the parameter declaration whether reference or value semantics are intended | 19:44 | |
19:45
prevost joined
|
|||
rurban | FROGGS: Well, it has to bind the used .local pmc handler from the previous block for no good reason | 19:45 | |
TimToady | so 'is cached' on a method would need either to declare the invocant explicitly as non-mutable, or we just force deep value semantics all the time, and let the people who want object identity write their own caches | ||
FROGGS | rurban: I'll rework that code then | 19:46 | |
rurban: thanks for hunting it down | |||
lizmat tries to grok TimToady's words | |||
TimToady | or, another idea, 'is cached' keeps a separate cache in each object... | ||
trouble is that self is naturally mutable | 19:47 | ||
we assume it's declared 'is rw' basically | |||
lizmat | which is basically forcing self.WHICH, which I just removed :-) | ||
TimToady | so either we snapshot the object for eqv semantics (could be very expensive), or we assume they want shallow identity semantics, and each object basically keeps its own cache without considering its own attribute values | 19:48 | |
or we just say 'is cached' only makes sense on functions, not methods | 19:49 | ||
lizmat | unless the class has its own .WHICH (like Bag/Set/Mix) | ||
that depends on the values of the attributes | |||
TimToady | yes, those are value types, not object types | ||
(the immutable ones) | 19:50 | ||
rurban | FROGGS: gist.github.com/rurban/b64f609fdd3c78aeb79c | ||
FROGGS: But it's still not working | 19:51 | ||
19:52
kurahaupo joined
|
|||
TimToady | lizmat: I'd be inclined to agree with you on my %hash = { a => 1 }; except that it's obviously an odd number of values, so it should either dwim or carp. | 19:52 | |
lizmat | what would be DWIM? | 19:53 | |
flatten ? | |||
TimToady | assuming | | ||
if you really want to put a hash in a hash, you can always say key => { a => 1 } explicitly | 19:54 | ||
lizmat | my %h{Any} = ( $%a, $%b ) # would that flatten ? | ||
TimToady | well, a list assigment will erase parens, so it's just like = $%a, $%b | ||
but why would you write that if you meant: = $%a => $%b | 19:55 | ||
lizmat | m: my %a = a=>1; my %b = b=>2; my %h = ($%a, $%b); say %h.perl # so this is wrong? | ||
camelia | rakudo-moar 77024f: OUTPUT«("a" => 1, "b" => 2).hash» | ||
19:56
Sqirrel left
|
|||
FROGGS | seems correct | 19:56 | |
TimToady | looks correct by the dwim interpretation | ||
m: my %a = a=>1; my %b = b=>2; my %h{Any} = %a => %b; say %h.perl | 19:57 | ||
camelia | rakudo-moar 77024f: OUTPUT«Hash[Any,Any].new({"a" => 1} => {"b" => 2})» | ||
lizmat | fwiw, that has always been a WAT to me | ||
TimToady | that looks correct too | ||
and what you'd write if you really mean to map one hash to another | 19:58 | ||
lizmat | there is no ambiguity there because of the Pair | ||
FROGGS | is that Any,Any for k and v? | ||
lizmat | v is by default Any | ||
TimToady | indeed, so why would anyone write $ ever? | ||
unless they were hoping a , would turn into a => magically? | 19:59 | ||
lizmat | m: my %h = <a 1 b 2>; say %h.perl # magic => | ||
camelia | rakudo-moar 77024f: OUTPUT«("b" => "2", "a" => "1").hash» | ||
19:59
virtualsue joined
|
|||
lizmat | so, yes, :-) | 20:00 | |
TimToady | I don't think requiring => in the case of %h{Any} is terrible. | 20:01 | |
lizmat | well, it feels like too much DWIM to me, and a big WAT | 20:02 | |
but if that's the way we're going to do this, then I can undo / change a bunch of tests that are waiting on a decision on this | |||
TimToady | m: my $a = set <a b>; my $b = set <c d>; my %h{Any} = $a, $b; say %h.perl | 20:03 | |
camelia | rakudo-moar 77024f: OUTPUT«Hash[Any,Any].new(set("a","b") => set("c","d"))» | ||
TimToady | okay, sets behave like items, and don't autoflatted, which I think is good | ||
lizmat | m: my $a = bag <a b b>; my $b = bag <c d d>; my %h{Any} = $a, $b; say %h.perl | 20:04 | |
camelia | rakudo-moar 77024f: OUTPUT«Hash[Any,Any].new(("a"=>1,"b"=>2).Bag => ("c"=>1,"d"=>2).Bag)» | ||
lizmat | and for Bags? | ||
TimToady | that also looks correct | ||
lizmat | so why would that not work for hashes like that ? | ||
m: my $a = { a => 1 }; my $b = { b => 2 }; my %h{Any} = $a, $b; say %h.perl | 20:05 | ||
camelia | rakudo-moar 77024f: OUTPUT«Hash[Any,Any].new("a" => 1, "b" => 2)» | ||
TimToady | because people want to say my %a = %b; and have it work | ||
lizmat | but that would work... | ||
because %b would flatten | 20:06 | ||
20:06
itz_ left
|
|||
jnthn | Wow...lot of backlog... | 20:06 | |
TimToady | well, as I said, we could also warn them on odd number of elements | ||
lizmat | my %a = $b; | ||
it does, actually failes | |||
*fails | |||
m: my %h = 1 | 20:07 | ||
camelia | rakudo-moar 77024f: OUTPUT«Odd number of elements found where hash expected in method STORE at src/gen/m-CORE.setting:9423 in block at /tmp/VpApgRDoWF:1» | ||
TimToady | hmm, is a hash really expected there? | ||
seems LTA | |||
s/hash/hash initializer/ | 20:08 | ||
20:08
anaeem1 joined
|
|||
jnthn | Taht'd be better | 20:08 | |
dalek | kudo/nom: 5613bea | (Elizabeth Mattijsen)++ | src/core/Exception.pm: s/hash/hash initializer/ |
20:09 | |
lizmat | done | ||
20:09
anaeem1 left
20:10
Isp-sec left,
brrt left
20:14
xenowoolfy left,
steve____ joined
20:15
steve____ is now known as itz_,
xenowoolfy joined,
itz_ left
20:18
itz_ joined
|
|||
lizmat | I think the current %c = $%a, $%b is inconsistent with: | 20:18 | |
m: my @a = <a b c>; my @b = <d e f>; my @c = $@a, $@b; say @c.perl | |||
camelia | rakudo-moar 77024f: OUTPUT«Array.new(["a", "b", "c"], ["d", "e", "f"])» | ||
lizmat | feels to me $%a, $%b is going to be a WAT that is going to be hard to explain to Perl6 newbies | 20:19 | |
like changing sigils | |||
in p5 | |||
20:25
rindolf left
|
|||
FROGGS | so you say a $%a should not "flatten" into a pair? | 20:25 | |
lizmat | indeed... $ itemizes | ||
like with arrays | 20:26 | ||
also visually: | |||
m: my $a = { a => 1 }; my $b = { b => 2 }; my %h{Any} = $a, $b; say %h.perl | |||
camelia | rakudo-moar 77024f: OUTPUT«Hash[Any,Any].new("b" => 2, "a" => 1)» | ||
lizmat | seeing 2 scalars would lead you to expect automatic pairing | ||
just because they happen to contain hashes, they flatten | 20:27 | ||
20:27
virtualsue left
|
|||
lizmat | m: my $a = [<a b>]; my $b = [<b c>]; my @a = $a, $b; say @a.perl | 20:27 | |
camelia | rakudo-moar 77024f: OUTPUT«Array.new(["a", "b"], ["b", "c"])» | ||
lizmat | it does not flatten in this case | ||
m: my $a = [<a 1 b>]; my $b = [<2>]; my %a = $a, $b; say %a.perl | 20:28 | ||
camelia | rakudo-moar 77024f: OUTPUT«("a 1 b" => ["2"]).hash» | ||
lizmat | I would argue that itemized hashes shouldn't flatten, just like itemized arrays don't | 20:30 | |
20:30
xenowoolfy left
|
|||
jnthn | Yes, I'm surprised to see a { ... } or a $a flatten there too | 20:32 | |
I'd lean towards the my %h = { a => 1 }; whining | 20:33 | ||
lizmat | in case this wasn't clear, my stance is +1 | 20:34 | |
jnthn | Yes, I noticed we seem to be agreeing :) | ||
lizmat | decommute from NLPM meeting& | ||
20:34
lizmat left
|
|||
flussence | m: sub infix:<÷>(\a, \b where * != 0) is pure { a / b }; say "whoops"; say 5 ÷ 0; # Is there any way to make things like this explode at compile time? | 20:35 | |
camelia | rakudo-moar 77024f: OUTPUT«whoopsConstraint type check failed for parameter 'b' in sub infix:<÷> at /tmp/gM2I3dmYQz:1 in block at /tmp/gM2I3dmYQz:1» | ||
FROGGS | m: multi infix:<÷>(\a, \b) is pure { a / b }; multi infix:<÷>(\a, 0) is pure { die "ohh my gosh! }; say "whoops"; say 5 ÷ 0; | 20:37 | |
camelia | rakudo-moar 77024f: OUTPUT«===SORRY!=== Error while compiling /tmp/czsTxVTth7Two terms in a rowat /tmp/czsTxVTth7:1------> 0) is pure { die "ohh my gosh! }; say "⏏whoops"; say 5 ÷ 0; expecting any of: postfix …» | ||
20:37
bluescreen10 left
|
|||
FROGGS | m: multi infix:<÷>(\a, \b) is pure { a / b }; multi infix:<÷>(\a, 0) is pure { die "ohh my gosh!" }; say "whoops"; say 5 ÷ 0; | 20:37 | |
camelia | rakudo-moar 77024f: OUTPUT«whoopsohh my gosh! in sub infix:<÷> at /tmp/CtyEGCJPw0:1 in sub infix:<÷> at /tmp/CtyEGCJPw0:1 in block at /tmp/CtyEGCJPw0:1» | ||
FROGGS | hmmm, no, that won't work as of now | 20:38 | |
I guess we will know that there is no candidate in near future | 20:39 | ||
flussence | (I'm not crazy for thinking it would work though, right?) | ||
FROGGS | maybe that just falls out of more inlining work? | ||
jnthn | cdn.memegenerator.net/instances/500...979488.jpg # lizmat++ :) | 20:41 | |
flussence: We don't attmept "where" constraints during compile-time type checking | 20:42 | ||
They might do...well...anything | |||
flussence | ahh, ok | ||
I had this vague idea of wanting code to fail early before any unwanted side effects, never thought about the possibility of that *causing* them... | 20:43 | ||
vendethiel | jnthn: they might, but you might know they won't :-) | 20:44 | |
that's probably something left for another tool, though | |||
jnthn | vendethiel: Yeah, if we can know they won't... :) | 20:46 | |
vendethiel | jnthn: well, maybe with said is pure :) | ||
20:46
gfldex left
20:50
jeffreykegler joined
|
|||
FROGGS | jnthn: github.com/jnthn/zavolaj/pull/44 | 20:51 | |
jnthn | FROGGS: Does this only work on Moar so far? | 20:54 | |
FROGGS | uhh, yes, I forgot | ||
there are others? *cough* | |||
jnthn | Well, my worry is "will it break the NativeCall build on others"... | 20:55 | |
Looking at the patch, I don't think it will | |||
FROGGS | maybe... I'll implement it for the others this night | ||
dalek | p/typevaropt: 78f5a7b | jnthn++ | src/vm/moar/QAST/QASTCompilerMAST.nqp: Add typevar scope handling for MoarVM. Uses op that indicates that the value is invariant with regards to the invocant type. |
20:58 | |
p/typevaropt: 39f25d9 | jnthn++ | src/vm/ (2 files): On Parrot and JVM, for now typevar means lexical. |
|||
p/typevaropt: b4b2d6b | jnthn++ | src/NQP/Actions.nqp: Start marking $?CLASS lookup with typevar scope. |
|||
p/typevaropt: 04bbf8c | jnthn++ | src/NQP/Actions.nqp: One more place we can use typevar, not lexical. This benefits !cursor_start, meaning that all the attribute accesses in it are now lowered to pointer operations. Le JIT will like this - once it can handle other things inside !cursor_start, anyway. |
|||
21:04
virtualsue joined
21:16
chenryn joined
21:17
lichtkind joined
|
|||
lichtkind | jnthn: looks like START phaser doesnt work | 21:19 | |
masak | lichtkind: extraordinary claims require extraordinary evidence. how do you know the START phaser doesn't work? :) | 21:20 | |
are you observing a failing test, for example? | |||
FROGGS | m: for ^5 { .say; START { say "WAT" } } | ||
camelia | rakudo-moar 77024f: OUTPUT«===SORRY!=== Error while compiling /tmp/Cms7syirsRUndeclared name: START used at line 1» | ||
lichtkind | masak because i tested it | ||
jnthn | Isn't that spelt "once" these days? | ||
FROGGS | m: for ^5 { .say; once { say "WAT" } } | ||
camelia | rakudo-moar 77024f: OUTPUT«0WAT1234» | ||
21:20
chenryn left
|
|||
masak | 'git grep START' on the spec turns up nothing. | 21:20 | |
lichtkind | oh so its removed | 21:21 | |
masak | ah, because fca7f5a90384693468e8df4698fedb5e5995c78e renamed it to 'once'. | ||
lichtkind | not ONCE ? | ||
masak | lichtkind: renamed, and made into a statement prefix. | ||
no, 'once'. | |||
because it's not a phaser, for some reason. | |||
jnthn | It's not really a phaser like the others | ||
masak | I think I see why. | ||
jnthn | Because it executes in the normal flow of control | ||
masak | it's not about moving the execution in time. | ||
right. | |||
makes sense. | |||
and "START" for that was a really bad name, in retrospect :) | 21:22 | ||
lichtkind | allright so i have to update tablets | ||
masak | lichtkind: sorry to inconvenience your tables :P | 21:27 | |
tablets* | |||
lichtkind: if you're interested in running updates to Perl 6 features, they can be found here: github.com/perl6/specs/commits/master | 21:28 | ||
21:31
teodozjan left,
jeffreykegler left
|
|||
lichtkind | i know just was away a bit | 21:35 | |
dalek | blets: 95f94bc | (Herbert Breunung)++ | docs/appendix- (3 files): phaser START gone and addedspurt to highlights |
21:39 | |
21:39
guru joined
|
|||
jnthn | spurting is a highlight? :) | 21:40 | |
21:40
guru is now known as Guest20670,
Guest20670 is now known as ajr_
|
|||
lichtkind | jnthn: yes ther is a section of this 2 way io, there was prompt and slurp now added spurt | 21:40 | |
sound gay i know | |||
jnthn: are modules now running on jvm port? | 21:41 | ||
FROGGS | lichtkind: many of them yes, but there are a few that do not and that are deps for others, so jvm-star is not there yet | 21:45 | |
lichtkind | FROGGS: and not in july either? | 21:52 | |
FROGGS | lichtkind: I can't tell because I don't know how hard these problems are | ||
these might be just a bit too hard for me | |||
psch | FROGGS: is there a list somewhere? | 21:53 | |
(not that i think that FROGGS++ not being smart enough gives me high chances... :) | 21:54 | ||
21:54
carlin left
|
|||
FROGGS | psch: github.com/coke/rakudo-star-daily/...odules.log | 21:55 | |
psch: you have to keep in mind that I'm not even a good dev :o) | |||
I just spend a lot of time here | |||
22:04
ivanshmakov is now known as ivanshmakov|RST
22:08
btyler left
22:09
smls left
22:10
ivanshmakov joined
22:16
itz_ left
22:17
chenryn joined
22:19
ivanshmakov|RST left
22:20
donaldh joined
22:21
chenryn left,
rurban1 left
|
|||
masak | 'night, #perl6 | 22:22 | |
FROGGS | night masak | 22:23 | |
zengargoyle | is there a way to call whatever would have happened if you didn't have a BUILD submethod from within a BUILD submethod? | 22:27 | |
FROGGS | zengargoyle: callsame? | ||
zengargoyle | if i read things right, bless only assigns new arguments to their public accessors if there is no BUILD | 22:28 | |
if you provide a BUILD, it reads like you have to handle *all* of your intitializaion | 22:29 | ||
FROGGS | correct | 22:30 | |
or you do your extra stutt and then call callsame, or was it nextsame? | |||
zengargoyle | i though callsame/nextsame looked for a method of the same name... | 22:31 | |
FROGGS | well, yes | ||
there is a method BUILD in Mu | |||
zengargoyle | Mu BUILD would already have been called. | ||
BUILDALL goes from Mu down to your class. | 22:32 | ||
FROGGS | not if you provide your own BUILD method | ||
err yes | |||
well, no, what I said | |||
zengargoyle | BUILDALL walks all subclasses in reverse method resolution order (i.e. from Mu to most derived classes) | ||
it seems bless() does like: if BUILD call BUILD else do magic auto assignment stuff | 22:33 | ||
jnthn | Well, it's BUILDALL that executes those things, not bless | 22:34 | |
zengargoyle | it's bless that calls BUILDALL | ||
oh, maybe not. maybe it's Mu.new that does bless then BUILDALL | 22:35 | ||
Mu.new calls method bless on its invocant, passing along all the named arguments. bless creates the new object, and then calls method BUILDALL on it. BUILDALL walks all subclasses in reverse method resolution order (i.e. from Mu to most derived classes), and in each class checks for existence of a method named BUILD. If it exists, it is called, again passing all named arguments from method new to it. If not, the public attrib | 22:36 | ||
22:36
virtualsue left,
cooper_ joined
|
|||
zengargoyle | i wish i could just fiddle with one or two arguments in a BUILD and let something else handle the rest that i don'n need to fiddle with. | 22:37 | |
if i have a BUILD, i have to change it if i add another attribute | |||
22:39
rurban1 joined
|
|||
lichtkind | thanks FROGGS and all here | 22:39 | |
good night | |||
FROGGS | gnight lichtkind | 22:40 | |
lichtkind | :) | ||
22:40
lichtkind left
|
|||
psch | m: class A { has $.foo; has $.bar; submethod BUILD(:$!foo, :$bar is copy) { $!bar = $bar + 2; } }; my A $a .= new(:foo(1), :bar(2)); $a.foo.say; $a.bar.say | 22:44 | |
camelia | rakudo-moar 77024f: OUTPUT«14» | ||
psch | zengargoyle: maybe i misunderstood what you want to do, but that seems to do it? i.e. bar can be changed in BUILD, foo doesn't have to | ||
of course you have to update the signature; maybe that's what you meant | 22:45 | ||
22:46
lizmat joined
|
|||
zengargoyle | yes, you have to update in two places. :) | 22:47 | |
FROGGS | rurban: I have a patch that builds: gist.github.com/FROGGS/7cf3c95f8c566a6aa545 | 22:49 | |
rurban: I'll need for spectests though to be sure, so I'll probably apply right after $sleep | 22:50 | ||
wow, a lot of fails already /o\ | 22:51 | ||
22:52
kaare_ left
|
|||
FROGGS | I'll bisect this tomorrow... that makes no sense this way | 22:54 | |
23:06
rurban1 left
23:10
jnap1 joined
23:11
jnap left
23:14
rurban1 joined
23:17
chenryn joined
23:19
donaldh left
23:20
rurban1 left
23:21
cognominal left,
chenryn left
23:26
hoverboard left,
spider-mario left
23:32
ren1us joined
23:39
ajr_ left
23:43
denis_boyun__ left
23:51
xinming_ left
23:56
ren1us left
23:59
dmol left,
slava-wr0k left
|