»ö« 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.
dalek ecza: 1e86f79 | sorear++ | lib/NieczaCLR.cs:
First interim test harness for CLR interop
00:06
00:12 Chillance left, lumi__ left 00:13 lumi__ joined
dalek ecza: 154255a | sorear++ | lib/NieczaCLR.cs:
Tweak overload resolution process to actually work
00:18
sorear niecza can now run multi-dispatch for System::Console.WriteLine("Hello, world")
the CLR-overload-MMD system has not yet been integrated with the object system 00:19
00:24 lumi__ left, lumi__ joined 00:25 Limbic_Region left 00:34 lumi__ left 00:35 lumi__ joined 00:47 lumi__ left 00:48 lumi__ joined 00:50 Moukeddar joined, Moukeddar left 01:03 patspam joined, lumi__ left, tokuhirom joined, jaldhar joined 01:04 lumi__ joined 01:05 whiteknight joined, patspam left 01:10 soh_cah_toa joined 01:16 soh_cah_toa left
dalek ecza: e28d2ba | sorear++ | lib/NieczaCLR.cs:
Create CLR-wrapper objects
01:16
01:20 soh_cah_toa joined, lumi__ left 01:21 lumi__ joined 01:37 uasi joined 01:39 daniel-s left 01:42 soh_cah_toa_ joined, lumi__ left 01:43 soh_cah_toa left, lumi__ joined 01:50 packetknife joined 01:52 alvis_ left 01:53 ranguard left 01:56 lumi__ left, lumi__ joined 02:01 uasi left 02:02 ranguard joined 02:06 lumi__ left 02:07 lumi__ joined 02:13 tokuhirom left 02:19 bluescreen10 left 02:29 packetknife left
dalek ecza: acb2aad | sorear++ | / (5 files):
Implement CLR:: psuedopackage
02:33
sorear niecza> CLR::System::Console.WriteLine("Hello, World")
Hello, World
Nil
02:38 lumi__ left 02:39 lumi__ joined 02:40 whiteknight left
dalek ecza: d30d449 | sorear++ | lib/NieczaCLR.cs:
Small fixes to allow use of instances of CLR objects
02:44
02:49 lumi__ left 02:50 lumi__ joined 02:57 envi joined 03:00 lumi__ left 03:03 lumi__ joined 03:27 alvis joined, lumi__ left, lumi__ joined 03:29 soh_cah_toa_ left
colomon niecza: my $n = 4; my @approxs := 0, -> $x { ($x + $n / $x) / 2 } ... -> $x, $y { ($x - $y).abs < 1/100000 }; say ~@approxs; 03:35
p6eval niecza v9-16-gd30d449: OUTPUT«(timeout)»
colomon niecza: my $n = 4; my @approxs := 0, -> $x { ($x + $n / $x) / 2 } ... -> $x, $y { ($x - $y).abs < 1/100000 }; say ~@approxs[10];
p6eval niecza v9-16-gd30d449: OUTPUT«Infinity␤»
colomon niecza: my $n = 4; my @approxs := 0, -> $x { ($x + $n / $x) / 2 } ... -> $x, $y { ($x - $y).abs < 1/100000 }; say ~@approxs[^10]; 03:36
p6eval niecza v9-16-gd30d449: OUTPUT«0 Infinity Infinity Infinity Infinity Infinity Infinity Infinity Infinity Infinity␤»
colomon niecza: my $n = 4; my @approxs := 1, -> $x { ($x + $n / $x) / 2 } ... -> $x,1 $y { ($x - $y).abs < 1/100000 }; say ~@approxs[^10];
p6eval niecza v9-16-gd30d449: OUTPUT«Unhandled exception: JSON writer encountered value of type Parcel␤ at /home/p6eval/niecza/boot/lib/JSYNC.pm6 line 0 (JSYNC to-json @ 0) ␤ at /home/p6eval/niecza/src/NAMOutput.pm6 line 12 (NAMOutput NAMOutput.run @ 4) ␤ at /home/p6eval/niecza/src/NieczaBa…
colomon niecza: my $n = 4; my @approxs := 1, -> $x { ($x + $n / $x) / 2 } ... -> $x,1 $y { ($x - $y).abs < 1/100000 }; say ~@approxs;
p6eval niecza v9-16-gd30d449: OUTPUT«Unhandled exception: JSON writer encountered value of type Parcel␤ at /home/p6eval/niecza/boot/lib/JSYNC.pm6 line 0 (JSYNC to-json @ 0) ␤ at /home/p6eval/niecza/src/NAMOutput.pm6 line 12 (NAMOutput NAMOutput.run @ 4) ␤ at /home/p6eval/niecza/src/NieczaBa…
colomon ? 03:37
03:37 daniel-s joined
colomon b: my $n = 4; my @approxs := 1, -> $x { ($x + $n / $x) / 2 } ... -> $x,1 $y { ($x - $y).abs < 1/100000 }; say ~@approxs; 03:38
p6eval b 1b7dd1: OUTPUT«Nominal type check failed for parameter '$y'; expected Int but got Rat instead␤ in <anon> at line 22:/tmp/C1pJKJ9yH4␤ in <anon> at line 895:src/gen/core.pm␤ in 'Any::join' at line 1:src/metamodel/RoleToInstanceApplier.nqp␤ in 'List::Str' at line 2838:src/gen/core.pm…
colomon b: my $n = 4; my @approxs := 1, -> $x { ($x + $n / $x) / 2 } ... -> $x, $y { ($x - $y).abs < 1/100000 }; say ~@approxs; 03:39
p6eval b 1b7dd1: OUTPUT«1 2.5 2.05 2.00060975609756 2.00000009292229 2␤»
colomon bingo
b: my $n = 2; my @approxs := 1, -> $x { ($x + $n / $x) / 2 } ... -> $x, $y { ($x - $y).abs < 1/100000 }; say ~@approxs;
p6eval b 1b7dd1: OUTPUT«1 1.5 1.41666666666667 1.41421568627451 1.41421356237469␤»
03:40 lumi__ left
colomon b: my $n = 7; my @approxs := 1, -> $x { ($x + $n / $x) / 2 } ... -> $x, $y { ($x - $y).abs < 1/100000 }; say ~@approxs; 03:41
p6eval b 1b7dd1: OUTPUT«1 4 2.875 2.65489130434783 2.64576704419029 2.64575131111137 2.64575131106459␤»
03:41 lumi__ joined
colomon b: say 2.64575131106459 ** 2 03:41
p6eval b 1b7dd1: OUTPUT«7␤»
colomon that's probably been done before, but I can't recall doing it myself. :) 03:47
03:53 lumi__ left 03:54 lumi__ joined
sorear colomon: a question? 04:05
colomon yes? 04:15
sorear no, I'm asking if you're asking a question
colomon oh, I didn't have one at the moment.
04:16 kfo joined, imbafrog joined
colomon we need to talk about how to integrate what I've got into niecza. but I kind of want to polish it some more before we get there. 04:16
finally making real progress at it, anyway, instead of just thinking about it. :)
niecza: my $n = 7; my @approxs := 1, -> $x { ($x + $n / $x) / 2 } ... -> $x, $y { ($x - $y).abs < 1/100000 }; say ~@approxs; 04:19
sorear colomon: are you still working on trig?
p6eval niecza v9-16-gd30d449: OUTPUT«1 4/1 23/8 977/368 1902497/719072 7238946623297/2736064645568 2.64575131106459␤»
colomon sorear: yes
04:19 kfo_ left
colomon sorry, that's what I was talking about above. I've got sin and cos and a start at tan. Still figuring out the infrastructure to support them nicely. 04:20
sorear I think that would be less ugly if you used $^x and $^y
04:21 lumi__ left, lumi__ joined
colomon probably. but I'm still marveling at how nice the p6 version is even in my version. making it nicer is just gravy. 04:23
04:27 imbafrog left
sorear ([: -: [ + 7 % [)^:(<_) (1) 04:28
1 4 2.875 2.65489 2.64577 2.64575 2.64575
sorear ducks
04:33 lumi__ left, lumi__ joined
colomon explanation? 04:33
sorear colomon: that's the J version
benabik quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#) 04:34
(From Wikipedia) And people call perl line noise. 04:35
sorear J has some (meta)operators P6 ought to borrow, like ^:_ "iterate function until two values are equal within 1e-6" and ^:(<_) "same, but return list of values"
TiMBuS all i ever see in J/K code are unhappy smileys
colomon I think I like ^:_ as a concept. :) 04:36
jlaire it's line noise only if you can't read it
04:37 kaare_ joined
jlaire many writing systems for natural languages look like 'line noise' to me :) 04:38
TiMBuS what if a language was nothing but a morse code style of spaces and tabs. completely unreadable. is it noise?
sorear writing J is definitely easier than reading it
also I still can't grok $: 04:39
TiMBuS seems more like silence.
jlaire writing J is easier for me too, but I wouldn't be suprised if more experienced J programmers disagreed 04:40
sorear notices that ey only uses "grok" in the negative 04:41
sorear ponders how best to expose CLR "events" to P6 04:43
04:44 lumi__ left
sorear (in C#) Console.CancelKeyPressed += Handler1; Console.CancelKeyProessed -= Handler1; 04:44
04:44 lumi__ joined
sorear (in ilasm) callvirt class [mscorlib]System.Console::add_CancelKeyPressed(class [mscorlib]System.ConsoleCancelEventHandler) 04:46
04:48 risou_awy is now known as risou
jlaire I haven't really followed the discussions about immutability, but fwiw I really like the way 'const' works in C++ (and C) 04:49
copying data structures in getters just to protect them from modifications seems so silly from a C++ perspective
sorear The C++ way has its advantages. Perl 6 can improve on it by using dynamism so you don't have to write all your accessors twice. 04:51
05:06 REPLeffect left 05:10 lumi__ left 05:12 lumi__ joined 05:19 REPLeffect joined 05:24 lumi__ left, lumi__ joined
dalek ecza: 5e6faa7 | sorear++ | lib/NieczaCLR.cs:
Add support for accessing properties and fields
05:29
sorear now I can do stuff like
niecza> CLR::System::Environment.CurrentDirectory = "/"
niecza> CLR::System::Environment.OSVersion.Version.ToString 05:30
"2.6.32.5"
jlaire that's pretty cool 05:38
sorear biggest remaining infelicity: type-directed marshalling falls over with parameters of type "object" 05:41
05:42 alvis left
sorear if I try to do $hashtable.ContainsKey("PATH"), it passes an instance of Niecza.BoxObject`1[System.String] 05:42
because it doesn't have a type to direct the unboxing
the argument could be made that a few basic undirected coercions (Str->string, Int->int, Rat,Num->double) be made 05:43
05:43 alvis_ joined 05:44 lumi__ left, lumi__ joined 05:56 lumi__ left, alvis_ left 05:57 lumi__ joined, mj41 joined, zby_home_ joined
sorear huh, weird. seems loading GAC libraries only works if I include the PublicKeyToken 05:57
06:05 orafu left, orafu joined 06:10 lumi__ left 06:11 lumi__ joined 06:13 mj41 left, wamba joined
moritz good morning 06:19
06:20 zby_home_ left 06:23 zby_home__ joined 06:25 lumi__ left 06:26 lumi__ joined
sorear good morning moritz 06:34
mberends good morning sorear, morit
z
sorear o/ mberends 06:35
mberends sorear: the LR integration seems to be going well
*CLR
sorear oh, huh.
mberends <- bad typist 06:36
sorear I spent the last half-hour fretting about ways to shave milliseconds off the CLR marshalling layer
mberends ooh
sorear but apparently it's already halfway-decently fast
11.47 µs for $rng.Next(100,200)
06:37 lumi__ left
mberends yes, that's good 06:37
sorear more like 11.5 ± 0.5
sorear should read the error bars before talking
06:37 lumi__ joined
mberends I think it's because Niecza-CLR interop isn't as big of a jump as some other interops, with Niecza generating IL anyway. 06:38
06:38 agentzh joined
sorear Niecza-CLR interop is currently entirely using System.Reflection 06:38
$rng.Next(100,200) juggles pointers to do the marshal, then calls MethodInfo.Invoke(object, object[]) 06:39
the biggest potential win is to generate IL 06:40
mberends Reflection struck me as potentially some of the slowest code in CLR, but I may have that wrong. So all credit to Niecza.
sorear but it's also problematic in terms of startup speed, furthermore, Mono 2.6 cannot garbage collect IL under any circumstance
06:41 jevin left, jevin joined
sorear IL can be removed from memory only by destroying the interpreter object (the CLR provides an internally-accessible API to create and destroy interpreters, a nice touch that more VMs should copy. IIRC Tcl and Io provide the same functionality) 06:43
mberends: I had the same impression 06:44
sorear is trying to find a way to do the equivalent of default(T) using the reflection API 06:45
apparently, some structs have no constructor, so I can't create objects though the constructor. 06:46
ohhohhoh this is evil 06:48
Array.CreateInstance(t, 1).GetValue(0)
mberends :-) twisty 06:49
06:49 lumi__ left 06:50 lumi__ joined
mberends sorear: I think jnthn++ and diakopter++ would approve :) 06:50
sorear mberends: have you seen masak++'s grant application? I'm wondering if I should comment. 06:57
mberends sorear: not yet, but I plan to. (now sooner, since it's of interest) 06:58
sorear mberends: news.perlfoundation.org/2011/09/hag...mplem.html 06:59
mberends sorear: thanks, I was still scanning the main page 07:00
07:04 SHODAN joined, lumi__ left 07:05 lumi__ joined
pmichaud sorear: why would you not comment, ooc? 07:09
07:11 JimmyZ joined
mberends I'm considering adding a comment that I think deliverables 1, 2, 3, 5, 6, 7 are low-risk as a first half and that 4 is high-risk and should perhaps be done in a separate project. 07:12
sorear pmichaud: I don't have a clear idea what to say. My real question is, what sorts of comments would be useful?
pmichaud not having a clear idea what to say is a good reason (more) 07:13
the kinds of comments they're looking for: do you think it's worthy? is it important? 07:14
or, if you see problems with the proposal, what are they?
essentially the board (who aren't as tuned to p6 stuff as many others) are wanting to hear from folks that are involved in p6 as to what they think of the proposal 07:15
07:15 wamba left
pmichaud maybe see the comments given on previous hague proposals 07:15
sorear mberends: I think D4's difficulty is very uncertain. I am aware of three half-baked ideas of how to do it, from the old times when I was experimenting 07:16
mberends for me a great justification would exist if macros could be used within Rakudo itself to improve parts of the implementation.
pmichaud oh, they'll certainly be used for that 07:17
mberends sorear: that uncertainty certainly (;)) bothers me
JimmyZ wonders if amount request is suited or not
07:17 lumi__ left
pmichaud the lack of a clear macro definition has hindered rakudo progress several times 07:17
mberends I thought so... 07:18
07:18 lumi__ joined
pmichaud or, put another way, this grant directly addresses one of the core things I've been trying to corner TimToady++ on for at least a year :) 07:18
mberends :)
pmichaud sorear: here are some previous applications that have comments: 07:19
news.perlfoundation.org/2011/02/hag...truct.html
news.perlfoundation.org/2010/07/hag...eta-m.html
news.perlfoundation.org/2010/06/hag...erl-e.html # this one was controversial and ultimately was not funded
(this last one had 46 comments)
I'm planning to add my comments to masak++'s proposal, but I'm letting others comment first before mine bias things a bit :) 07:21
moritz pmichaud: tadzik++ and I have both submitted our comments already 07:22
pmichaud moritz: I'm guessing they haven't been approved yet.
moritz pmichaud: they are just held for approval by the... right 07:23
mberends my comments added too
pmichaud excellent.
moritz pmichaud: note that the last one you linked wasn't rejected, afaict. It just was never acted upon
07:24 jamtech joined
pmichaud "not funded" is essentially the same as "rejected", afaic :) 07:24
JimmyZ has been planning to submit a comment , but he doesn' t know the amount reques is right or not
pmichaud JimmyZ: that's useful as a comment, then.
moritz JimmyZ: you can simply say as much in your comment
pmichaud your comment can be "I'm not sure the amount is correct."
JimmyZ thanks
pmichaud (along with anything else you'd like to mention, of course) 07:25
sorear commented 07:29
07:29 lumi__ left
pmichaud sorear++ 07:29
07:29 lumi__ joined
pmichaud tadzik++ moritz++ JimmyZ++ mberends++ # for completeness :) 07:30
bedtime here... bbl 07:31
sorear bye 07:32
mberends o/
JimmyZ submitts comment 07:33
mberends JimmyZ++ # for completeness :)
JimmyZ hehe 07:34
07:37 lumi__ left, lumi__ joined 07:38 Trashlord joined
Tene Hmm. Something seems off about the deliverables. 07:39
lemme read it again, see if I can work out what it is. 07:40
07:47 pmurias joined 07:48 pmurias left
dalek ecza: 4875297 | sorear++ | / (3 files):
Add functions for explict marshalling/unmarshalling and creating zero value types, improves handling of object args/returns
07:49
sorear niecza> CLR::System::Environment.GetEnvironmentVariables.Item("PATH").unmarshal
"/home/stefan/bin:/usr/local/bin:/usr/local/games:/usr/games:/usr/bin:/bin:/usr/bin/X11"
better
mberends sorear++ 07:50
07:51 Alias joined 07:52 lumi__ left 07:53 lumi__ joined 07:55 wamba joined 08:01 lumi__ left 08:02 lumi__ joined
dalek ecza: 0f884ca | sorear++ | lib/ (2 files):
Improve stringification, allow some access to events and operators
08:23
08:28 lumi__ left 08:29 lumi__ joined 08:30 masak joined
masak morning, #perl6 08:30
pmichaud masak: o/ 08:31
mberends hello masak
JimmyZ good morning, masak 08:33
08:36 clairvy joined
masak is not sure whether to participate in the discussion about the grant proposal or not ;) 08:36
anyway, it's nice to read the backlog and see you take an interest in it.
sorear hello masak 08:37
pmichaud masak: if there are items that in the discussion that you think could use clarification, feel free to participate :)
masak ok, then. 08:38
pmichaud (same goes for comments on the perlfoundation page, I think)
at least, that's the approach I've generally taken.
masak D4 *is* the high-risk one. I say as much in the grant proposal.
pmichaud I think high risk is okay.
masak essentially, the structure of the grant and the payments already make it into two separate grants.
pmichaud right 08:39
masak where D4 makes up most of the latter half.
pmichaud I think it's better to have one big proposal than two smaller ones.
masak so I'm not sure how to acquiesce mberends' request :P
pmichaud well, if others agree that D4 deserves to be a separate grant, they can comment it that way :) 08:40
mberends masak: you don't have to, it's just €0.02 worth on risk management :)
08:41 lumi__ left
pmichaud I guess part of the question would be "how risky is 'high risk' here?" 08:42
mberends masak: I hope my other point about benefiting Rakudo internals does strengthen your proposal.
08:42 lumi__ joined
pmichaud I will definitely be highlighting the direct benefit to both Perl 6 (spec) and Rakudo from this proposal, and that it's been needed for a while. 08:43
masak mberends: my feeling about D4 is that it will be challenging and non-trivial, but definitely within the realm of the possible.
it's also a very important part of macro functionality. 08:44
not being able to define subs in a quasi is quite a heavy limitation. 08:45
mberends I'd even like D4 to be isolated so that another developer potentially does the work. Bus number and all that. 08:46
masak if I may invoke YAGNI at that point... :) 08:47
08:47 frhodes joined
masak someone could salvage it from my proposal if a bus does materialize. 08:48
my point is that we don't really "have macros" in any serious sense until we have D4.
JimmyZ agrees with masak++ 08:49
08:49 bbkr joined
pmichaud afk again for a bit 08:49
bbkr good morning
masak go' mo', bbkr
08:51 frhodes left
bbkr is there any way to workaround lack of Str.encode() in nom? I don't need conversions (latin1), just access to raw bytes. Maybe some nqp:: magic? I've seen many parrot code replaced by it. 08:52
08:54 lumi__ left 08:55 lumi__ joined, frhodes joined
pmichaud bbkr: you just need an array of integers? 08:58
09:06 im2ee joined
im2ee Hey! :) 09:06
Tene masak: can you explain what D1 would actually be? I don't quite follow. 09:08
09:08 REPLeffect left
dalek ecza: 76367f7 | sorear++ | / (2 files):
Add delegate auto-marshalling and an example using System.IO.FileSystemWatcher
09:11
sorear pssst, masak, you can now write directory-monitoring code with Perl 6
09:11 Chillance joined
masak ooh 09:12
09:12 lumi__ left 09:13 lumi__ joined
masak Tene: macro foo { quasi { say "OH HAI" } }; say "before"; foo; say "after" 09:14
or, perhaps (more)
Tene: macro foo { say 1; quasi { say 3 } }; say 2; foo; say 4
im2ee: hi! 09:15
09:15 replore left
im2ee masak, how did You learn p6? :) 09:19
masak, from official documentation? own test? :) 09:20
09:20 frhodes left
masak im2ee: I read the spec and wrote a lot of code. 09:21
09:22 REPLeffect joined
bbkr pmichaud: yes, array of integers 09:23
09:24 lumi__ left 09:25 lumi__ joined
tadzik good moritz #perl6 09:27
masak good mberends tadzik 09:29
09:29 frhodes joined, frhodes left 09:30 frhodes joined
masak im2ee: oh, and each time I had a question about Perl 6, I'd write a little program and run it to see what the result would be. 09:31
im2ee: a bit like empirical science.
im2ee: for example, I would wonder "are an object's private attributes visible from deriving classes?" 09:32
rakudo: class A { has $!x }; class B is A { method foo { say $!x } }; say "alive"
p6eval rakudo 00a115: OUTPUT«===SORRY!===␤Attribute $!x not declared in class B at line 1, near " } }; say "␤»
masak ...guess not ;)
JimmyZ looks like it's easy to embed tinycc to lua, I'm not whether it's easy embed tinycc to rakudo or not 09:34
s/I'm not/I'm not sure/
masak b: class A { has $!x }; class B is A { method foo { say $!x } }; B.new.foo 09:35
p6eval b 1b7dd1: OUTPUT«Any()␤»
masak b: class A { has $!x }; class B is A { method foo { say $!x } }; B.new(:x(42)).foo
p6eval b 1b7dd1: OUTPUT«42␤»
masak nom++
dalek ecza: ad1fcdd | sorear++ | examples/gtk1.pl:
Add a tested small GTK# sample
09:36
JimmyZ b: is nom or ng?
p6eval b 1b7dd1: OUTPUT«===SORRY!===␤Confused at line 22, near "is nom or "␤»
sorear ng
JimmyZ oh
tadzik there are a few tests for that :)
rakudo: say NaN ~~ NaN ?? "nom" !! "ng"
p6eval rakudo 00a115: OUTPUT«nom␤» 09:37
tadzik b: say NaN ~~ NaN ?? "nom" !! "ng"
p6eval b 1b7dd1: OUTPUT«nom␤»
tadzik oops
09:37 lumi__ left
sorear waits for people to notice ad1fcdd 09:37
09:37 lumi__ joined
tadzik sorear: that's pretty cool 09:38
masak sorear++ 09:40
sorear -> sleep 09:44
mberends GTK on Niecza? sorear++ sorear++ 09:45
09:45 frhodes left, frhodes joined 09:46 donri joined 09:49 lumi__ left 09:50 lumi__ joined 09:56 MayDaniel joined 10:00 lumi__ left
mberends mono run/Niecza.exe examples/gtk1.pl # a GUI "Hello World" Just Works! sorear++ 10:01
10:01 wamba left, lumi__ joined 10:06 clairvy left
masak simply has to try it too now 10:06
bbkr where are nqp:: methods documented? 10:07
masak bbkr: probably easiest to go for the source: github.com/perl6/nqp/tree/master/src/core 10:08
bbkr thanks. "use the force, read the source" :) 10:10
10:11 lumi__ left
tadzik hehe 10:11
masak well, there's something very... authoritative... about executable code.
that's why I like the idea of executable specs.
tadzik you can trust them 10:12
10:12 lumi__ joined 10:14 wamba joined
masak phenny: tell sorear that I tried gtk1.pl, and it didn't work: gist.github.com/1208171 10:14
phenny masak: I'll pass that on when sorear is around.
masak notices the adventure game that sorear++ wrote back in March 10:20
bbkr no access to byte buffer in nqp:: I still cannot figure how to workaround lack of Str.encode.
masak bbkr: wish I could help you there. it doesn't seem that easy to just "workaround" the lack of Str.encode. 10:22
10:25 lumi__ left, whiteknight joined 10:26 lumi__ joined
masak rakudo: .say for lines("README".IO) 10:27
p6eval rakudo 00a115: OUTPUT«Method 'readline' not found for invocant of class 'Mu'␤ in method get at src/gen/CORE.setting:4714␤ in sub coro at src/gen/CORE.setting:3765␤ in method reify at src/gen/CORE.setting:3735␤ in method reify at src/gen/CORE.setting:3539␤ in method reify at src/gen…
masak rakudo: .say for "README".IO.lines
p6eval rakudo 00a115: OUTPUT«Method 'readline' not found for invocant of class 'Mu'␤ in method get at src/gen/CORE.setting:4714␤ in sub coro at src/gen/CORE.setting:3765␤ in method reify at src/gen/CORE.setting:3735␤ in method reify at src/gen/CORE.setting:3539␤ in method reify at src/gen…
masak I presume that both of these should still work. 10:28
error seems to be originating on line 61 of src/core/IO.pm, when it is discovered that $!PIO contains a Mu. 10:30
why it contains a Mu, I don't know.
probably code that got ported over from Beijing but doesn't work in nom. 10:31
10:31 Trashlord left 10:32 wamba left 10:36 lumi__ left, lumi__ joined, bbkr left 10:38 bbkr joined 10:56 birdwindupbird joined 10:59 MayDaniel left 11:00 ggoebel left 11:01 ggoebel joined 11:05 lumi__ left 11:06 lumi__ joined 11:08 am0c left 11:09 agentzh left 11:18 JimmyZ left 11:23 lumi__ left 11:24 lumi__ joined 11:27 MayDaniel joined
moritz I think the problem is that lines() assumes it can just call .get 11:29
11:29 wamba joined
moritz but Str.IO doesn't open the file (and it shouldn't, because Str.IO ~~ :e doesn't need an open()) 11:29
11:35 lumi__ left, lumi__ joined 11:38 Patterner left 11:39 Psyche^ joined, Psyche^ is now known as Patterner 11:46 MayDaniel left 11:50 lumi__ left 11:51 lumi__ joined
masak ah. yes, that would explain it. 12:12
so $!PIO needs to be lazily initialized, as it were. 12:13
rakudo: class Too { method quiet($_:) { say (.WHAT.perl, .^methods(:local), "in here today") } }; Too.quiet 12:15
p6eval rakudo 00a115: OUTPUT«Too quiet in here today␤»
masak :) 12:16
rakudo: class Too { method quiet($_:) { .WHAT.perl, .^methods(:local), <in here today> } }; say Too.quiet 12:17
p6eval rakudo 00a115: OUTPUT«Too quiet in here today␤»
12:18 lumi__ left
masak rakudo: (class Too { method quiet($_:) { .WHAT.perl, .^methods(:local), <in here today> } }).quiet; say "alive" 12:18
p6eval rakudo 00a115: OUTPUT«alive␤»
masak bzzzzt!
niecza: (class Too { method quiet($_:) { .WHAT.perl, .^methods(:local), <in here today> } }).quiet; say "alive"
p6eval niecza v9-21-gad1fcdd: OUTPUT«Unhandled exception: Unable to resolve method methods in class ClassHOW␤ at /tmp/0D_pf498h9 line 1 (MAIN Too.quiet @ 5) ␤ at /tmp/0D_pf498h9 line 1 (MAIN mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2046 (CORE C956_ANON @ 2) ␤ at /home/p…
masak correct-er, at least.
12:19 lumi__ joined
masak niecza: (class Too { method quiet($_:) { "I was called!" } }).quiet; say "alive" 12:19
p6eval niecza v9-21-gad1fcdd: OUTPUT«alive␤»
masak oh :)
rakudo: say (class Too { method quiet($_:) { .WHAT.perl, .^methods(:local), <in here today> } }).quiet; say "alive"
p6eval rakudo 00a115: OUTPUT«Too quiet in here today␤alive␤»
masak Rakudo, all is forgiven ;)
masak submits himself to RT
moritz can't reproduce masak, and closes ticket 12:20
masak phew! 12:21
rakudo: say (my $c = class Too { method quiet($_:) { .WHAT.perl, .^methods(:local), <in here today> } }).^methods(:local)[0]($c)
p6eval rakudo 00a115: OUTPUT«Too quiet in here today␤»
masak look! total DRY! :P
moritz 90omn oö.l bn hg b n hjbnm ,zunhjn b bä-hnujmk,mpuzn b 12:22
that was my small predator again, sorry 12:23
masak don't be sorry, it's cute! :) 12:24
(and sufficiently easy to distinguish from your normal output) :)
ah, the comments have showed up on news.perlfoundation.org/2011/09/hag...mplem.html
having read them, I do agree that D4 is the bit "pivot" of the whole grant. I wrote the proposal with that in mind. but I'm also ready to map out a more detailed plan for it, and do anything else to reduce the perceived risk and uncertainty of D4. 12:26
12:29 lumi__ left 12:30 lumi__ joined
jnthn Whoa. I just slept 11+ hours solid. 12:30
masak good moritz and ronja, jnthn 12:35
12:38 im2ee left 12:39 im2ee joined 12:43 lumi__ left 12:44 lumi__ joined 12:51 mikemol left
bbkr what happened to parrot Parcel type? was it renamed somehow or completely removed? 12:54
jnthn There was a Parrot level Parcel type? I didn't remember taht. 12:55
moritz neither
parrot has (or had) a Capture
12:56 lumi__ left
jnthn Yeah. Aside from PAST/POST nodes, we've mostly stopped using it. 12:57
12:57 lumi__ joined
jnthn A 6model object with a hash slot and and a list slot is less memory/allocations. 12:57
So we just do that for Cursor/Match in NQP now. 12:58
bbkr thanks. i'll check this Capture type. 12:59
13:00 mikemol joined
jnthn Noooo! 13:00
I've spent long enough killing off our use of the darn thing.
Unless you're working on soemthing != Rakudoo or NQP, in which case do as you wish :)
bbkr :) I'm still trying to find workaround Str.encode for my Mongo driver so it will work in nom. this nqp:: stuff is totally new to me. 13:02
jnthn bbkr: Ah, we need Buf. pmichaud++ had some ideas on that.
13:04 lumi__ left 13:05 lumi__ joined
bbkr jnthn: since Buf implementation is ready all I need is raw Str bytes, something like old parrot ByteBuffer 13:05
jnthn: but I haven't found a way how to extract them in nom since morning 13:06
s/since/until/
I think I'll just wait for Buf to be usable, low level hacking in user modules is evil 13:08
13:10 bbkr left
jnthn bbkr: Probably the best option. 13:12
ooh, he went
13:15 lumi__ left 13:16 lumi__ joined 13:18 clairvy joined 13:21 lumi__ left, lumi__ joined 13:26 wamba left 13:30 birdwindupbird left 13:31 lumi__ left 13:32 lumi__ joined, uasi joined 13:35 JimmyZ joined 13:47 colomon left
masak Python 4 getting 1-based lists. mail.python.org/pipermail/python-id...11448.html 13:48
...and the HN conversation: news.ycombinator.com/item?id=2980615 13:49
and the HN conversation mentions p5's $[ 13:51
moritz well, I guess they learned from Python 3 that breaking backward comp. for relatively small features is a win, and everybody eagerly switches to the new version... 13:52
</sarcasm>
13:52 lumi__ left 13:53 lumi__ joined
moritz news.ycombinator.com/item?id=2980916 13:53
masak yes, it is a joke. 13:55
but one that maybe sheds some light on Python, its community, and Guido ;)
fwiw, I believe Perl 6 has got this as near right as possible. 13:56
moritz like "you don't have to declare variables, it's confusing for the beginner"?
masak arrays can have any exotic *secondary* indices you care to give them, but they still map down to sensible *primary* indices.
best of both worlds. 13:57
im2ee Can You give me some links where i can find informations about how "method" new works in p6? :)
masak im2ee: have you found S12?
im2ee I'm reading it now. :)
perlcabal.org/syn/S12.html - right?
moritz im2ee: perlgeek.de/blog-en/perl-6/object-c...ation.html
masak was just going to paste that :)
that article is great. moritz++ 13:58
the only *better* explanation I've seen was from a slide in jnthn++'s OO course.
im2ee moritz, this is what i want. Thanks. :)
moritz masak: does it still conform to your current understanding of BUILD etc.?
13:58 Aridai joined
masak moritz: I'd need to read more carefully to see that. 13:59
will do that in 15 minutes or so.
moritz I don't think I've ever updated that post in a major way
so either I got it right from the start, or it's wrong now :-) 14:00
im2ee Is new needed? P6 doesn't do something automaticlly?
jnthn im2ee: You inherit a default new from Mu.
im2ee i mean new method.
14:01 lumi__ left
im2ee jnthn, can You say something more about Mu? :) 14:01
jnthn im2ee: So you only need to override new if you want to modify the interface to object instantiation.
14:01 lumi__ joined
im2ee Or just give me sites: ) 14:01
jnthn im2ee: Mu is the ultimate base type. Everything in Perl 6 inherits from it.
rakudo: class Foo { }; say Foo.^parents
p6eval rakudo 00a115: OUTPUT«Any() Mu()␤»
jnthn rakudo: class Foo { }; say Foo.^mro 14:02
14:02 betterwo1ld left
p6eval rakudo 00a115: OUTPUT«Foo() Any() Mu()␤» 14:02
im2ee I just want to assign values to some private attributes :)
jnthn OK 14:03
You can either do it at the point of declaration:
im2ee So, Mu does it?
jnthn has $!answer = 42;
Or you can write a BUILD submethod if you need something more complex.
im2ee: Mu gives you a default thing 14:04
im2ee: But it won't initialize privates for you
im2ee My::Module.new( value1 => 1, value2 => 2); I want to make it look like this.
jnthn OK, and you have something like
has $!value1;
has $!value2;
?
im2ee Yes.
jnthn OK, so you need to write something like
submethod BUILD(:$!value1, :$!value2) { }
moritz im2ee: if they are *private*, why do you want the user to set them? 14:05
im2ee: the user shouldn't care about your privates
14:05 whiteknight left
im2ee jnthn, ok it's clear now. :) 14:05
14:05 betterworld joined
im2ee moritz, right but i don't want to allow user to direct access like My::Module.value1 but on the other hand i want the user to assign the values via a method new. :) 14:07
It's correct? :) 14:08
14:08 wamba joined
moritz im2ee: so the user has to remember himself what values he passed to your .new method? 14:08
jnthn im2ee: That's what you'd achieve with what I suggested, yes. But as moritz++ points out, it tends to be a curious design decision for a class.
im2ee Those don't have to be private values, can be public - but still want to assign values via new method :) 14:09
moritz there might be cases where something like that makes sense, but it's kind of an antipattern
masak private attributes can not be set through default .new -- there's a reason for that.
moritz im2ee: if you make them private, you get that (setting through .new) by default
jnthn im2ee: Yes, but if you make the public that doesn't mean the suer can change them, and it does mean you don't hae to write a BUILD submethod - because Perl 6 will initialize your publics automatically for you.
*user
moritz rakudo: class A { has $.b }; my $o = A.new(b => 42); say $o.b 14:10
p6eval rakudo 00a115: OUTPUT«42␤»
jnthn im2ee: has $.x is rw; # need this for outside modification
I think the underlying principle is "if the user told you the value in the first place, there's probably not that much reason to keep from them something they already knew" :) 14:11
im2ee So, class A { has $.b }; my $o = A.new(b => 42); say $o.b; $o.b = 12; won't work without "is rw". Right?
rakudo: class A { has $.b }; my $o = A.new(b => 42); say $o.b; $o.b = 12; 14:12
p6eval rakudo 00a115: OUTPUT«42␤Cannot assign to a readonly variable or a value␤ in <anon> at /tmp/t2af6HgsV1:1␤ in <anon> at /tmp/t2af6HgsV1:1␤␤»
jnthn im2ee: Correct.
im2ee Ok, so that is what i was looking for. :)
jnthn :)
im2ee Thanks jnthn, moritz, masak :) 14:13
14:13 lumi__ left
moritz you're welcome 14:13
im2ee Hm, i have another question. Why do you write ++ after nick ? :)
masak im2ee: it's a sign of appreciation.
also,
karma moritz
aloha moritz has karma of 1933.
moritz im2ee: we increment "karma" that way
14:14 lumi__ joined
masak im2ee: means moritz has gotten 1933 ++s. 14:14
im2ee Ok, clear :) great idea
moritz or a few more, but also a few more -- :-)
im2ee karma im2ee
aloha im2ee has karma of 1.
im2ee :)
masak moritz++ # because he has so much karma -- oh wait
jnthn karma jnthn
aloha jnthn has karma of 1129.
jnthn Still catching up with moritz++ :)
im2ee karma moritz 14:15
aloha moritz has karma of 1935.
im2ee :)
moritz karma jonathan
aloha jonathan has karma of 2197.
masak o.O
moritz that also belongs to jnthn
jnthn ...
masak that jonathan guy is awesome!
moritz (misreported by dalek)
masak jnthn: you should be more like him!
jnthn nom: say 1129 + 2197
p6eval nom 00a115: OUTPUT«3326␤»
moritz karma moritz_
aloha moritz_ has karma of 230.
masak nom: say 1129 * 2197
p6eval nom 00a115: OUTPUT«2480413␤»
masak as a running gag on another channel I used to hang out on, we had primed the karma of 'me' to be several thousand millions :P 14:16
14:16 Aridai left
masak so people would go "me++" and then contentedly check the karma of 'me' 14:16
im2ee has $var equals has $.var ? :) 14:17
masak im2ee: no it equals 'has $!var'
im2ee: but I'd put in the '!' if I were you.
im2ee using ! and . always is better i think. :) 14:18
JimmyZ karma JimmyZ
aloha JimmyZ has karma of 22.
JimmyZ karma jimmy
aloha jimmy has karma of 74.
im2ee karma doiexist 14:19
aloha doiexist has karma of 0.
jnthn karma ran over dogma
aloha ran over dogma has karma of 0.
im2ee ok, i go back to perl6 :)
masak karma I don't know what
aloha I don't know what has karma of 0.
im2ee howdoyoudo++ 14:20
14:20 MayDaniel joined
im2ee karma howdoyoudo 14:20
aloha howdoyoudo has karma of 1.
im2ee howdoyoudo doesn't exist, so maybe aloha can warn in this situation? :)
masak moritz: nit: s/Object/Mu/ 14:21
moritz masak: just noticed too, thanks
im2ee: use of undefined value in ++ at line ... :-)
im2ee :)
masak moritz: "a submethod is a public method that's not inherited to child classes" -- well, a *public* submethod is that ;)
moritz masak: afaict all submethods are public, because private methods are submethods anyway 14:22
masak rakudo: class A { submethod !foo() { say "OH HAI" }; method bar { self!foo } }; A.new.bar 14:23
p6eval rakudo 00a115: OUTPUT«OH HAI␤»
im2ee If i use module My::Module; how i have to name class in this module, and how to call it? By My::Module::Class ?
masak moritz: there's a private submethod.
14:23 lumi__ left 14:24 lumi__ joined
moritz im2ee: you can name the class My::Module if you want 14:24
im2ee And what is "module" for? We can use class My::Module::Name instead? :)
masak moritz: the article doesn't mention attribute initialization in the 'has' declarations at all. that's where my understanding improved recently.
moritz: (I'm not saying it should, mind. just that my understanding in the areas covered hasn't changed.) 14:25
jnthn masak: You can do it, but in a dispatch sense it's no more interesting than a private submethod
masak oh, sure.
moritz masak: so just to get this straight, if I write 'has $.a = 42', the default is taken if neither a => something is passed to .new, nor BUILD has $!a in its signature. Right? 14:26
jnthn moritz: BUILD could do $!a = ... in its body too 14:27
14:27 mikemol left
jnthn moritz: Best way: if $!a is never touched 14:27
*Best way to say it
moritz jnthn: ok
moritz thinks about how best to incorporate it into the blog post 14:29
14:34 lumi__ left, lumi__ joined, colomon joined 14:36 djanatyn joined
moritz rakudo: class D { has $!x; submethod BUILD (:$!x) { } }; D.new(x => 1).x 14:39
p6eval rakudo 00a115: OUTPUT«Method 'x' not found for invocant of class 'D'␤ in <anon> at /tmp/peaXeVOS55:1␤ in <anon> at /tmp/peaXeVOS55:1␤␤»
moritz rakudo: class D { has $!x; submethod BUILD (:$!x) { }; method x() { $!x } }; say D.new(x => 1).x
p6eval rakudo 00a115: OUTPUT«1␤»
moritz rakudo: class D { has $!x; submethod BUILD () { }; method x() { $!x } }; say D.new(x => 1).x 14:40
p6eval rakudo 00a115: OUTPUT«Mu()␤»
im2ee Hmm, what is the easiest way to read only one line from IO::Readable? :) 14:41
moritz rakudo: say $*IN.get
p6eval rakudo 00a115: OUTPUT«Land der Berge, Land am Strome,␤»
moritz im2ee: don't believe everything from S26
masak er, S16. 14:43
moritz erm, right
im2ee Ok, thanks. :) 14:45
masak rakudo: our sub prefix:<=>(IO $io) { $io.get }; say =$*IN # just for old times' sake ;)
p6eval rakudo 00a115: OUTPUT«␤Cannot assign to a non-container␤ in <anon> at /tmp/mGJDVJosRG:1␤ in <anon> at /tmp/mGJDVJosRG:1␤␤»
masak huH!
im2ee rakudo: class A { method .a { ... } };
p6eval rakudo 00a115: OUTPUT«===SORRY!===␤Malformed block at line 1, near ".a { ... }"␤»
masak infix always wins over prefix?
im2ee rakudo: class A { method .a { ... } }
p6eval rakudo 00a115: OUTPUT«===SORRY!===␤Malformed block at line 1, near ".a { ... }"␤»
im2ee Why? :)
masak im2ee: get rid of that dot! :) 14:46
14:46 lumi__ left
masak im2ee: it's not part of the method name. 14:46
though I agree it'd be strangely consistent with 'method !a'
and 'method ^a' 14:47
14:47 lumi__ joined
im2ee so method without . is still public? :) 14:47
masak aye.
14:47 abercrombie joined
masak that's the default for methods. 14:47
moritz we sometimes sloppily talk about .foo when really mean 'method foo', but the . is not part of the name
masak I'm half about to suggest that 'method .a' should be allowed. 14:48
im2ee Clear, thanks. :)
moritz +0.5
masak but maybe this is a place for Java-ish conservativeness.
oh, what the heck! I'm all-out for it, just to see what happens! :)
it's not like it impacts people wanting to analyze the code; they should be working off the AST/model anyway! 14:49
and it doesn't impact readability.
moritz github.com/moritz/perlgeek.de/comm...d51d2234e1
14:49 mikemol joined
im2ee Uh, perl6 is great! :) 14:50
moritz
.oO( maybe 'method .foo' is a method that default to $_ as invocant... *SCNR* )
masak moritz++
im2ee I loved it ! : )
masak moritz: s/build/BUILD/ near the end.
moritz masak: thanks
masak moritz: [re $_ as invocant] NOOOOOoooo!
...ooooooOOOOOOOoooo! 14:51
moritz loves it how easily he can tease masak++
masak grrr :)
masak wants to remind moritz of the "Telephone" video in retaliation, but realizes that was tadzik and jnthn, not moritz 14:52
moritz you can remind me of Pachelbel's Canon in D :-)
(at least if you know Rob Paravonian) 14:53
masak moritz: D-A-B-F#-G-D-G-A D-A-B-F#-G-D-G-A D-A-B-F#-G-D-G-A...
yes, that video is great. :) 14:54
moritz in similar spirit, but less aggressive: www.youtube.com/watch?v=sTIv8hP-UIA 14:55
14:57 lumi__ left, lumi__ joined
masak wow, that's great. 15:01
im2ee rakudo: sub a returns Str { return Any; } 15:02
p6eval rakudo 00a115: ( no output ) 15:03
masak Handel++ 15:04
im2ee: you didn't call it! :) 15:05
im2ee hm, right. :D
masak im2ee: a smart compiler might catch that, but nom doesn't at present.
im2ee rakudo: sub a returns Str { return Any; } a;
p6eval rakudo 00a115: OUTPUT«===SORRY!===␤Confused at line 1, near "sub a retu"␤»
masak semicolon after }
im2ee Ehh, im in hurry. :)
rakudo: sub a returns Str { return Any; }; a;
p6eval rakudo 00a115: OUTPUT«Type check failed for return value␤ in sub a at /tmp/gQE2jTCzr5:1␤ in <anon> at /tmp/gQE2jTCzr5:1␤ in <anon> at /tmp/gQE2jTCzr5:1␤␤»
masak \o/
im2ee huh, :) 15:06
masak can I submit an LTA on that one? it doesn't say which types were involved.
im2ee so... if it returns type check failed i have some questions :)
masak especially the type that it got is important.
15:06 lumi__ left
masak im2ee: go right ahead. 15:06
im2ee i've something like that:
method getline() returns Str{
return $!sock.get;
}
15:07 lumi__ joined
im2ee and i write say MyClass.getline it prints Any() 15:07
Why? :)
masak insufficient data.
15:07 wamba left 15:08 gbacon joined
masak but I can't say I like that lack of whitespace between 'Str' and '{'... 15:08
im2ee so, i add whitespace after Str, it doesn't help :) 15:09
masak rakudo: class AnyReturner { method get { return Any } }; class A { has $!sock; method readline() returns Str { $!sock = AnyReturner.new; return $!sock.get } }; A.readline
p6eval rakudo 00a115: OUTPUT«Cannot access attributes in a type object␤ in method readline at /tmp/DOSMunAkef:1␤ in <anon> at /tmp/DOSMunAkef:1␤ in <anon> at /tmp/DOSMunAkef:1␤␤»
masak rakudo: class AnyReturner { method get { return Any } }; class A { has $!sock; method readline() returns Str { $!sock = AnyReturner.new; return $!sock.get } }; A.new.readline
p6eval rakudo 00a115: OUTPUT«Type check failed for return value␤ in method readline at /tmp/ekQpdwfwDI:1␤ in <anon> at /tmp/ekQpdwfwDI:1␤ in <anon> at /tmp/ekQpdwfwDI:1␤␤»
masak im2ee: worksforme
im2ee Maybe i made a mistake before :) 15:11
say $obj.getline works fine. But when i use while $obj.getline ( say $_; ) it prints Any. :) 15:12
15:12 Trashlord joined
im2ee \o/ works! :) 15:13
i use while my $line = $obj.getline { ... }; 15:14
15:14 cognominal_ left
im2ee masak, but whats about $_ ? :) 15:15
15:15 cognominal joined 15:16 birdwindupbird joined
im2ee Am i onerous today? :) 15:16
jnthn nom: while $*IN.get -> $_ { .say } # maybe this works...
p6eval nom 00a115: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤»
jnthn im2ee: but...not sure why you're using a while loop, not a for loop :)
masak im2ee: we use for loops for line input nowadays. 15:17
im2ee because my getline() method returns only one line, not array. :)
masak maybe it should return a lazy list of lines.
jnthn im2ee: Yes, but we'd tend to make an iterator and loop over that 15:18
15:19 lumi__ left
im2ee jnthn, hmm i'll think it over. :) 15:19
15:19 lumi__ joined
masak im2ee: you're not onerous, you're asking intersted questions and we love that! :) 15:21
im2ee: p5 had an implicit thing where it set $_ in some while loops. p6 doesn't do that.
im2ee masak, great. :) 15:22
TimToady regarding irclog.perlgeek.de/perl6/2011-09-09#i_4403094, people should be taught that ANDs are consistently tighter than ORs because * is tighter than +, even with Boolean logic
it's not just a random fact 15:23
sorear: ^^
15:24 wooden joined, wooden left, wooden joined
TimToady in other words, if follows directly from what masak++ claims at irclog.perlgeek.de/perl6/2011-09-09#i_4403108 15:25
masak TimToady: what people should be taught !=== what people know when they read my code. :/
TimToady sometimes I write simply English for the reader, and sometimes I don't 15:26
im2ee what is #perl6-soc channel? :) 15:27
masak im2ee: Perl 6 Summer of Code 15:29
im2ee masak, thanks :) 15:30
15:31 lumi__ left
TimToady but adding gratuitous parens sometimes has the pernicious effect of teaching the reader the opposite of what's actually true; if I see parens in a language I'm not familiar with, I'll assume they're necessary for a reason 15:31
15:32 lumi__ joined
masak TimToady: I'm on your side in this issue; but the majority of coders don't seem to *want* to learn about precedence. which puts constraints on how maintainable code can look in practice. 15:34
TimToady they don't want to learn it because its design principles are not generally taught
"Here's a precedence table; sink or swim!"
masak aye.
parallel to all the other "best practices" and "rules" of software development. 15:35
TimToady so this is a good place for a comment, not for extra parens, methinks
masak ideally, the code should just sing out with intent and consistency!
just like a good story. 15:36
TimToady yes, well, receptivity varies
masak the more I code, the more I realize, hey, I can make this program look *any way I want* and still have it do what I want.
um, the above's true if read with the intended precedence levels... :) 15:37
TimToady or not... :)
15:38 birdwindupbird left, birdwindupbird joined
TimToady "the more...the more..." is a very interesting English syntax 15:38
jnthn Hm, I'd never thought about it much :) 15:39
It is a curious one. :)
TimToady well, "The <comparative> <sentence>, the <comparative> <sentence>" or some such 15:40
15:40 replore_ joined, lumi__ left
TimToady
.oO(The hurrier I go, the behinder I get.)
15:40
15:40 lumi__ joined
jnthn Well, The <comparative>, the <comparative> also works, as does The <comparative> <nounphrase>, the <comparative> 15:41
masak it's 越<comparative><sentence>越<comparatice><sentence> in Mandarin; not that different. 15:43
15:44 birdwindupbird left
moritz in German it's "je <comparative> desto <comparative>" 15:45
masak ooh
same in Swedish, except "ju".
I meet so many people who say "ju...ju..." or "desto...desto..." instead. as a developer, I'm annoyed at this :) 15:46
moritz: does German have sentences like "Desto <comparative>!" ? 15:47
(in reply to something)
in English it's "All the <comparative>!"
15:48 molaf_ left 15:49 lumi__ left, lumi__ joined 15:50 birdwindupbird joined
moritz masak: no 15:51
jnthn afk, mountain climbing
masak jnthn: impossible, there are no altitudes in southern Sweden! 15:53
15:54 wamba joined
masak & 15:55
16:02 sayu joined
sorear good * #perl6 16:06
phenny sorear: 10:14Z <masak> tell sorear that I tried gtk1.pl, and it didn't work: gist.github.com/1208171
sorear colomon: I'd like to make the Complex change we talked about, but only after I know you have no unpushed changes to code that uses Complex. 16:07
16:08 lumi__ left, lumi__ joined
sorear masak: it apparently failed to load GTK#. what does gacutil -l gtk-sharp say for you? 16:08
masak: I wonder if nonexistant types under CLR:: should die() instead of just returning Any or a package 16:09
16:17 pmurias joined
pmurias sorear: hi 16:18
sorear: how am i supposed to install the gtk#?
sorear ./configure && make && make install 16:19
16:20 lumi__ left 16:21 lumi__ joined
pmurias i have mono 2.8.2 is that new enough? 16:22
sorear yes 16:26
16:28 Moukeddar joined 16:31 lumi__ left 16:33 lumi__ joined
pmurias sorear: how can i stop mono from looking at assemblies from an old installation? 16:34
sorear pmurias: if you have an old installation with gtk# why are you trying to install gtk#? 16:42
pmurias it's mono 2.6.3 16:44
sorear I didn't say that 2.6.3 wasn't new enough.
16:47 lumi__ left
pmurias System.DllNotFoundException: glibsharpglue-2 16:47
16:47 lumi__ joined 16:49 Moukeddar left
pmurias works! :) 16:50
sorear yay
pmurias with some env variables cargo cult
16:53 rgrau joined
dalek ecza: 057357e | sorear++ | examples/laf.pl:
Actually commit my LAF example
16:55
16:58 lumi__ left
pmurias sorear: so what's now needed is use ...:from<clr>? 16:58
instead of CLR::(...)?
16:58 lumi__ joined 16:59 [Coke] left
sorear pmurias: I have no idea how to design :from<clr> 17:00
17:03 pmurias left 17:07 lumi__ left, lumi__ joined 17:10 mikemol left 17:17 JimmyZ left 17:18 pmurias joined 17:22 lumi__ left 17:23 lumi__ joined 17:28 SHODAN left 17:30 frhodes left 17:33 lumi__ left, lumi__ joined 17:37 mberends left 17:38 lumi__ left, lumi__ joined
TimToady "as⃝df̅".flip.say 17:39
perl6: "as⃝df̅".flip.say 17:40
p6eval pugs: OUTPUT«decodeUTF8': bad data: '\8413'␤decodeUTF8': bad data: '\773'␤*** No such method in class Str: "&flip"␤ at /tmp/5g82V_OGub line 1, column 1 - line 2, column 1␤»
..rakudo 00a115, niecza v9-22-g057357e: OUTPUT«̅fd⃝sa␤»
TimToady wonders who will implement grapheme support first...
sorear the trick is doing it without losing data 17:41
niecza doesn't want to be in a position where $clr_obj_2.SetString($clr_obj_1.GetString) implicitly NFCifies the string 17:42
since CLR strings, at their most fundamental, are uninterpreted sequences of uint16
17:42 pmurias left 17:46 uasi left 17:48 frhodes joined, rgrau left 17:49 uasi joined, mberends joined, nebuchadnezzar left 17:51 lumi__ left 17:52 lumi__ joined 17:54 nebuchadnezzar joined 17:55 mikemol joined 17:56 uasi_ joined 17:57 uasi left 18:01 gbacon left 18:02 mikemol left 18:03 lumi__ left, mikemol joined, lumi__ joined 18:05 [Coke] joined 18:13 perlseeker joined 18:14 envi left 18:17 frhodes left, lumi__ left 18:18 lumi__ joined
lue actually, I saw the bar over the right quote. How are combining characters supposed to work? [Apparently on the character before it, but I'm not sure] 18:18
arnsholt I think combining characters usually come after the character they combine with 18:19
18:19 frhodes joined
lue [ Hm. It does the correct thing in my input line, but not in the output window :/ ] 18:21
18:25 lumi__ left 18:26 lumi__ joined 18:34 SHODAN joined 18:39 lumi__ left 18:40 lumi__ joined 18:43 perlseeker left
TimToady if Perl 6 strings are going to be limited by the semantics of their VM, we might as well give up now 18:45
18:45 pmurias joined
pmurias sorear: what are the hard parts about :from<clr>? 18:46
18:48 wamba left
sorear TimToady: does dir() return Strs or Bufs? 18:49
pmurias: figuring out what it is supposed to do, and doing it
18:50 lumi__ left 18:51 lumi__ joined
TimToady I think wrt strings we need more intermediate types that reflect the various views of strings provided by VMs so as to correctly understand the impedance mismatches 18:51
18:52 uasi_ left
TimToady NFC, NFD, CodeStr, and such 18:52
sorear it's important not to accidentally change the byte sequence when manipulating filenames on POSIX systems
utf8->Unicode->utf8 is byte-lossless on valid data, but utf8->NFG->utf8 seems not to be 18:53
TimToady that's why we need the type system to guarantee that when it's needed
well, your assertion depends on exactly what you mean by "Unicode" 18:54
Unicode isn't a single thing
s/thing/type of thing/
as far as a POSIX system is concerned, a filename is little more than a blob 18:55
with a bit of searching for /
sorear I mean sequences of codepoints
TimToady NFG is no worse than NFC
sorear true
but if the user has non-NFC filenames - they need to be roundtripped 18:56
TimToady and they should use a type that reflects that need
sorear it would be nice if we could handle filenames with invalid utf8 gracefully as well
TimToady POSIX filenames are really just buf8
sorear we need to make open("MyFile") DWIM 18:57
TimToady the trick will be to make buf8 behave more like strings when needed
sorear requiring a .encode in there is just silly
18:57 frhodes left
TimToady that's what allomorphic constants are for 18:57
for instance, Go doesn't assume any type info for constants except where used 18:58
sorear how about: my $line = $*IN.get; say $line.chars; open($line, :r)
TimToady not planning to go that far, but I believe the spec already indicates somewhere that "foo" is both a string and a buffer 18:59
18:59 sayu left, risou is now known as risou_awy
TimToady I can't be responsible for all the sins of the (POSIX) world... 19:00
but we can certainly make sure the ASCII subset works
19:00 lumi__ left
TimToady and we don't guess unless authorized by the programmer to guess 19:01
when it comes to higher bits
19:01 lumi__ joined
dalek ecza: 1a8efca | sorear++ | / (2 files):
Late-bind to Mono.Posix, restore .net support (mberends)
19:05
sorear TimToady: do I correctly understand this: ASCII-subset strs and *.all < 128 bufs act interchangeable by default, anything more requires an adverb or pragma? 19:06
TimToady well, or a conversion; adverbs and pragmas are not as nice as types :) 19:10
ingy tadzik: hi
19:11 lumi__ left
ingy tadzik: you were right. I talked to mst about default last night and now it triggers on not(exists()) instead of not(defined()) 19:12
pmurias sorear: something like that might make sense: paste.scsys.co.uk/1426261
19:12 lumi__ joined
TimToady S05:3704 talks about the relationship of buffers to strings some 19:12
pmurias sorear: use Foo:from<clr>:assembly<...> would check (using the reflection api?) what types the assembly exports and import them into the lexical scope 19:13
sorear pmurias: that paste doesn't exit 19:14
exist
pmurias fixes
paste.scsys.co.uk/142627 19:15
sorear well, first off, it's Gtk::Application 19:22
secondly you're repeating the namespace constantly
the C# original just had "using Gtk;" at the top and then refered to Application.Init ();
etc
pmurias do we have an eqivalent to 'using NamespaceName' in Perl6? 19:24
19:27 lumi__ left
fridim_ hi :) 19:28
19:28 lumi__ joined
fridim_ the status page about rakudo is no longer available ? 19:28
pmurias sorear: we could have a :namespace<Gtk> to specify where to import stuff from: paste.scsys.co.uk/142628 19:29
sorear fridim_: what kind of status page are you looking for? 19:30
fridim_ the one with the graphic :)
sorear pmurias: that doesn't make any sense to me
fridim_ test passed, test remaining
19:31 bbkr joined
pmurias sorear: yes, we don't need :namespace<...>, the module name we are importing should specify the namespace 19:34
got confused by the use Whitespace:from<perl5>:name<Acme::Bleach> example
that is if we assume that namespace in C# take the role of modules 19:35
* namespaces
sorear I wonder if it might make more sense to give CLR assemblies the role of modules 19:36
use gtk-sharp:auth<35e10195dab3c99f>:version<2.12.0.0> < Gtk >;
perhaps allow some kinds of renaming in the import-list 19:38
19:42 lumi__ left 19:43 lumi__ joined
pmurias sorear: that would only import Gtk, so we would still have to type out Gtk::Window in full 19:44
19:45 fridim_ left
pmurias but the assembly name is something we would like to avoid repeating 19:45
mberends sorear: thanks for restoring the .Net support :) 19:47
pmurias perl6: my module Foo { sub foo {say "foo!"}} 19:48
p6eval niecza v9-23-g1a8efca: OUTPUT«Potential difficulties:␤ &foo is declared but not used at /tmp/Gbmw9mPazR line 1:␤------> my module Foo { sub foo ⏏{say "foo!"}}␤␤»
..pugs, rakudo 00a115: ( no output )
pmurias perl6: my module Foo { sub foo is export {say "foo!"}};use Foo;foo();
p6eval niecza v9-23-g1a8efca: OUTPUT«Unhandled exception: Unable to locate module Foo in @path␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 685 (CORE die @ 2) ␤ at /home/p6eval/niecza/src/NieczaPathSearch.pm6 line 23 (NieczaPathSearch NieczaPathSearch.load_module @ 11) ␤ at /home/p6ev…
..pugs: OUTPUT«pugs: *** Unsafe function 'use' called under safe mode␤ at /tmp/J50WsxJG6j line 1, column 1␤»
..rakudo 00a115: OUTPUT«===SORRY!===␤Could not find Foo in any of: lib, /home/p6eval/.perl6/lib, /home/p6eval/nom-inst2/lib/parrot/3.7.0-devel/languages/perl6/lib, .␤»
pmurias rakudo,niecza: my module Foo { sub foo is export {say "foo!"}};import Foo;foo(); 19:50
perl6: my module Foo { sub foo is export {say "foo!"}};import Foo;foo();
p6eval niecza v9-23-g1a8efca: OUTPUT«===SORRY!===␤␤Action method statement_control:import not yet implemented at /tmp/zPFwreahtV line 1:␤------> b foo is export {say "foo!"}};import Foo⏏;foo();␤␤Unhandled exception: Unable to resolve method statement_level … 19:51
..rakudo 00a115: OUTPUT«Could not find sub &foo␤ in <anon> at /tmp/e9QiB9epgI:1␤ in <anon> at /tmp/e9QiB9epgI:1␤␤»
..pugs: OUTPUT«*** No such subroutine: "&import"␤ at /tmp/ugJFNObI9D line 1, column 49-59␤»
19:51 Trashlord left
pmurias sorear: we could treat both assemblies *and* namespaces as modules 19:51
sorear: first we would import namespaces from assemblies into the lexical scope 19:52
sorear: and then we would import stuff from the namespaces to avoid typing the prefix everytime
19:52 lumi__ left 19:53 lumi__ joined
sorear pmurias: there's a little subtlety here because namespaces don't exist as first-class objects 19:54
19:54 birdwindupbird left
sorear there is no Gtk namespace; the Gtk.Application class has the name ["Gtk", "Application"] 19:54
the Mono.Unix.Native.Syscall class has the name ["Mono.Unix.Native", "Syscall"] 19:55
pmurias so after "using Mono.Unix" Native.Syscall doesn't work?
colomon sorear: I have my own "fork" of Complex. In midst of 3rd birthday party, will try to send it to you tonight. Nothing particularly special about my version, mind you. 19:56
19:58 wallberg joined
sorear pmurias: the C# compiler does its best to maintain an illusion of hierarchal namespaces 20:01
colomon: 3rd birthday party... what? 20:04
TimToady didn't you know, colomon learned to program at the age of two. :) 20:06
moritz sorear: of colomon.children[0] probably
20:07 lumi__ left, lumi__ joined
sorear moritz: ah that makes sense 20:07
I forget that many people here have children of their own 20:08
20:09 mj41 joined 20:15 im2ee left, SHODAN left 20:16 whiteknight joined 20:21 lumi__ left 20:22 lumi__ joined
moritz sorear: it's an age thing 20:25
sorear: ie you won't be surprised once you approach the 30 20:26
20:27 mj41 left
dalek ast: 106766b | moritz++ | / (2 files):
unfudge passing tests for rakudo
20:28
bbkr moritz: I've added last update date to perl6 modules, example here: bbkr.org/p6modules/ (in the footer). Also I changed 90 day ago calculation to much clearer Time::Piece (included in Perl) - bbkr.org/p6modules/build-project-list.pl . W3C validated. 20:29
20:31 lumi__ left, lumi__ joined
moritz bbkr: wonderful. Pleae commit right away 20:32
(the perl that runs the script is a 5.14.1) 20:33
dalek href="https://modules.perl6.org/gh-pages:">modules.perl6.org/gh-pages: bc2a7fb | (Pawel Pabian)++ | / (2 files):
added last update date in footer, switched date substractions to Time::Piece
20:35
moritz bbkr++ 20:36
bbkr: though please cherry-pick that commit to master, that's what feather2 is using
20:38 im2ee joined 20:41 lumi__ left
bbkr Sure, just need few minutes to test it on master branch (no idea why git cloned gh-pages as default). 20:42
20:42 lumi__ joined
moritz github.com/perl6/modules.perl6.org shows master as default 20:46
so I have no idea :(
bbkr ah, I used tutorial from README to test how it works and it points to gh-pages. 20:48
20:49 BooK joined
moritz :( 20:49
20:50 [Coke] left
dalek href="https://modules.perl6.org:">modules.perl6.org: 16f2a34 | moritz++ | README.md:
remove README.md, which seems to be out of date, and cover and outdated branch. bbkr++ for noticing
20:50
20:51 [Coke] joined
sorear TimToady: How much do we care about encodings that aren't supersets of ASCII? 20:54
20:55 lumi__ left, lumi__ joined 20:57 pmurias left
TimToady much less than Ruby :) 21:00
tadzik 'evening 21:02
masak: t-t-t-t-telephone?
21:07 lumi__ left 21:08 lumi__ joined
sorear TimToady: what about Ruby? 21:10
arnsholt Being Japanese, I think Ruby cares about things like JIS and friends 21:12
21:15 zby_home__ left 21:16 Trashlord joined
dalek href="https://modules.perl6.org:">modules.perl6.org: 877676e | (Pawel Pabian)++ | web/ (2 files):
added last update date in footer, switched date substractions to Time::Piece
21:18
href="https://modules.perl6.org:">modules.perl6.org: e173698 | (Pawel Pabian)++ | README.md:
Merge branch 'master' of git://github.com/perl6/modules.perl6.org
21:19 kaare_ left
jnthn back 21:19
21:21 lumi__ left 21:22 lumi__ joined
sorear arnsholt: JIS is a superset of ASCII 21:22
arnsholt: well, Shift-JIS 21:23
arnsholt: I'm asking about things like EBCDIC 21:24
arnsholt Yeah, so I discovered. I thought it was weirder than it is 21:27
21:28 lumi__ left, lumi__ joined
arnsholt Let's not talk too much about EBCDIC =) 21:28
21:31 wamba joined
masak arnsholt: thinking something is weirder than it is sounds like a logical impossibility :P 21:32
whiteknight is pmichaud in today? 21:33
21:37 lumi__ left, lumi__ joined 21:43 MayDaniel left
masak tadzik: Hello, hello, baby, you called. I can't hear a thing. I have got no service in the club you say? say? 21:44
tadzik eeh?
masak <tadzik> masak: t-t-t-t-telephone? 21:45
tadzik po-po-po-po-po-po-pokerface
masak ;)
I like how line 4 is too short, so she just throws in the last word twice... 21:46
21:47 donri left
im2ee Good night ! :) 21:47
tadzik night
jnthn masak: What, you're watching it again? :P
21:48 im2ee left
tadzik popopopopokerface 21:48
21:48 lumi__ left
bbkr which roast branch should I work on when hunting for tickets to close on NOM - "master" or "rakudo-master" ? 21:48
jnthn master 21:49
21:49 lumi__ joined
bbkr thanks 21:49
masak jnthn: no, I just pulled up the lyrics :P 21:50
jnthn: once a quarter is quite enough...
roast has branches? 21:51
sorear masak: yeah 21:53
roast/master corresponds to rakudo/nom and niecza/master
roast/rakudo-master is used so that people can continue to spectest ŋ
masak heh, ŋ 21:56
Beijiŋ 21:57
sorear: $ gacutil -l gtk-sharp 21:58
The following assemblies are installed into the GAC:
Number of items = 0
rakudo: "README".IO.get 21:59
p6eval rakudo 00a115: OUTPUT«Method 'readline' not found for invocant of class 'Mu'␤ in method get at src/gen/CORE.setting:4714␤ in <anon> at /tmp/syVUsRDxyR:1␤ in <anon> at /tmp/syVUsRDxyR:1␤␤»
masak so... in order for this to work, IO.get has to auto-open the $!PIO. 22:00
tadzik is that spec-legal?
sorear masak: oh, your problem is extremely simple then. You don't have Gtk# installed. :)
masak sorear: oh!
sorear tadzik: dubious 22:01
masak sorear: I installed gtk.
tadzik an error message could be More Awesome
22:01 lumi__ left
sorear tadzik: ingyist elements in the community want paths and handles to autopun. 22:01
tadzik mhm 22:02
sorear tadzik: the spec is still extremely slushy though
22:02 lumi__ joined
sorear for the time being niecza implements a model where paths and handles are non-interchangable 22:02
masak: incidentally, I wonder if it would make sense for CLR:: references to throw exceptions instead of returning Any like GLOBAL:: references should 22:04
masak: also, I'm thinking a lot about graphemes today. The main issue I'm thinking about is that if Perl normalizes filenames returned by dir it'll cause major problems 22:05
masak: the same problem occurs in other guises - CLR interop strings shouldn't be normalized either 22:06
tadzik 'gnight #perl 22:11
22:16 lumi__ left 22:17 lumi__ joined
masak 'night, tadzik 22:22
sorear: I think it might make sense to throw exceptions, yes.
22:22 soh_cah_toa joined
masak sorear: though I liked the idea of :from<CLR> better. 22:22
sorear masak: whether or not we work out a design for :from<CLR>, it makes a lot of sense to have a way to access unimported types 22:23
(but I'm more interested in NFG right now nudge nudge)
masak ;) 22:24
I'm thinking filenames might need to be Buf.
22:28 lumi__ left, lumi__ joined 22:42 lumi__ left 22:43 lumi__ joined, Chat8892 joined, risou_awy is now known as risou, Chat8892 left, snikkers joined 22:49 wolfman2000 left 22:53 lumi__ left 22:54 lumi__ joined 22:56 wallberg left 23:02 whiteknight left, whiteknight joined 23:03 lumi__ left 23:04 lumi__ joined, bbkr left 23:05 bbkr joined
bbkr when committing to test suite back in SVN days there was some commit syntax that triggered comment in RT. is it still in use? if so - can someone please remind me the syntax? 23:07
sorear walk& 23:15
23:20 lumi__ left, lumi__ joined 23:28 patspam joined 23:33 lumi__ left, lumi__ joined 23:43 wamba left
TimToady rosettacode.org/wiki/Hello_world/Gr...cal#Perl_6 <-- sorear++ 23:45
23:48 lumi__ left 23:49 lumi__ joined
TimToady thinks that all foreign object systems live *under* Mu, and the default Perl 6 constructor comes from Any, not from Mu. 23:51
jnthn TimToady: new is in Any?
TimToady: Do foreign objects live under Any or Mu?
jnthn had imagined Any... 23:52
TimToady I think Any is a bit too concrete for foreign object systems, if you have to override its semantics 23:53
foreign objects feel more like "concepts" to me
and concepts like Junction live outside Any
jnthn fairy nuff 23:54
From my point of view, they just have different meta-objects, and a meta-object can claim to do whatever type it feels like :) 23:55
It does mean you have to specifically write code that should work on foreign objects to expect them.
TimToady possible Cool could know about various external types that it chooses to delegate coolness to, but I'm suspicious of attempts to interleave the class hierarchies
jnthn *nod* 23:56
TimToady in particular, I'm scared of other language's strings right now :)
dalek ast: eb9398c | (Pawel Pabian)++ | S10-packages/basic.t:
fixed multiline evals that were causing trouble with fudging
23:58
ast: 9875994 | (Pawel Pabian)++ | S10-packages/basic.t:
[S10-packages/basic.t] tests for #65404 - Null PMC access when A.perl is called on a package A
ast: 46859cd | (Pawel Pabian)++ | S10-packages/basic.t:
[S10-packages/basic.t] tests for #65404 - Null PMC access when A.perl is called on a package A
masak 'night, #perl6
23:59 masak left, lumi__ left, whiteknight left