»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
diakopter sorear: well you can always use the fully-qualified .NET class names, e.g. System.Collection.Generic.Dictionary -> System::Colection::Generic.Dictionary , so then you could use Dictionary as a perlesque class... but that's annoying 00:00
it's why C# has a special class alias statement - "using" inside a namespace
Collections 00:01
00:12 lest_away is now known as lestrrat
diakopter sorear: I'm implementing MINIMALLY FANCY now 00:12
Visitor99 rakudo: my Rat $n = 1; say $n; 00:17
p6eval rakudo fca899: OUTPUT«Type check failed for assignment␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/RmfCLgZ0RL␤»
00:32 masonkramer_ joined, masonkramer left, masonkramer_ is now known as masonkramer
mberends HTTP::Daemon works again on a tweaked Rakudo. spectesting & sleep & 00:35
Visitor99 rakudo: my Rat $n = 1/1; say $n; 00:37
p6eval rakudo fca899: OUTPUT«1␤»
sorear back 00:48
diakopter almost done with MINIMALLY FANCY 00:49
sorear diakopter: sprixel ResolveType imposes a search list. Dictionary is resolved as being System.Collections.Generic.Dictionary 00:50
diakopter oh, mebbe I forgot to make it search CreatedTypes first
(it should)
that method is horribly written :) feel free to agree vehemently 00:51
sorear CreatedTypes?
diakopter ResolveType
oh, yes, CreatedTypes is there in Grammar.cs
sorear 2010.06.12.12.54.15 <@diakopter> I was going to treat perlesque like a "black box" language, so that the emit-psq layer wouldn't have to know _anything_ about the .NET framework
is this statement invalidated? 00:52
if not, what classes am I allowed to assume are predefined?
diakopter wait, what?
back up
CreatedTypes would include class Dictionary { } so it would resolve to that first 00:53
sorear Why would CreatedTypes include class Dictionary?
diakopter if it was declared in perlesque code
it's in there
sorear the only Perlesque library code I can find is the definitions of say and print 00:54
yet, the Perlesque test suite uses classes defined in C# - List[int] in man-or-boy, etc
is viv --psq allowed to assume List<T> exists? 00:55
diakopter yes
sorear what other classes is viv --psq allowed to assume exist?
diakopter give me a minute to reply to your question
AUGH
the other question 00:56
sorear ok
diakopter < sorear> is this statement invalidated?
no; I meant that emit-psq itself should emit code that calls into an API (that itself knows about all the .NET types) 00:57
that API doesn't have to appear .NET-ish
that API can be written in either C# or perlesque
perlesque if it needs closures; C# if it's efficiency crucial and doesn't need closures 00:58
sorear I see
diakopter probably the most crucial thing I need to add is a way to create .net arrays 00:59
sorear between Sprixel.Runtime.*, Sprixel.*, System.*, TriAxis.RunSharp.*, TriAxis.RunSharp.Operands.*, and System.Collections.Generic.*, what classes are considered part of the ".NET independant Perlesque API"?
diakopter whatever classes we haven't yet written :) 01:00
(we'll name them eventually) ;)
oh, of those, none
01:00 sorear left 01:01 sorear joined
diakopter oh, of those, none 01:01
sorear Not even List?
diakopter I guess I don't know what you mean by ".NET independant Perlesque API"
01:01 colomon joined
sorear The stuff I can use in viv --psq without violating your expectations. 01:02
diakopter oh, you can use all of those
the generics are special 01:03
generics and primitives
ok, sorry, I guess that statement is invalidated..... :( oops 01:04
committing MINIMALLY FANCY 01:22
it's truly evil
it needs the filename as a quoted string 01:23
though there's no reason it can't be an expression that can be coerced to a string 01:24
o wait :)
no it can't :)
(once string eval is working, that'll fall out, though) 01:25
01:26 ggoebel left
sorear can't parse a bareword? 01:27
diakopter string was easier. feel free to make it accept any char but a ; or whitespace 01:28
perlesque: use "../../t/basic.t"; 01:29
p6eval perlesque: OUTPUT«1..2␤ok 1 # say works␤ok 2 # variables work␤»
sorear diakopter: just for the record, each command in a Makefile is run in a separate subshell, so the cd ../../.. is redundant
diakopter perlesque: use "../../t/man_or_boy.t";
dalek meta: r330 | diakopter++ | trunk/ (8 files):
[perlesque] added use functionality - use "other file";
diakopter oh
p6eval perlesque: OUTPUT«1..16␤ok 1 # Knuth's man_or_boy test at starting value 1 got 0␤ok 2 # Knuth's man_or_boy test at starting value 2 got -2␤ok 3 # Knuth's man_or_boy test at starting value 3 got 0␤ok 4 # Knuth's man_or_boy test at starting value 4 got 1␤ok 5 # Knuth's man_or_boy test at starting
..valu…
sorear is liking the Google Code svn diff display 01:30
it's, for one thing, vastly faster than real svn log
diakopter: What is TestFileToRun? 01:31
What is the function of UTF32String, instead of using native CLR strings? 01:33
01:35 ggoebel joined
Visitor99 rakudo: my Rat $rat=1.2; my Int $int=5; my Str $str="string!"; my @arreglo = ($rat, $int, $str); for @arreglo { say $_.WHAT } 01:36
p6eval rakudo 7d80cd: OUTPUT«Rat()␤Int()␤Str()␤»
Visitor99 rakudo: my Rat $rat=1.2; my Int $int=5; my Str $str="string!"; my @arreglo = ($rat, $int, $str); for @arreglo { when ($_~~Rat) { say "$_ =rational"; } when ($_~~Str) { say "$_ =string"; } when ($_~~Int) { say "$_ =integer"; } }
p6eval rakudo 7d80cd: OUTPUT«string! =rational␤» 01:37
Visitor99 :S
i can use 'when' inside 'for' when checking for another conditions.... 01:41
colomon phenny: tell pmichaud I think at least the hyper metaop routine ought to be Spec. That would enable you to use all the fairly sophisticated hyper array/hash handling and threading code with any one or two parameter sub / block, rather than just limiting it to operators. IMO that seems like a big win.
phenny colomon: I'll pass that on when pmichaud is around.
diakopter sorear: native CLR strings are UTF16, but I wanted full UTF32 01:42
so UTF32String creates a compact array of 32bit ints representing the Unicode codepoints of the input 01:43
CLR doesn't do that natively
TestFileToRun is just for my debugging
in Visual Studio
it's used only when RunIndividualTest is true, which is the case for me locally 01:44
the compact array of 32bit codepoints is accessible extremely quickly in the parsing routine 01:45
afk& 01:48
01:54 meppl left 01:58 snarkyboojum left 02:03 whiteknight left 02:07 Visitor99 left 02:12 Visitor99 joined 02:13 Visitor99 left
pugssvn r31246 | sorear++ | [dfa/Cursor] Complete architecture of NFA composer 02:14
02:15 patrickas left 02:25 ggoebel left 02:38 pronik` joined 02:42 pronik left 02:49 Bzek_ joined, justatheory joined 02:50 Bzek left 02:56 skids left 02:57 slavik1 joined 03:13 gfx joined
diakopter keeping up with backscroll is a Herculean effort 03:22
slavik1 diakopter: which is why I don't do it
diakopter :)
03:27 xinming_ is now known as xinming 03:30 snarkyboojum joined
sorear diakopter: that's why I use phenny and pm 03:41
pugssvn r31247 | sorear++ | [viv-psq] Add "use" implementation. This lines up with Perl6 semantics in precisely one case, where the module used defines only one symbol, a class with the same name as the module. 03:42
03:43 snarkyboojum_ joined 03:44 snarkyboojum left, snarkyboojum_ is now known as snarkyboojum
diakopter heh 03:45
Wolfman2000 you have to start somewhere
sorear now for the really fun part - definitions 03:46
which will help to make viv-psq more useful 03:47
perlesque: sub foo(--> int) { return 0; }; 03:48
p6eval perlesque: ( no output )
sorear perlesque: sub foo(--> int) { return 0; }; say(foo);
p6eval perlesque: OUTPUT«␤Unhandled Exception: System.ArgumentNullException: Argument cannot be null.␤Parameter name: obj␤ at (wrapper managed-to-native) System.Reflection.Emit.ModuleBuilder:getToken (System.Reflection.Emit.ModuleBuilder,object)␤ at System.Reflection.Emit.ModuleBuilder.GetToken
..(System.R…
sorear does "foo" exist in any namespace, or is it only callable?
sorear wonders how hard it would be to write a perlesque REPL 03:50
diakopter needs a () 03:52
perlesque: sub foo(--> int) { return 0; }; say(foo());
p6eval perlesque: OUTPUT«0␤»
diakopter hm 03:53
once string eval is there, repl is trivial :P
diakopter finally getting around to making vivpsq 03:55
sorear: I need to add eval-contents-of-filename capability to viv; suggestions? 04:00
sorear Can you elaborate?
diakopter: I was looking for the sub itself, not to call it 04:01
I suppose that requires the my $foo = sub ... form?
diakopter oh, yes 04:03
but I thought in p6 it was &foo
rakudo: sub foo () { }; say &foo
p6eval rakudo 7d80cd: OUTPUT«foo␤»
diakopter pugs: sub foo () { }; say &foo 04:04
p6eval pugs: OUTPUT«<SubRoutine(&foo)>␤»
04:06 Guest3227 left
diakopter sorear: (so theoretically I could make it available in perlesque that way) 04:07
(currently it assigns to some made up local)
04:11 masonkramer_ joined
diakopter sorear: to answer your question, for p6eval, ./viv needs to accept a filename to read for eval/input 04:11
sorear viv doesn't eval anything 04:14
it's strictly a compiler
./viv --psq -e 'TEXT IN THIS ARGUMENT' will send perlesque to STDOUT 04:15
./viv --psq /path/to/temp/file works too
the standard -o /path/to/file.psq is supported
(don't try anything too fancy; viv doesn't use GetOpt but naively parses @ARGV itself. I should fix that.) 04:16
04:21 tedv left
sorear is now reading all the "overview" .NET docs 04:22
there are... quite a few of them
04:22 slavik1 left 04:24 [[mark]] left
sorear perl6: my $a ::= 1; $a := 2; 04:24
p6eval elf 31247: OUTPUT«Undefined subroutine &GLOBAL::infix_::_61 called at (eval 124) line 3.␤ at ./elf_h line 5881␤»
..rakudo 7d80cd: OUTPUT«===SORRY!===␤::= binding not yet implemented at line 11, near " 1; $a := "␤»
..pugs: ( no output )
sorear alpha: my $a ::= 1; $a := 2; 04:25
p6eval alpha 30e0ed: OUTPUT«Could not find non-existent sub infix:::=␤in Main (file src/gen_setting.pm, line 324)␤»
pugssvn r31248 | diakopter++ | [viv] add the ability to read a file for input. it doesn't stomp on --thaw 04:27
sorear viv has always had the ability to read a file for input... 04:28
sorear reads the patch
diakopter ?
oh 04:29
sorear diakopter: how do you think ./viv -5 STD.pm6 > STD.pmc works?
diakopter djeesh; sry
pugssvn r31249 | diakopter++ | [viv] rollback last 04:30
04:34 p6eval left, p6eval joined
diakopter vivpsq: say 4; say 332 04:34
p6eval vivpsq 31247: OUTPUT«say(4);␤say(332);␤» 04:35
diakopter cool
desugarama
now, to get it to pipe it to perlesque.. 04:36
04:38 [mark] joined
sorear has just found the mono tools documentation 04:40
diakopter sorear: do you run gnome?
(ever?)
if so, I highly recommend the latest MonoDevelop beta, 2.4b2 04:41
interactive debugger and such
sorear a couple years ago I ran GNOME kit and kaboodle
these days I've left many parts of it 04:42
but I still have libgnome and libgtk installed and still use a few gnome programs
does monodevelop require a running gnome-panel to operate?
diakopter also, apparently there is a build of red-gate's Reflector that works on linux
sorear does it have documentation? 04:43
diakopter I don't know whether monodevelop needs a gnome-panel 04:44
sorear resorts to find . -name '*.1'
diakopter Reflector doesn't need documentation (seriously). it's that straightforward. in fact, just browsing through its display of an exploded assembly would give you far more insight into .net than reading docs 04:45
sorear since apparently the tool docs aren't on mono-project.com
diakopter which tools are you interested in
monodis is the only one I've even touched
here goes nothing 04:47
04:47 p6eval left, p6eval joined
diakopter evalbot control restart 04:48
04:48 p6eval left, p6eval joined
sorear diakopter: I've only touched monodis, but that's because I didn't know the others *existed*. 04:49
04:49 p6eval left
diakopter me neither :) 04:49
sorear diakopter: Do I give red-gate real information?
diakopter oh, here's the direct link 04:50
04:50 p6eval joined
sorear vivpsq: say 2 + 2 04:50
p6eval vivpsq 31249: OUTPUT«say((2 + 2));␤»
sorear diakopter: does vivpsq update itself automatically for *both* viv and perlesque commits? 04:51
diakopter downloads.red-gate.com/reflector_mono_only.zip
04:52 p6eval left, p6eval joined
diakopter the updaters are orthogonal to the runners 04:52
updaters are by cron
sorear stefan@stefans:/usr/local/src/reflector$ mono Reflector.exe 04:53
** (Reflector.exe:29342): WARNING **: exception inside UnhandledException handler: Object reference not set to an instance of an object
stefan@stefans:/usr/local/src/reflector$
04:53 p6eval left
sorear does it work with 2.6.4 04:53
04:53 p6eval joined
diakopter I dunno 04:53
actually, for all I know, it works only on Windows mono 04:54
oops :/
04:56 p6eval left, p6eval joined
diakopter sorry for all the p6eval flaps 04:56
testing stuff
vpr: say 55
p6eval vpr 31249: OUTPUT«55␤»
diakopter hah hah
04:57 ive joined
sorear VivPerlesqueRun? 04:57
diakopter yup :)
sorear vpr: say 2+2
p6eval vpr 31249: OUTPUT«4␤»
sorear cool. now I just need to implement everything else. 04:58
pugssvn r31250 | diakopter++ | [evalbot] give moritz_ a heart attack with more p6eval targets. ;)
sorear variables, loops, and function definitions seem like three logical things to do soon
then regexes :D 04:59
diakopter I'm still debating which route to go there
sorear (Perl 6 regexes, not CLR regexes)
diakopter to extend the parsergenerator in sprixel, or port Cursor
sorear we also need some kind of back door, so I can show off the awesome of vpr through the .NET BCL 05:00
diakopter awesome? :)
sorear vpr: say System::Console
p6eval vpr 31249: OUTPUT«␤Unhandled Exception: System.ArgumentException: An element with the same key already exists in the dictionary.␤ at System.Collections.Generic.Dictionary`2[System.String,Sprixel.FrameLocal].Add (System.String key, Sprixel.FrameLocal value) [0x00000] in <filename unknown>:0 ␤ at
..Sp…
sorear hmm. I was expecting a STD panic there 05:01
diakopter std doesn't check package names
sorear normally STD is extremely strict about declaring your variables
diakopter I mean
sorear vivpsq: say System::Console
p6eval vivpsq 31249: OUTPUT«===SORRY!===␤Undeclared name:␤ 'System::Console' used at line 1␤Check failed␤»
diakopter oh; lol.
sorear: likely I'll go through and change up (or just comment/annotate) the emit-psq routines with how I imagined them 05:04
since (as I mentioned a couple of times before) I believe it'll eventually be a heckuva lot more desugared 05:05
/verbose
but please continue getting the emitting logic right; that's the hard part. 05:06
:)
bed&
05:06 justatheory left 05:12 colomon left, colomon joined 05:13 kaare joined, colomon left, kaare is now known as Guest87099, colomon joined
cognominal sdeseille has been here # mberends++ in Calais alreaidy pays dividends... 05:13
05:26 Wolfman2000 left
dalek meta: r331 | diakopter++ | trunk/Makefile:
[perlesque] Makefile test target depends on all, I think.
05:27
05:30 BinGOs left 05:31 BinGOs joined 05:32 finanalyst joined 05:36 mjk joined, orafu left 05:37 orafu joined 05:39 felliott left 05:41 masonkramer_ left
mberends good morning 05:43
05:43 ive left 05:45 synth left
sorear good morning 05:47
moritz_ m\o/rning 05:48
moritz_ stretches
mberends spectest is passing TODOs unexpectedly, and throwing many non zero exit statuses without test failures. The relatively small Socket change is good to go. 05:49
moritz_ ship it! :-) 05:51
mberends shipping...
dalek meta: r332 | stefa...@cox.net++ | trunk/repl:
[perlesque] Add a kludgy Perl REPL wrapper. Will rewrite in C# once I have more
05:52
sorear dalek, please stop giving my email address karma, it's listed in parrot/trunk/AUTHORS for a reason
dalek kudo: 8b0022b | (Martin Berends)++ | (2 files):
[IO/Socket/INET.pm] rewrite the socket() method to avoid using := and re-enable
05:55
mberends note on the above change: TCP/IP works again, the recv() call is OK but the test for recv($byte-count) fails. An exercise for someone else to continue. 05:57
sorear Do &-variables have containers, or is the Callable directly bound into the symbol table? 05:58
moritz_ I think they shouldn't differn from @ or % variables 06:00
sorear perl6: sub foo() { say 2 }; sub bar() { say 3 }; &foo = &bar; foo; 06:01
p6eval pugs: OUTPUT«*** Can't modify constant item: VStr "MkCode {isMulti = False, subName = \"&foo\", subType = SubRoutine, subOuterPads = [PRuntime {pr_pad = MkPad (padToList [(\"$_\",PELexical {pe_type = (mkType \"Scalar\"), pe_proto = <Scalar:0x2b39b16a82a1>, pe_flags = MkEntryFlags {ef_isContext …
..elf 31250: OUTPUT«/home/p6eval/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError)␤ from /home/p6eval/pugs/misc/STD_red/match.rb:140:in `each'␤ from /home/p6eval/pugs/misc/STD_red/match.rb:140:in `map'␤ from
../home/p6eval/pugs/misc/STD…
..rakudo 7d80cd: OUTPUT«Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/apKdlN7OF_␤»
sorear perl6: sub foo() { say 2 }; sub bar() { say 3 }; &foo := &bar; foo; 06:02
p6eval rakudo 7d80cd: OUTPUT«:= binding of variables not yet implemented␤ in 'infix:<:=>' at line 630:CORE.setting␤ in main program body at line 11:/tmp/43hamRcRk5␤»
..pugs: OUTPUT«3␤»
..elf 31250: OUTPUT«/home/p6eval/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError)␤ from /home/p6eval/pugs/misc/STD_red/match.rb:140:in `each'␤ from /home/p6eval/pugs/misc/STD_red/match.rb:140:in `map'␤ from
../home/p6eval/pugs/misc/STD…
sorear perl6: sub foo() { say 2 }; sub bar() { say 3 }; &foo ::= &bar; foo;
p6eval pugs: OUTPUT«3␤»
..elf 31250: OUTPUT«/home/p6eval/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError)␤ from /home/p6eval/pugs/misc/STD_red/match.rb:140:in `each'␤ from /home/p6eval/pugs/misc/STD_red/match.rb:140:in `map'␤ from
../home/p6eval/pugs/misc/STD…
..rakudo 7d80cd: OUTPUT«===SORRY!===␤::= binding not yet implemented at line 11, near " &bar; foo"␤»
sorear what are the correct handlings in all cases?
06:02 alanhaggai left 06:04 uniejo joined 06:21 Su-Shee joined
snarkyboojum 1 06:27
sorear 1? 06:31
06:31 Lorn left, mantovani left
moritz_ agrees with pugs 06:38
06:40 Lorn joined, mantovani joined
snarkyboojum sorear: apologies for the spurious 1 :) 06:44
06:47 Lorn left 06:49 mantovani left, mantovani joined 06:50 Lorn joined
sorear hmm. I wonder if <!before foo> should be taken into account in longest token calculation 06:53
I vote for "no", as doing so in the general case for PNFA appears to have computational complexity A(4,n) 06:54
and I don't like using the Ackermann function in computational complexity specs
moritz_ sorear: I think it's esplicitly excluded from LTM 06:56
(I might be mis-remembering though)
rakudo: sub &fold { } 06:57
p6eval rakudo 8b0022: OUTPUT«===SORRY!===␤Confused at line 11, near "sub &fold "␤»
moritz_ std: sub &fold { }
p6eval std 31250: OUTPUT«ok 00:01 107m␤»
sorear ah, found it 06:58
moritz_ LTM really only includes things that traditional DFAs can handle (once subrule calls are inlined) 07:00
bbl
sorear traditional DFAs can handle a lot more than people give them credit for
how about & 07:01
it results in a worst-case exponential blowup of the NFA tree
moritz_ it's well known that & is part of REG 07:02
at least if you attend certain lectures :-)
cognominal REG? 07:03
moritz_ regular languages
cognominal thx
07:05 Su-Shee left, Su-Shee joined 07:10 am0c joined
sorear moritz_: known to me, too. but iterated exponential complexity gives me the chills 07:12
07:14 cj joined 07:18 rgrau` joined
sorear S05 and Cursor slightly disagree on how to handle zero-width positive lookahead assertions 07:24
Cursor considers the assertion itself to always be more specific than and take precedence over what follows it
07:24 pronik` is now known as pronik
sorear S05 says that this only happens if a "pattern" starts with the lookahead token 07:25
the S05 version is ill-defined, and depending on how it was intended it could be significantly harder to implement
07:31 pronik left 07:33 mjk left 07:36 plobsing left
sorear TimToady talks about how using the autolexer system to generate more than one fate at a time is a huge win, but I'm not completely convinced 07:39
because it raises the cost of lexer *generation* from O(2^n) worst case to O(2^2^n) 07:40
07:40 gfx left
sorear I will have to benchmark this after I get the DFA lexer system working 07:40
moritz_ I read S05 as "if a rule starts with a look-ahead, only the look-ahead participates in LTM"
is that correct?
07:43 finanalyst left
sorear that is what it literally says 07:43
however, LTM does not apply to rules
LTM applies to alternatives
perhaps it means the first <atom> in the parsing of the alternative
this most conservative reading is at least easy to implement, but it doesn't work with protoregexes 07:44
perhaps it means the first atom after subrule expansion
this will... utterly screw up the Cursor lexer caching model
07:59 mjk joined 08:02 cj left 08:04 cj joined 08:23 plobsing joined 08:28 dakkar joined 08:35 mjk left 08:37 am0c left 08:46 drrho left 08:48 cj left 08:52 am0c joined
pugssvn r31251 | sorear++ | [dfa/Cursor] Implement handling for sequences, alternations, and an NFA dumper. 08:52
08:56 envi^home joined
sorear phenny: tell TimToady I have NFAs being generated for some simple patterns :D 08:59
phenny sorear: I'll pass that on when TimToady is around.
09:01 jhuni left 09:17 cj joined 09:21 am0c left 09:26 plobsing left 09:27 cono left, cono joined 09:37 cj left 09:38 cj joined 09:48 baest_ is now known as baest 09:53 masonkramer left 10:03 Chillance joined, pmurias joined
pugssvn r31252 | dimid++ | [t/spec] add tests to check -5 ... ^5 series, RT#75674 10:06
sorear I just tried to zero fill a buffer in Cursor.pmc with '\000' x $bytes 10:10
it just took me half an hour to figure out why there were sporadic one bits
10:10 lestrrat is now known as lest_away
pugssvn r31253 | sorear++ | [dfa/Cursor] Implement NFA->DFA converter for the non-character-classes case 10:19
sorear calls it a night 10:20
cono rakudo: (1,2,4,8 ... 1024).perl.say 10:30
p6eval rakudo 8b0022: OUTPUT«(1, 2, 4, 8, 16/1, 32/1, 64/1, 128/1, 256/1, 512/1, 1024/1)␤»
cono rakudo: (1,2,4,8 ... 1024).map({.WHAT}).perl.say 10:32
p6eval rakudo 8b0022: OUTPUT«(Int, Int, Int, Int, Rat, Rat, Rat, Rat, Rat, Rat, Rat)␤» 10:33
cono Why we have Rational numbers ?
moritz_ cono: because determining the kind of sequence involes building the ratio of two consecutive ntegers 10:34
cono but, 32/1 = 31 :) 10:35
32*
maybe it need to be "as Type" of first arguments /
10:36 mjk joined
cono rakudo: (1,2,4,8 ... 1024).map({.Int}).perl.say 10:37
p6eval rakudo 8b0022: OUTPUT«(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024)␤»
cono std: (1, 2, 4, 8 ... 1024).map( *.WHAT ).perl.say 10:39
p6eval std 31253: OUTPUT«ok 00:01 108m␤»
cono rakudo: (1, 2, 4, 8 ... 1024).map( *.WHAT ).perl.say
p6eval rakudo 8b0022: OUTPUT«No applicable candidates found to dispatch to for 'map'. Available candidates are:␤:(Mu : &block;; *%_)␤␤ in main program body at line 11:/tmp/RshGqGySQN␤»
10:54 Chillance left 10:55 Chillance joined 11:01 ggoebel joined 11:02 lest_away is now known as lestrrat 11:11 am0c joined
szabgab crap, I just volunteered for another Perl 6 presentation at Rehovot.pm tomorrow :) 11:12
11:18 Chillance left, c1sung left, Chillance joined 11:25 takadonet left, masak joined 11:27 am0c left
masak oh hai, #perl6! 11:30
cono masak: hai 11:31
masak: how do you do? 11:32
masak cono: mostly fine. a bit stressed out by too many ongoing subtasks, but I'm hoping that'll improve rather than escalate. :)
cono: how about you?
cono masak: not bad, had a breakfast 2 minutes ago :) 11:34
masak cono: are you located in the New World?
cono what do you mean?
masak the Americas. 11:35
cono Ukraine :)
masak late breakfast, then :)
cono yup:)
masak even later than mine :)
jnthn-time has its advantages and disadvantages :) 11:36
cono masak: *.WHAT eq to {.WHAT} ?
moritz_ rakudo: say *.WHAT 11:37
p6eval rakudo 8b0022: OUTPUT«Whatever()␤»
moritz_ nope
11:38 colomon left
cono how to omit {} ? 11:38
jnthn explained yesterday, but I forgot :(
moritz_ then backlog
irclog.perlgeek.de/perl6/2010-06-13 11:39
cono in notepad on his laptop :)
moritz_ oh :(
cono at signatures talk
moritz_ why would you use .WHAT in a signature, when a type constraint also works? 11:40
11:40 colomon joined
cono he showed functional quicksort, and it was: grep( * < middle) something like that 11:41
moritz_ yes, that works
cono people asked, what it means, and he typed in notepad explanation
* < middle == {$_ < middle} ?
moritz_ it works for normal methods, but not for *.WHAT
yes
cono ah
I could not do map(*.WHAT) :/ 11:42
moritz_ .WHAT is supposed to a macro
cono ah
ic, thanks :)
masak cono: .WHAT is written with capital letters because it's an 'internal' thing. I can see it being used for debug reasons (like `say $obj.WHAT`), but in ordinary code, you probably want `$obj ~~ SomeType` or `SomeType $obj`. 11:46
the former being a type match, and the latter a type restraint in either a signature or a variable declaration.
11:54 Chillance left, Chillance joined
cono masak: thanks for explanation :) 11:57
11:58 takadonet joined 11:59 colomon left 12:00 colomon joined
takadonet morning all 12:00
colomon o/ 12:01
Su-Shee hello you inner circle of larry wall friends.
mathw Afternoon 12:02
Su-Shee (use.perl.org/~ank/journal/40394 is what I'm referring to.) 12:03
colomon Su-Shee: ah, I can only dream of that.... ;)
moritz_ what an asshole 12:04
(ank, not TimToady :-)
masak I hadn't seen that O'Reilly video before. I watched it over lunch today.
mathw Oh my 12:06
masak perhaps we need more people like ank in the discourse, showing that you either like Perl 6, or you're an asshole :P
mathw There's some serious vitriol there
12:06 PacoLinux joined
moritz_ reading the answers to that blog comment is pretty enlightening 12:06
colomon seriously, I can't believe he writes something like that and then seems to expect the rest of us to consider his "sailing away" to be a bad thing...
masak I particularly like the "I don't really want to expose chromatic, but he keeps not publishing my comments on my blog" part. 12:07
moritz_ "Do they have this kind of hold on you?"
mathw I see one reply, and then he replies to it three times getting more and more ranty
masak s/on my/on his/
moritz_ that sounds like he think we're scientology, or so
mathw not a happy person
masak no, he's definitely hurting somehow.
Su-Shee moritz_: please sign over all your money to me then. ;)
mathw Perhaps he's lacking in hugs? 12:08
Actually from the sound of it, he doesn't like Perl 5 very much either
moritz_ Su-Shee: nono, I'm one of them
erm, us, not them :-) 12:09
mathw one of us! one of us!
Su-Shee I totally love how he can clearly distinguish between a project he doesn't like and people deciding freely on what they want to work. ;)
my theory: he hopes chromatic does a why and just vanishes. and then everything will just break down. 12:10
mathw haha
not going to happen
I would not describe chromatic as a shy, retiring type, or someone who would crawl away and hide as a result of criticism 12:11
colomon phenny: tell pmichaud that one of his changes last night broke reducewith. Seems like lists are no longer flattening, or something like that: [+] 1, 2, 3 now equals 1, 2, 3 12:12
phenny colomon: I'll pass that on when pmichaud is around.
colomon afk # hotel breakfast
mathw ooh dear
hope that's a simple fix 12:13
there's little worse than big difficult change breaks something else in a way which requires another big, difficult change...
unfortunately it sometimes happens anyway
mathw goes back to poking OpenSSL with a sharp stick
masak Perl 6 is a pretty big endeavour. it's also fairly controversial, proposing new ways of thinking about programming, or combining old ideas in new ways. it paints a big target for criticism by people who'd rather rant than do something themselves. 12:17
mathw Definitely 12:18
Also the length of time it's taken
masak in a way, it's surprising that someone like ank hasn't showed up earlier in the process.
mathw Well plenty of people have tried to pile on the hate
masak yes.
mathw But I don't think I've seen anything quite so vicious
I've never been lumped into some kind of imaginary cult of TimToady before
moritz_ OTOH you have to pretty sick to invest that much time ranting about things you can easily stay away from 12:19
masak mathw: congratulations. :)
mathw It's ultimately pointless
Because if you don't like Perl 6, you don't have to use it
masak moritz_: nod. here's hoping he eventually finds peace with himself.
mathw Unless your employer makes you use it
12:19 nadim left
mathw In which case you can argue with them, or you can go look for another job 12:19
And that's not going to be happening for some time yet 12:20
moritz_ mathw: I don't think there's a company yet that forces its workers to use Perl 6 :-)
mathw And a few things in that really make me think he doesn't like Perl 5 much either
So maybe he should just go learn Python or something
I hear some people like Python
masak Python is ok, I guess. 12:22
but all Python code kinda looks like this: "something:\n something else" :P
moritz_ and all bf code looks like ($$)#($(#()) 12:23
trac.parrot.org/parrot/wiki/ParrotQuotes
Whiteknight> oh great, I can just imagine what a recursive descent parser must look like in bf
chromatic> Just like any other bf code, really.
masak and all COBOL code looks like this: OH HAI ADD FIVE TO MY VARIABLE. 12:24
oh wait. that's LOLCODE. :)
I keep getting those two mixed up.
moritz_ COBLOL
12:25 tjs joined
moritz_ let me boast with some Perl 6 code I wrote yesterday night while I couldn't sleep 12:25
github.com/moritz/Math-Model/blob/m...scratch.pl
12:25 tjs is now known as Guest4926, Guest4926 left
moritz_ it's a physical model of a mass attached to a spring 12:25
masak ooh! named placeholders!
moritz_ right
the clue is: this model is actually a set of coupled, ordinary differential equations 12:26
masak right.
moritz_ though all you need to know to write it down is "the thing that controls the change of height is the velocity"
so the program below takes that kind of model, and munges it into a data structure, which Math::RungeKutta can use 12:27
and integrates it
so you can run perl6 scratch.perl | xmgrace -nxy -
and you get a curve for both force and velocity 12:28
I need to brush it up a bit, and connect to SVG::Plot
masak it's interesting to see how so soon after Zop got "liberated" out of the idea world, we're all using Z=> as if we've had it for ages. :)
anyway, moritz_++
moritz_ and then create some pretty pictures 12:29
masak moritz_: is it in proto's projects.list yet?
moritz_ and then blog about it
masak: nope
masak adds it
12:29 skids joined
cosimo what's "Z=>" ? 12:29
moritz_ and I plan to properly encapsulate it as a module
cosimo: => constructs a pair
and Z is the zip operator, taking an item from each list 12:30
so a, b, c Z=> 1, 2,3 produces a => 1, b =| 2, c => 3
cosimo ok, zip
moritz_ masak: it's a really nice use case of named placeholders. Actually it could be made to work with positional placeholder too 12:32
but that way it's nicer, IMHO
mathw Ooh so Z can be a metaop?
moritz_ yes
mathw in which case it behaves much like Haskell's zipWith function
moritz_ though it's a quite recent change 12:33
12:33 snarkyboojum left
cono rakudo: (<a b c> Z=> 1, 2, 3).perl.say 12:33
p6eval rakudo 8b0022: OUTPUT«("a" => 1, "b" => 2, "c" => 3)␤»
mathw zipWidth :: (a -> b -> c) -> [a] -> [b] -> [c], or something like that
s/Width/With/ 12:34
12:35 synth joined
cosimo mathw: that "Z" is a metaoperator means that I could write (1, 2, 3) Z+ (4, 5, 6) ? 12:36
12:37 plainhao joined
cosimo rakudo: (1, 2, 3 Z+ 4, 5, 6).perl.say 12:37
p6eval rakudo 8b0022: OUTPUT«(5, 7, 9)␤»
mathw cosimo: as you've just seen, yes
cosimo amazing!
rakudo: say (1 Z* 1).perl 12:38
p6eval rakudo 8b0022: OUTPUT«(1)␤»
moritz_ rakudo: say (1, 2, 3 Z~ 5, 6, 7, 8, 9).join(', ')
p6eval rakudo 8b0022: OUTPUT«15, 26, 37␤»
cosimo rakudo: say (PI, 1 Z* 1, PI).perl
p6eval rakudo 8b0022: OUTPUT«Could not find sub &PI␤ in main program body at line 11:/tmp/ZKMmm5otqW␤»
masak moritz_: BEGIN { @*INC.push: '../Math-RungeKutta/lib' }; 12:39
moritz_ I like ~ as a test operator because it's eaiser to to map output to input
masak: yes, ugly hack, I know
cono picasaweb.google.com/koorchik/PerlMovaYAPC2010#
masak moritz_: I don't like that. :(
moritz_ masak: it's not yet a proper module
cosimo rakudo: say (pi, 1 Z* 1, pi).perl
p6eval rakudo 8b0022: OUTPUT«(3.14159265358979, 3.14159265358979)␤»
moritz_ masak: that's why it's called scratch.pl, not Math/Model.pm
masak moritz_: you should set PERL6LIB or install Math::Rungekutta instead.
moritz_ yes
12:39 pmurias left
moritz_ that's what the module will require 12:39
masak moritz_: I know you know this. :) just making known my dissent.
moritz_ masak: speaking of which... if 'ufo' wrote an install: target in the makefile, installing stuff would be easier :-) 12:40
masak moritz_: well volunteered!
moritz_ masak: it's alien technology, and I'm a mere human! 12:41
masak moritz_: that's what I said! :)
moritz_ masak: you were abducted, so you have some kind of advantage over me :-) 12:42
cono rakudo: (<Ne b o> Z~ <w f p>).perl.say
p6eval rakudo 8b0022: OUTPUT«("New", "bf", "op")␤»
masak moritz_: I've received patches from non-abductees already.
but I won't force you to write a patch.
someone who needs it more just might do it instead.
moritz_ well, I'll look into it
masak \o/
12:43 nadim joined, felliott joined
moritz_ ufo, lines 41, 42 12:44
shouldn't it also check for Test?
masak that would only lead to a locally shipped Test.pm not being compiled. 12:47
some repos still come with Test.pm
moritz_ pre-human technology :-) 12:48
mathw oh yes
I need to move Form over to ufo
Su-Shee moritz_: did you really use your application picture in github? ;) 12:49
moritz_ Su-Shee: yes 12:50
Su-Shee: why do you find that amusing?
Su-Shee moritz_: because I recognized it as application picture. ;)
moritz_ ah :-) 12:51
it was rather successful
got an interview for about a half or third of my applications
Su-Shee :) 12:52
I think I don't even _have_ an application picture.
moritz_ well, maybe not only the picture...
latex class moderncv is quite nice, IMHO 12:53
mathw picture? picture???
Su-Shee uhm, I do mine in html and print it as pdf if someone needs some paperthingie :)
mathw: we all have one on github. 12:54
mathw yes, so do I
12:54 rgrau_ joined
mathw but I was thinking picture for a job application? 12:54
Su-Shee in moritz' case one and the same. :)
I don't add pictures to job applications. 12:55
moritz_ Su-Shee: I didn't care as much when I got the job first, and only later had to hand in a CV (which was the case for the previous jobs)
Su-Shee moritz_: I have a CV and a reference list and a summary of my skills. but no picture. 12:56
mathw moritz_: that's a really good rate of return on applications by the way, well done 12:58
12:58 rgrau left 13:01 felliott left
moritz_ mathw: thanks. I guess much of it was sheer luck 13:01
Su-Shee no. do it right, and you just have to send 3 applications and get invited 3 times. 13:02
masak how would y'all write "foo" ~ $bar ~ "baz" as one double-quoted string?
moritz_ "foo{$bar}baz"
Su-Shee masak: I don't, I do it like you showed.
moritz_ sprintf "foo%sbaz", $bar 13:03
masak would "foo$bar[]baz" work?
13:03 envi^home left
masak it'd put $bar in list context, I guess. 13:03
moritz_ not necessarily
not for non-Cool objects, or so
mathw rakudo: my $bar = "bar"; say "foo$bar[]baz";
p6eval rakudo 8b0022: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class 'Str'␤ in main program body at line 1␤»
13:04 colomon left
mathw likes moritz_++'s first suggestion 13:04
masak hm, if "OH HAI"[0] is supposed to work, will "OH HAI"[] also work?
moritz_ masak: yes
but it throws up intersting questions
like
what is %hash[0] supposed to return? 13:05
an arbitrary pair from the hash? or the whole hash?
or throw an error, for the sake of easier finding newbie's bugs?
13:06 Guest87099 left
masak those are good questions. I don't know. 13:06
moritz_ it's what kept me from implementing it in rakudo
13:06 envi^home joined
masak I don't like "an arbitrary" pair, because it'd encourage array indexing of hashes. 13:07
I can sorta see the rationale for "the whole hash". just wondering what the ultimate consequences of such a design would be.
moritz_ hash in list context is usually list of pairs 13:08
mathw It's either an arbitrary pair, due to implicit list contextification 13:09
Or it's an error
Because hashes are not lists and do not do Positional
moritz_ uhm 13:11
cono rakudo: @(1 => 2, 3 => 4).map({.WHAT}).perl.say
p6eval rakudo 8b0022: OUTPUT«(Pair, Pair)␤»
moritz_ how do I obtain the home directory in a Makefile?
~ doesn't seem to expand
mathw $(HOME)?
moritz_ oh wait, it worked 13:12
13:13 patspam joined 13:14 eiro joined
eiro hello 13:14
moritz_ hello eiro 13:15
masak: ufo patched. Review welcome 13:16
mathw Hello eiro
masak moritz_++ # will look 13:17
moritz_ first review, then ++ :-)
masak takes shortcuts sometimes 13:19
mathw well surely there's a ++ for effort and then another one for good effort? 13:20
masak that, too :)
13:21 am0c joined
masak huh, didn't know about the 'install' tool until now. :) 13:23
moritz_ it avoids having to mkdir -p the directory first
masak what's the thinking behind having 'install' only install the sources? 13:24
I'd have thought that as soon as the .pir files are built, they'd be the primary artifacts to install. 13:25
moritz_ I've suffered too often from outdated .pir files
mathw but an installed module's source won't be changing 13:26
moritz_ but rakudo does.
mathw right now, that is a problem yes
if only rakudo could detect that
maybe it can
'if this PIR file is older than me, ignore it' 13:27
masak moritz_: the whole point of installing is to get the speed, once and for all.
the source files need to be compiled each time they're run.
you're right, the ++ was premature :P
moritz_ masak: that's your point of installing. Mine is to have the modules in a location where rakudo finds them 13:28
masak it's good to hear different views.
moritz_ which is that CPAN.pm is all about
masak moritz_: I'd argue that your 'make install' semantics goes against common expectations, too. conceptually, 'make install' follows upon 'make' because the former depends on the latter. 13:29
moritz_ masak: that's why you don't need a 'make' step for pure perl modules 13:30
masak: anway, you're welcome to change the patch to your liking, should be easy enough
mathw the trouble is, you don't *need* to install compiled code
you can install source modules and they'll still work
because rakudo will just get on and compile them first 13:31
moritz_ masak: but if you do, please make an install-src target or so that only installs .pm files
mathw maybe it should cache them
13:31 mjk left
moritz_ that's the long term plan 13:31
13:31 mjk joined
mathw yay 13:32
moritz_ I've modulified Math::Model now 13:33
masak moritz_: I'll make an install-src target. I managed to convince myself that the .pir files should be the default, but I also see your use case. 13:35
moritz_: for full disclosure, pls is going to install the .pir files. :)
moritz_ masak: only the pir files? 13:36
masak didn't say 'only'.
moritz_ that's why I asked.
masak oh, sorry. thought you asked 'why only' :)
hm, I don't know. mberends is for copying both the .pir and the .pm6? files. 13:37
I've never quite seen why, but I'm willing to be convinced it's a good idea to copy the source, too.
moritz_ sometimes the .pm6? files can contain documentation
masak right, but this is a package installer, not a documentation browser.
13:38 pmurias joined
moritz_ and the documentation is not part of the package? 13:38
mathw it depends on what the ultimate model for Rakudo library compilation/caching is
moritz_ if it's not installed, it's not accessible to the user. Not even with a documentation browser
masak moritz_: I just mean that I'm out to solve a very specific sub-problem. and the enemy of a good, small solution is feature creep. 13:39
moritz_ feels oddly on a different wavelength than masak today 13:42
masak yes, unusually so.
moritz_ so, what very specific sub-problem did you set out to solve?
masak PERL6LIB management. 13:43
not having to set PERL6LIB manually very often.
after a module has been installed, it's in a place where one doesn't have to manually set PERL6LIB to get universal access to fast PIR code. 13:44
moritz_ that's... a quite different goal than proto had evolved into
masak what, according to you, had proto evolved into? 13:45
moritz_ a module ecosystem
for example, look at that website
proto.perl6.org
that's nothing a PERL6LIB management program would need
masak "Proto is a hyper-lightweight dependency tracking and module installation system." 13:46
that's from the README.
it doesn't say "Proto is an ecosystem."
moritz_ I'm aware of that 13:47
masak if putting the name into a subdomain of perl6.org makes something an ecosystem, I'm not sure I want it for pls either :)
maybe we should call it projects.perl6.org.
moritz_ so...
we also have perl6-projects.org :-) 13:48
masak g'ah! :)
ank was right! we are beyond help in our confusion. :P
moritz_ that's the old domain of the website that then became perl6.org
masak we still have it?
does it at least redirect to perl6.org? 13:49
pmichaud good morning, #perl6
phenny pmichaud: 01:41Z <colomon> tell pmichaud I think at least the hyper metaop routine ought to be Spec. That would enable you to use all the fairly sophisticated hyper array/hash handling and threading code with any one or two parameter sub / block, rather than just limiting it to operators. IMO that seems like a big win.
pmichaud: 12:12Z <colomon> tell pmichaud that one of his changes last night broke reducewith. Seems like lists are no longer flattening, or something like that: [+] 1, 2, 3 now equals 1, 2, 3
moritz_ masak: yes
masak moritz_++
morning, pmichaud.
moritz_ and still registered on my name
masak: so... split proto/pls and the website?
masak: sounds like a sensible thing to do
there were basically two reasons for having them in the proto repo 13:50
1) it uses projects.list
2) the proto repo was convenient, already there, and everybody[tm] had access
masak I don't care much where those script are situated. 13:51
moritz_ well
it's more of a question
masak I care about killing off the name 'proto', and preserving the meaning of 'pls'. :)
moritz_ how strong do you want the coupling between the website and pls?
we could have packages.perl6.org, and make it "our new search.cpan.org" 13:53
masak I'm very happy the website exists. it creates a lot of visibility for the projects.
I think I want the coupling to be minimal.
even pls will probably be replaced some day.
moritz_ and have a link to pls, stating that pls is an installer that can handle them.
masak and it's hard to motivate the name 'pls' as the name of an ecosystem. :)
moritz_ right
so, +1 to decoupling
masak aye.
moritz_ where should projects.list live? 13:54
can we decentralize it somehow?
13:54 perlygatekeeper joined 13:55 uniejo left
moritz_ is afk to have some cake, and eat it :-) 13:55
masak it's worked fairly well to have it in a world-writable place so far.
maybe we could put it in the Mu repo?
moritz_ sure
13:56 am0c left, wasy left 14:00 kaare joined, kaare is now known as Guest23195
pmichaud the perl6 repo is available 14:00
oops 14:01
the perl6 account is available
we can do whatever repos we want there.
14:01 gbacon joined
masak perl6/ecosystem would be kinda nice. 14:01
pmichaud let me know when/what repo you'd like to have and I'll create it :)
masak in the end, it doesn't matter much. pls will fetch the information from wherever, and can be easily updated to our latest whims :) 14:02
14:02 pmurias_ joined, pmurias_ left 14:09 alester joined
[particle] should there be a rakudo-star repo that pulls in rakudo and other code? 14:11
14:13 mjk left
pmichaud [particle]: you mean like github.com/rakudo/star ? ;-) 14:14
[particle] pmichaud++ 14:15
14:19 sawyer_ joined
sawyer_ hello all 14:19
14:20 pmurias left
sawyer_ per masak's advice, i just wanted to note that i'm another person who is hopefully waiting for rakudo star. it's actually marked as the day i'll start learning Perl6 for real :) 14:20
pmichaud sawyer_: noted, thanks, and welcome! 14:21
sawyer_ at first it was because i thought it will take a lot of time till it does, but the more time passes by the more i want it to arrive earlier so i could start learning already
masak yay! \o/
pmichaud we'd like it to arrive earlier too :)
14:21 ggoebel left
pugssvn r31254 | pmichaud++ | [t/spec]: Remove tests for obsolete Seq type. 14:22
sawyer_ but, i should warn, the updates on rakudo and perl6 and the posts you guys put up sure make it tempting to start learning well before rakudo star is out
:)
14:22 plobsing joined
sawyer_ and a last *huge* thank you goes out to everyone involved in this awesome project! 14:23
rokoteko sawyer_: does it have to be the Rakudo -project perl or any perl6 implementation in general is good for you?
14:24 ggoebel joined
sawyer_ rokoteko, i don't really have opinions on one project vs. the other, since i don't know them enough 14:24
i've read plenty about rakudo (i'll admit it does have _much_ better "marketing") and i like the approach and attitude and community around it 14:25
but i'm still very supportive of any perl6 implementation
rokoteko sawyer_: so to put in another way, you aren't waiting for Rakudo perl, but perl6?
sawyer_ rokoteko, well.. rakudo is starting i can wait for, perl6 doesn't seem like one
rokoteko sawyer_: well, they are the first ones who put a date on perl6. wasnt it last april or something? 14:26
sawyer_ since it doesn't "arrive" at any point
rokoteko I think it's June now.
sawyer_ hmm.. i'm sorry, i don't follow
rokoteko ok, no probs. let's just forget about this. :) 14:27
sawyer_ okie ;)
14:27 daleyb joined, nothingmuch left 14:28 nothingmuch joined
moritz_ Rakudo has regular releases of the compiler 14:28
and a distribution release named "Rakudo *" announced for this month
14:28 nothingmuch left
moritz_ so if you want to wait for something, wait for the thursday after the third tuesday of any given month 14:29
14:29 nothingmuch joined
sawyer_ i guess that's final, this weekend i'm starting to study Perl 6! 14:31
14:31 ruoso left
mathw sawyer_: yes! 14:31
masak make sure to stay on the channel. lots of people here are more than willing to help.
14:32 ash___ joined
mathw We like to help 14:32
masak coupled with tutorials, the channel is probably the fastest/easiest way to learn for most people.
moritz_ sawyer_: do you know other programming languages already?
masak Perl 5, presumably.
sawyer_ moritz_, hmm.. Assembly a bit, Pascal a bit, C, C++ and a few more 14:33
14:33 Irwin joined
sawyer_ but i'm mainly on Perl5 14:33
moritz_ so, part of the target audience for the Using Perl 6 book
sawyer_ i have a few modules on CPAN and keep a blog on blogs.perl.org
Su-Shee ok, your application to learn perl 6 is approved then. ;) 14:34
sawyer_ yay! :)
14:34 nothingmuch left, rv2733 joined, nothingmuch joined
Su-Shee please paint a butterfly on your cheeks. 14:35
sawyer_ can i program something to paint it?
masak program something in LOGO to paint it :) 14:36
then make a LOGO interpreter in Perl 6...
awwaiid ... profit? 14:37
14:37 [mark] left
Su-Shee sawyer_: a processing port would be nice. 14:38
sawyer_ processing port?
14:38 ggoebel left, jakre joined
masak processing.org/ 14:39
Su-Shee: problem with that is, Perl 6 is not in the browser as is JavaScript.
Su-Shee (ok, that's mean. it would require to bind opengl, libxine or gstreamer and cairo as well ;)
sawyer_ ah i heard about it
14:39 ruoso joined
Su-Shee masak: processing isn't as well. the orginal is a standalone-java app. 14:39
processing.js is already a port. 14:40
frettled Wasn't someone working on a JS-based implementation of Perl 6?
Su-Shee sawyer_: I'm kidding. ;)
14:40 justatheory joined
sawyer_ Su-Shee, :) 14:40
Su-Shee (would be nice though. yes.) 14:41
masak Su-Shee: even Java is more "in the browser" than is Perl 6. 14:44
Su-Shee not the processing app. it uncluded a tiny gui, plenty of opengl bindings, soundlibs and whatevernot. ;) that declaring as "more in a browser" really just "in principle you could re-do it as java applet" ;) 14:46
14:47 ggoebel joined
Su-Shee which makes it a perfect perl 6 candidate btw. java wasn't born with gl bindings as well... 14:47
14:48 wasy_ joined 14:49 wasy_ left, wasy_ joined 14:50 wasy_ is now known as wasy
masak Su-Shee: thanks for the explanations. lots of stuff I didn't know. 14:51
it would be really awesome if someone actually did port processing. :)
pmichaud I don't know about port, but jnthn++ does lots of pivo processing. :-)
14:52 wasy left, rv2733 left
pmichaud
.oO( too obscure? )
14:52
14:53 plobsing left
Su-Shee masak: it's one of the _very_ attractive open source projects made for "users" explicitly and brought masses of shiny stuff, great books and curious people into programming. it's for "media art" what arduino is for "gadgets and wearables" 14:53
I can't stress enough how well done processing and arduino are and what folks they managed to attract. 14:54
masak pmichaud: :P
pmichaud okay, I have a question 14:58
given
my $x = 44; my $y = (11, $x, 22);
there are several possible interpretations for $y 14:59
masak sees two
pmichaud (1) item context on a Parcel could cause it to become an Array, such that the above is the same as saying $y = [11, 44, 22]
(2) item context on a Parcel could cause it to become a Seq, which is the same as an Array except its elements are immutable
moritz_ (2) is what the spec says, iirc 15:00
masak and what I'd expect.
pmichaud (3) item context on a Parcel could cause it to become a List, in which case $y[1] is a reference to $x (and assigning to $y[1] changes the value of $x)
okay. I had been working to eliminate the Seq type, this would put it back. 15:01
(where "this" == (2) )
masak aye.
mathw doesn't like #3
masak #3 is asking for trouble.
mathw #3 would bite people
in sensitive spots
pmichaud okay, so eliminate #3. Should the result then be immutable or mutable? 15:02
masak immutable.
pmichaud okay, will do that.
masak but I only say that as a gut reaction. :)
mathw what happens if you try to mutate a Seq?
pmichaud well, one can still push/pop from a Seq
but its elements are immutable
masak because that's the way Perl 5 does it, and, up until now, Perl 6.
pugssvn r31255 | pmurias++ | [smop] perl Build.PL test passes all the C smop tests
pmichaud well, Perl 5 doesn't have the notion of immutability
moritz_ perl 5 has lists 15:03
masak one can push/pop from a Seq? that's not very immutable.
moritz_ and lists are immutable
but they are well hidden, usually
pmichaud moritz_: one can have a reference to a list?
moritz_ nope
pmichaud okay
moritz_ buubot: eval: push (1, 2, 3), 4
buubot moritz_: ERROR: Type of arg 1 to push must be array (not constant item) at (eval 38) line 1, near "3)"
pmichaud masak: In the new design, Lists are mutable in the sense that they can have elements added/removed. They don't say anything about the mutability of the individual elements. 15:04
moritz_ since you can't get a reference to a list, it's not obvious it's immutable :-)
pmichaud so, a Seq would be a List where all of the elements are immutable.
masak I can't see a reason to push/pop a Seq... 15:05
pmichaud can you see a reason to push/pop a List ?
masak no :)
pmichaud as in, when repeatedly processing a list of elements?
as in, .map?
cono my $y = [11, $x, 22] will be muttable?
moritz_ cono: yes 15:06
pmichaud cono: yes.
moritz_ pmichaud: no reason for push/pop
cono nice )
pmichaud moritz_: munching a list is how we're now doing iteration
masak pmichaud: I don't see what .map is doing as push/pop -- but maybe it is under the new List model.
reminder: Last Call for Papers to YAPC::EU is tomorrow! conferences.yapceurope.org/ye2010/
pmichaud otherwise our iterators have to act like Lists
and right now we want the iterators to be immutable. 15:07
moritz_ pmichaud: I meant user-exposed mutability... I don't really care what you do under the hood, as long as you do the right thing :-))
pmichaud moritz_: yes, this is user-exposed mutability.
I can best describe it this way 15:08
suppose we have a function "xyz" that does a gather/take 15:09
what kind of object should "xyz" return? In the new model, it returns a List.
masak safer to name it something other than 'xyz'... :P
pmichaud ah, an even better example 15:10
$*IN.lines()
currently $*IN.lines() will be implemented using gather/take
and it returns a List
masak nod.
pmichaud so, we can do something like $*IN.lines().map(...)
masak absolutely.
moritz_ and currently that implies that you can use its return value only once
masak um, what? 15:11
pmichaud If $*IN.lines() returns a List, then .map() is going to be operating on the List.
if the List is immutable, then it will have to store every line that it reads.
moritz_ rakudo: my $x = gather { take 1; take 2 }; .say for $x.list; .say for $x.list
pmichaud i.e., there's no way to "consume" the input as it's being processed.
p6eval rakudo 8b0022: OUTPUT«1␤2␤»
moritz_ masak: see? after one iteration, it's DEAD 15:12
erm, EMPTY
pmichaud not in the new model it isn't.
moritz_ that's what I meant by 'currently'
masak moritz_: that goes against my expectations, I think.
so I'm glad it's changing.
pmichaud++
pmichaud > my $x = gather { take 1; take 2 }; .say for $x.list; .say for $x.list;
1
2
1
2
>
this is the exact reason we're moving to this new model. 15:13
moritz_ and if you do
.say for gather {take 1; take 2}; 15:14
is the 1 stored after it was being iterated over?
pmichaud in the new model? no.
15:14 pmurias joined
pmurias ruoso: hi 15:14
phenny pmurias: 13 Jun 18:51Z <diakopter> tell pmurias perlesque is back to All tests successful.
masak that's OK too.
it's GC'd because no-one can see it anymore.
pmichaud correct.
moritz_ that's not only good, it's great! 15:15
pmichaud right
but in order for that to work, List has to be mutable
masak immutability FTW!
moritz_ it means that we can do 1..*.map(...)
15:15 tadzik joined
masak moritz_: (1..*).map(...), probably 15:15
moritz_ pmichaud: if that's the price to pay, I'm fine with it.
masak: right
pmichaud what we used to think of as lists in Perl 5 are now Parcels. 15:16
i.e., (1, @a, b) is a Parcel.
and Parcels are immutable (although the things in a Parcel might not be)
anyway, I'll add Seq back into the mix. 15:17
moritz_ so my $x = (1, 2, 3) would be a Seq
pmichaud yes.
A Parcel in item context flattens and holds the values as a Seq. 15:18
moritz_ flattens?
so my $x = (1, (2, 3)); $x.elems would be 3?
pmichaud yes. 15:19
moritz_ (I'm not saying anything's wrong with it, I'm merely surprised)
pmichaud it's been that way, like, forever. :-)
moritz_ well
I remember it that way:
list context flattens
pmichaud rakudo: my $x = (1, (2, 3)); say $x.elems
p6eval rakudo 8b0022: OUTPUT«3␤»
moritz_ slice context converts parcels into arrays
and scalar contains preserves the parcels 15:20
(though rakudo never implemented it that way)
pmichaud ...?
15:20 sukria joined
pmichaud "preserves the parcels"? 15:20
moritz_ but I could be way behind with my mental model
$x.perl would produce (1, (2, 3))
pmichaud no, $x.perl would produce (1,2,3)
because it's been flattened.
rakudo: my $x = (1, (2, 3)); say $x.perl; 15:21
moritz_ (in my probably outdated, mental model)
p6eval rakudo 8b0022: OUTPUT«(1, 2, 3)␤»
moritz_ rakudo: say (1, (2, 3)).perl
p6eval rakudo 8b0022: OUTPUT«(1, (2, 3))␤»
pmichaud ah yes, but it hasn't been put in item context in that case
because there was no assignment to $x :-)
moritz_ ok, then ignore what I said 15:22
don't let me confuse you, you'll manage that all by yourself :-)
pmichaud note that I don't typically advocate any particular design -- I just try to make a design fit all of the characteristics that have been claimed :-)
and "parcels flatten in item context" is one of those characteristics. :-) 15:23
moritz_ wfm
anyway, let me tell you again that rakudo rocks. 15:25
pmichaud :-)
it's getting there.
moritz_ Yesterday night I've implemented something which I've been wanting to write for roughly 9 years
pmichaud oh, that's awesome.
moritz_ and never in the process did I have the feeling that rakudo was getting in my way 15:26
pmichaud that's even more awesome.
blog it :-)
(said the person who is woefully inadequate on blogging)
moritz_ but rather "oh nice, I can use Z=> 0..Inf here"
avar How do I dump the AST of the program wit ./perl6 ?
*with
pmichaud ./perl6 --target=past
moritz_ doesn't work with -e though 15:27
pmichaud yeah, need to fix that one.
moritz_ needs a file, or reading from STDIN
ruoso pmurias, hi
cono rakudo: (<a b c d> Z=> 1..Inf).perl.say 15:28
p6eval rakudo 8b0022: OUTPUT«("a" => 1, "b" => 2, "c" => 3, "d" => 4)␤»
cono incredible :)
masak moritz_: I had the same feeling during the weekend. I stumbled on a rakudobug or two, but they were hardly an impediment to writing what I wanted, which invcluded a dozen roles, classes, dynamic dispatch, and lexical scopes shared across module boundaries.
moritz_ nice 15:29
takadonet cono: indeed it is 15:30
15:30 masak left
cono so often operation in perl5 for me: my %h = (@arr Z=> 1..Inf); 15:32
15:32 tedv joined
moritz_ rakudo: say (<a b c> Z=> 1 xx *).perl 15:33
p6eval rakudo 8b0022: OUTPUT«("a" => { ... })␤»
moritz_ rakudo: say (<a b c> Z=> 1 xx Inf).perl
pmurias ruoso: i'm not sure what's the right way to link all the smop libraries
p6eval rakudo 8b0022: ( no output )
cono (1 xx Inf) ? 15:34
moritz_ uhm, seems like xx isn't lazy yet
15:34 jhuni joined
cono ah 15:34
moritz_ cono: infinite list of 1's
pmurias should the individual libsmop-s0native.so be linked with perl5, -lrt etc.?
cono ic
takadonet cono: More things will be lazy very soon
pmichaud
.oO( working on it now, in fact :-)
cono I like lazyness :) 15:35
15:35 Ross joined
cono maybe coz I'm lazy? :D 15:35
takadonet pmichaud: I know :) been waiting for lazy list forever! Will be using it very extensive in bioperl6
15:35 colomon joined
takadonet most of our data set are GBs of text files 15:36
15:44 szabgabx joined
szabgabx rakudo: my $x = Failure; if $x < 3 { say "ok" } 15:45
p6eval rakudo 8b0022: OUTPUT«Method 'Bridge' not found for invocant of class ''␤ in 'infix:<<>' at line 3195:CORE.setting␤ in main program body at line 11:/tmp/CSxg2uWKAx␤»
colomon interesting. 15:46
rakudo: say Failure ~~ Real
p6eval rakudo 8b0022: OUTPUT«1␤»
15:46 patrickas joined
colomon ah 15:46
moritz_ huh?
patrickas o/ perlsixers
moritz_ a Real Failure? :-)
cono rakudo: (1, 1, 1, 2, 2, 3, 3, 3).sort(-*).perl.say
p6eval rakudo 8b0022: OUTPUT«(3, 3, 3, 2, 2, 1, 1, 1)␤»
cono rakudo: (1, 1, 1, 2, 2, 3, 3, 3).sort(*).perl.say 15:47
p6eval rakudo 8b0022: OUTPUT«src/call/context.c:772: failed assertion 'Parrot_pcc_get_regs_used(interp, ctx, REGNO_PMC) > idx'␤Backtrace - Obtained 16 stack frames (max trace depth is 32).␤/home/p6eval//p1/lib/libparrot.so.2.4.0 [0x2b8cfcf49923]␤/home/p6eval//p1/lib/libparrot.so.2.4.0(Parrot_confess+0x87)
..[0x2…
cono oops
moritz_ urks.
colomon I don't know why Failure is a Real, but that's why you get that particular error.
pmichaud try +* instead of *
(if you want a numeric sort)
moritz_ or just .sort()
cono works
moritz_ which sorts numerically if all values are numbers
pmichaud rakudo: say Any ~~ Real 15:48
p6eval rakudo 8b0022: OUTPUT«0␤»
colomon rakudo: say Failure ~~ Str
p6eval rakudo 8b0022: OUTPUT«0␤»
pmichaud rakudo: say Failure ~~ Positional
p6eval rakudo 8b0022: OUTPUT«1␤» 15:49
pmichaud I'm guessing it has to do with roles.
colomon +1
pmichaud seems like Failure ~~ <role> returns 1.
moritz_ rakudo: say Mu ~~ Positional
p6eval rakudo 8b0022: OUTPUT«0␤»
pmichaud rakudo: say Positional ~~ Associative
p6eval rakudo 8b0022: OUTPUT«0␤»
szabgabx do I understand correctly that Failure should be used instead of "undef" if I want the value to fail in any comparision?
similar to how NULL behaves in SQL ? 15:50
moritz_ NULL behaves more like NaN
rakudo: say Mu == 0
p6eval rakudo 8b0022: OUTPUT«No applicable candidates found to dispatch to for 'infix:<==>'. Available candidates are:␤:()␤:(Num $a, Num $b)␤:(Date $a, Date $b)␤:(Real $a, Real $b)␤:(Numeric $a, Numeric $b)␤:(Any $a, Any $b)␤␤ in main program body at line 11:/tmp/Ljo5zHCBjB␤»
moritz_ rakudo: say NaN == 0
p6eval rakudo 8b0022: OUTPUT«0␤»
szabgabx rakudo: my $x = NaN; if $x < 3 { say "ok" }
p6eval rakudo 8b0022: ( no output )
szabgabx rakudo: my $x = NaN; if $x > 3 { say "ok" } 15:51
p6eval rakudo 8b0022: ( no output )
pmichaud rakudo: sub xyz() { fail "No such value"; }; say xyz() < 4;
p6eval rakudo 8b0022: OUTPUT«Method 'Bridge' not found for invocant of class 'Failure'␤ in 'infix:<<>' at line 3195:CORE.setting␤ in main program body at line 11:/tmp/IQf8UPM0lP␤»
szabgabx ok, nice
pmichaud well, something fails.
moritz_ :-)
sub xyz() { fail_hard "no such value" }; say xyz() < 4
rakudo: sub xyz() { fail_hard "no such value" }; say xyz() < 4
p6eval rakudo 8b0022: OUTPUT«Could not find sub &fail_hard␤ in 'xyz' at line 11:/tmp/LOxwPU5jLZ␤ in main program body at line 11:/tmp/LOxwPU5jLZ␤» 15:52
moritz_ also fails, somewhere ;-)
pmichaud what is fail_hard?
pmichaud reads spec....
moritz_ pmichaud: not specced
but exactly what it sounds like
it fails. hard.
pmichaud wouldn't that be "die" ?
moritz_ sorry, could not resist
15:58 finanalyst joined
patrickas rakudo: my @p=['a', 'b'],['c', 'd'];say @p.perl ;say @p[*][0].perl ;say @p[0][*].perl; 16:04
p6eval rakudo 8b0022: OUTPUT«[["a", "b"], ["c", "d"]]␤["a", "b"]␤("a", "b")␤»
patrickas is that a double bug? or a single bug? or a patrickas-does-not-understand-specs bug ? 16:06
moritz_ it's a rakudo-doesn't-do-multidimensional-arrays-yet bug
pmichaud that's not really a multidimensional array anyway :-) 16:07
say @p[*][0] is the same as @p.[*].[0]
moritz_ @p[*;0] would be better? 16:08
patrickas see ... so that's a patrickas-does-not-understand-spec bug after all
pmichaud moritz_: yes, I think so.
I'd have to go look at S09 to see if [0][0] translates into [0;0]. Somehow I hope not. 16:09
patrickas which is also NYI i suppose
too bad ... it would have helped my naive slow junction powered sudoku solver :-)
moritz_ right; it needs slice context first
pmichaud ah, cascaded subscripts is supposed to work for multidim arrays (S09)
but we don't have multidim arrays yet.
moritz_ "will either fail or produce the same results as the equivalent semicolon subscripts" 16:10
seems like failure is an option, after all
pmichaud well, clearly we don't expect it to just "fail" on single-dimension arrays 16:11
$/[1][0][1]
(the second capture within the first capture of the second capture)
(or other interpretations on match objects)
moritz_ wonders if multiple postcircumifixes should be compile-time transformed
pmichaud I'm not sure we can if we don't know the base type. 16:12
if we know the base type, then sure.
moritz_ well, I read S09 as "mostly conjectural" anyway
pmichaud anyway, that's all S09 magic, to be handled.... exactly
patrickas slow naive sudoku solving for fun and profit gist.github.com/437866 :-) 16:14
moritz_ that looks much more concise than what I've put in the pugs repo some year(s?) ago 16:15
patrickas moritz_ probably cause your solves more puzzles :-) 16:16
16:16 daleyb left
moritz_ it doesn't, actually 16:16
it's really buggy
and doesn't honor some constraints
patrickas well I know mine solves one ... the one in the example ... that's one more than I have ever solved :-) 16:17
moritz_ :-) 16:18
patrickas now i feel guilty, let me try another one :-)
moritz_ moritz.faui2k3.org/files/yasss-current.tar.gz comes with many plain-text test cases 16:19
you just need to implement converting a line of 81 digits to a sudoku, and the other way round 16:20
tadzik these tests will take time :) 16:21
moritz_ ah well, no need to run them all
just wanted to point out a lazy solution to get some test data
it's a bit disorganized, because I didn't know how to write proper tests back then when I started the project 16:22
16:22 azert0x joined, azert0x left, pyrimidine joined 16:26 daleyb joined
patrickas whoa! That's a real project with release numbers and tests and stuff .... 16:27
16:27 azert0x joined
pugssvn r31256 | pmurias++ | [smop] perl5 libs are linked into smop-p5, rt into profile 16:28
16:28 azert0x left, azert0x joined
moritz_ patrickas: the first open source project I ever opened for download 16:28
16:28 azert0x left
patrickas :-) 16:29
moritz_ it contains a set of two interacting routines I've written once, tested extensively, and then forgot how they worked 16:30
16:30 Ross left
moritz_ and since then never managed to understand them again 16:30
16:30 cdarroch joined, cdarroch left, cdarroch joined
moritz_ so I pray that I'll never find a bug in them :-) 16:30
it's for bringing a sudoku into a canonical form, in some efficient way 16:31
16:31 azert0x joined 16:32 Ross joined
patrickas hehehe I hate it when I can't understand my code, and with "blame" tools I can't even curse at the author anymore :-) 16:32
16:32 azert0x left
colomon pmichaud: ping? 16:33
16:36 ciphertext left 16:37 ciphertext joined, meppl joined
TimToady admires his backlog from a distance... 16:37
phenny TimToady: 08:59Z <sorear> tell TimToady I have NFAs being generated for some simple patterns :D
16:38 daleyb left
TimToady :D indeed 16:38
16:39 azert0x joined 16:40 azert0x left, azert0x joined 16:41 azert0x left
pmichaud colomon: pong 16:41
colomon have you done anything with RangeIter yet? 16:42
pmichaud colomon: not yet. 16:43
szabgabx is there already a way to list the content of a directory?
colomon pmichaud: okay, I'm looking at it now.
pmichaud (My ISP just started blocking outgoing connections, so I might disappear at any moment until it's resolved.)
szabgabx Could not find sub &opendir - rakudo tells me 16:44
colomon I'm tethered to my cellphone in the car again, so could also disappear without notice. :) 16:45
alpha: opendir('.') 16:47
p6eval alpha 30e0ed: OUTPUT«Could not find non-existent sub opendir␤in Main (file src/gen_setting.pm, line 324)␤»
Su-Shee alpha: use IO; opendir('.');
p6eval alpha 30e0ed: OUTPUT«Could not find non-existent sub opendir␤in Main (file src/gen_setting.pm, line 324)␤»
Su-Shee tsk.
szabgabx same with glob: Could not find sub &glob
pmichaud I'm not sure if opendir is even specced yet. 16:50
cono rakudo: run("ls").say
pmichaud (isp is blocking me so I can't easily find out)
cono :0
p6eval rakudo 8b0022: OUTPUT«build␤Configure.pl␤CREDITS␤docs␤dynext␤lib␤LICENSE␤Makefile␤parrot␤perl6␤perl6.c␤perl6_group.c␤perl6_group.h␤perl6_group.o␤perl6.o␤perl6.pbc␤README␤src␤t␤Test.pir␤Test.pm␤tools␤0␤»
colomon pmichaud: what's the link to your google doc explaining the new system? 16:55
16:56 Bzek_ left
colomon never mind, finally found it in the log 16:58
docs.google.com/Doc?id=dg3jqmpv_16fk7kdjdb
szabgabx colomon, there is a bug in that run("ls") 17:02
it appends a 0 at the end of the list
17:02 azert0x joined, azert0x left, azert0x joined, azert0x left 17:03 ggoebel left, azert0x joined 17:04 azert0x left, azert0x joined, envi^home left 17:05 azert0x left
cono Where I can find pir::* functions ? e.g. pir::open__PSS 17:05
17:05 azert0x joined, azert0x left
pmichaud cono: those are Parrot PIR instructions. 17:05
It's just pir::+opcodename+__+argumenttypes
17:05 ggoebel joined, azert0x joined 17:06 azert0x left
cono pmichaud: grep -R "open__PSS" * say nothing :( 17:06
17:06 azert0x joined
pmichaud cono: they'd be documented in Parrot, under docs/ops 17:06
cono k, thanks
colomon and without the __PSS part 17:07
pmichaud note that anything that has pir:: is not part of official Perl 6.
that's just the way we're able to get rakudo to talk to the low-level virtual machine opcodes
szabgabx I see stat() is not implemented either, is there a way to check if a something is a directory or a file? 17:08
17:08 ggoebel left
colomon rakudo: say "/etc/passwd" ~~ :f 17:09
p6eval rakudo 8b0022: OUTPUT«1␤»
colomon rakudo: say "/etc/passwd" ~~ :d
p6eval rakudo 8b0022: OUTPUT«0␤»
colomon rakudo: say "/etc" ~~ :d
szabgabx thanks
p6eval rakudo 8b0022: OUTPUT«1␤»
cono not so much doc in parrot/docs/ops :(
pmichaud oh, open was moved to be a dynop 17:10
17:10 pmurias left
pmichaud I wonder where the dynops docs end up 17:10
cono: best I can do at the moment then would be parrot/src/dynoplibs/io.ops 17:12
(the source code for the IO dynops)
17:12 ggoebel joined
pmichaud that used to be automatically generated into a .pod file, but I don't know if that still takes place. 17:12
cono perldoc io.ops works fine for me ;)
pmichaud: thanks 17:13
diakopter TimToady: you must have a hundred thousand lines of backlog 17:14
17:14 diakopter sets mode: +v p6eval
Tene I've got 213532 lines of #perl6 for all of 2010 so far 17:15
diakopter oh
17:15 plainhao left 17:16 dakkar left
sorear pmichaud: Is there any reason to have Seq instead of just making an Array with all elements bound to readonly containers? 17:17
moritz_ "only" 200k lines here (I filter leaves and joins)
cono pir::* functions I can use only in nqp ?
moritz_ no, also works in rakudo
17:17 jhuni left
cono thanks 17:18
pmichaud sorear: that's a possibility, yes.
with the current implementation it's easier to have it as a separate type.
17:19 hercynium left
moritz_ it's more transparent to the user too 17:19
pmichaud yes, that's true also.
17:26 ggoebel left 17:27 pyrimidine is now known as pyrimitroll 17:30 ggoebel joined 17:32 pyrimitroll is now known as pyrimidine
colomon ouch. my current rangeiter code actually segfaults. :( 17:32
pmichaud infinite loop, possibly
or it's throwing an exception that is going into an infinite exception handler loop
17:33 ggoebel left
cxreg is there an official cpan for 6 yet? 17:35
17:35 ggoebel joined
pmichaud there will never be an official cpan for 6, afaik. 17:35
moritz_ no. The closest is proto.perl6.org
cxreg pmichaud: that seems like a mistake
moritz_ depends on what you mean by "official"
colomon yep, definitely looks like an infinite loop
pmichaud cxreg: Is there an official cpan for Linux?
moritz_ if you mean "official" in the same sense as the Perl 5 CPAN, ie "a service that a bunch of volunteers run", then probably yes 17:36
pmichaud anytime someone asks "is there an official X for Perl 6", you're tending towards p5-think
moritz_ maybe add "and there are tools that support that"
saaki kernel.org?
cxreg um, ok. linux is a poor example. most projects /do/ have central places to find extensions and libraries.
pmichaud saaki: that would be for the linux kernel, yes.
saaki: I'm talking about programs that run on top of linux.
moritz_ there's nothing to prevent anyone from opening a competing perl 5 or perl 6 CPAN 17:37
pmichaud moritz_: except for cultural convention
moritz_: which is what we're trying to change
moritz_ and neither would be less "official" than an existing one
cxreg pmichaud: so what then, the answer is "i donno, google for some random keyword and hope you find it" ?
saaki pmichaud: that's what distributions are for i suppose =p
pmichaud cxreg: same as the linux world -- we have distributors
but there's not an "official distributor"
moritz_ we tend to encourage diversity, without trying to encourage "balkanism" :-) 17:38
cxreg what, you're not a BSD fan?
pmichaud there's definitely a middle ground between "one official distribution" and "no distributions whatsoever"
cxreg ;)
pmichaud so, the correct question is: are there cpans for 6, and the answer is "yes". 17:39
cxreg ok fine. but if i'm a new perl 6 author and i wrote some stuff and want people to have it, i'm certainly not looking forward to maintaining lots of distributions.
Su-Shee let's get there first. ;)
pmichaud cxreg: you think the people who write programs for linux are responsible for maintaining all of the distributions? ;-) 17:40
moritz_ cxreg: I guess there will be one central-by-convention place where you can announce your project
pmichaud distributors are the ones who collect modules and package them
Su-Shee I don't know on what lots of distributions you want to maintain modules on right now :)
pmichaud modules writers don't have to do that.
cxreg this seems awfully idealistic
pmichaud cxreg: it's no different than what happens with Linux today.
TimToady remember you're on #perl6
pmichaud TimToady++
moritz_ cxreg: and currently that would be the "proto" project; if I were to write a competing module iinstaller, I'd certainly fetch information about modules from proto 17:41
because I'm lazy, and somebody else has already done some of the work (compiling a module list)
17:42 hercynium joined
cxreg I don't have a problem with idealism, but it seems like this could be harmful to developing community before critical mass is reached 17:44
who knows
pmichaud it's not idealism, it's experience 17:45
17:45 arthur-_ joined
moritz_ cxreg: so what would you do? try forbid all but one attempt? 17:45
pmichaud having "one official library repository" runs into scaling issues
TimToady the trick is not to focus on either the first rung or the last rung of the ladder, but to see all the rungs
tadzik yay my bug has been fixed. So I helped Perl6 development?
moritz_ tadzik: you did 17:46
tadzik yay :)
and thanks for a fix
cxreg moritz_: who said anything about forbidding anything? 17:48
moritz_ cxreg: I was just wondering how you'd achieve one "official" solution 17:49
cxreg having something official doesn't preclude things that are unofficial
moritz_ so, would you just declare one as "official"?
pmichaud actually, it often does.
TimToady you can't have something official without someone behaving officiously... 17:50
cxreg someone eventually will
pmichaud oh?
you expect someone to declare an official Linux distribution someday? ;-) 17:51
Su-Shee let's call it "sign here pls" ;)
cxreg pmichaud: redhat certainly did for a number of years :-)
pmichaud cxreg: okay, someone may declare it, but that doesn't mean the marketplace has to accept it.
TimToady
.oO(policeman to the world...)
17:52
moritz_ like, uhm, the USA? :-)
cxreg ok then a much simpler question. with Star coming out, lots of prospective new authors will say "I wrote some perl 6, where do I tell people about it"
moritz_ cxreg: the answer is easy. The "proto" project. 17:53
pmichaud Star will include library modules. People can submit them to subsequent releases of Star.
cxreg aight
pmichaud Or to the proto project, if Star uses that.
But "Star" is not "the official Perl 6 distribution".
moritz_ pmichaud: I guess it would be wise to pick proto projects for Star...
pmichaud moritz_: I agree. That's on my task list for later this week.
moritz_ pmichaud: and if we want to include any non-proto projects, investigate why they are not in proto, and if that should be changed 17:54
pmichaud Right now my task list consists of fixing lists, and trying to get closures working before tomorrow's Parrot release.
17:56 bluescreen joined, bluescreen is now known as Guest72130
colomon very broken first attempt at RangeIter (called SolIter so it can be run externally); gist.github.com/438028 17:57
gotta go eat lunch and will probably be driving after that. 17:58
17:58 colomon left
pmichaud so far I haven't found a real need for EMPTY 17:58
sorear TimToady: Does FATECACHE do anything other than save memory? 17:59
TimToady well, that, and not splitting the fate strings repeatedly, iirc 18:00
btw, I didn't do either %lexer_cache or $::PREFIX 18:02
18:02 azert0x left
cxreg i got it. a distribution channel for Perl 6: 6chan.org 18:03
18:03 pjcj left 18:04 kcwu joined
TimToady of course, what really happens then is everyone just googles for "6chan" and bypasses 6chan.org :) 18:04
google is an inverted database of everyone's channels 18:05
Su-Shee 6chan? we're so doomed :)) 18:06
moritz_ hey, we can do 1.5 times better than 4chan! 18:07
TimToady dyslexics will think 6chan is something out of ranma 1/2 18:08
Su-Shee hm, already taken ;) 18:09
diakopter moritz_: that's 0.5 times better to you 18:10
18:10 Guest72130 left
diakopter or "1.5 times as good" :P 18:10
tadzik maybe try sixchan.org 18:11
even funnier imo
moritz_ diakopter: :-)
$ whois sixchan.org 18:13
NOT FOUND
Su-Shee moritz, walte deines amtes. ;)
TimToady suddenly realizes that "eew" spelled backwards is "wee"!
moritz_ Su-Shee: I already have two mostly unused Perl 6 related domains 18:14
Su-Shee: since I don't kwow what to put on sixchan.org, I'll not buy it.
diakopter thankfully I let most of mine lapse
pmichaud I like my Perl 6 related domains and plan to keep them a while :)
moritz_ like, rakudo.org? 18:15
pmichaud actually, I don't have that one.
moritz_ ah
pmichaud It's one of the two I wish I did have. :)
moritz_ was that alester?
pmichaud yes.
pmichaud has working RangeIter -- colomon++ 18:16
moritz_ alester: could you please create try.rakudo.org and point it to 193.200.132.146? I plan to set up a web shell for experimenting with rakudo there
actually, I plan to let others to most of the work :-)
tadzik sounds awesome
moritz_ worked fine these last 6 weeks :-)
Su-Shee moritz_: I thought you're plainly collecting first and see later? 18:17
moritz_ Su-Shee: nope
tadzik oh, by the way, the classes example from perl6 book does not work for me 18:18
moritz_ what's wrong with it?
tadzik it complains about brackets
will paste
wklej.org/id/350734/ 18:19
moritz_ rakudo: sub foo(:&a) { bar(:&a) }; sub bar(*%_) { say "OH HAI" }; foo()
p6eval rakudo 8b0022: OUTPUT«OH HAI␤»
moritz_ tadzik: that's a weird one. 18:21
tadzik sure it is
moritz_ oh 18:22
it's those damn fancy quotes
if you replace them all with proper single quotes, it works fine 18:23
tadzik bah, LaTeX 18:24
TimToady and it's not even using them correctly, with ’ on the left 18:25
moritz_ anydbody knows what I can avoid those?
18:25 Guest72130 joined
TimToady .u ’ 18:25
phenny U+2019 RIGHT SINGLE QUOTATION MARK (’)
TimToady surely there's some way to tell LaTeX you're emitting code... 18:26
moritz_ well........
TimToady bbl # errands 18:27
diakopter sorear: hi 18:34
moritz_ with the latex markup of the book we are in the rare and delicate position of having two skilled people who submit good, but (at least partial) incompatible patches 18:38
sorear diakopter: pong
18:43 finanalyst left 18:45 am0c joined
slavik my resume was in LaTeX :-\ 18:48
didn't count for anything since knowbody could tell the font :( 18:49
moritz_ you don't write a resume in latex to have a resume written in latex - you do it because you want it good-looking. (At least I hope that's the case :-) 18:51
PerlJam "all resumes submitted MUST be in LaTeX format" ;-) 18:53
moritz_ never read that :-)
PerlJam It's a good way to weed out certain candidates 18:54
Like the story in "The Passionate Programmer" where he said they added smalltalk to the list of requirements for a java programmer position and sudden the quality of candidate got loads better 18:55
[particle] i'm sure the quantity went loads down too 19:00
PerlJam yes indeed
19:04 cono left 19:05 cono joined 19:06 patrickas left
m6locks i know latex but never could master a resume so that it would beat some preformatted word-file exported as pdf 19:12
what comes to how it looks 19:13
awwaiid on an almost related note, I always liked putting a large vertical line down the side of my resume in hopes that it would kill OCR techniques. But it probably didn't. 19:14
m6locks heh 19:16
diakopter sorear: do you use tabs or spaces to indent, 19:19
?
vivpsq: class F { }; class G is F { }; say G.new 19:22
p6eval vivpsq 31256: OUTPUT«Can't locate object method "emit_psq" via package "VAST::dotty__S_Dot" at (eval 230) line 19␤ VAST::Base::psq('VAST::dotty__S_Dot=HASH(0x18e09c8)') called at viv line 622␤ VAST::args::deepn('VAST::args=HASH(0x3f61dc0)') called at viv line 2678␤
..VAST::term__S_identifier::_deep('VAST…
diakopter vivpsq: class F { }; class G is F { }; say G
p6eval vivpsq 31256: OUTPUT«class F {␤ ␤};␤class G is F {␤ ␤};␤say(G());␤»
diakopter vpr: class F { }; class G is F { }; say G 19:23
p6eval vpr 31256: OUTPUT«␤Unhandled Exception: System.InvalidOperationException: G has not been declared.␤ at perlesque.Sprixel.Grammar+IParser.Parse (Sprixel.Matcher M, UTF32String IN, Int32 o, UInt32 b, Sprixel.State s) [0x00000] in <filename unknown>:0 ␤ at MainClass.Main (System.String[] args)
..[0x000…
pugssvn r31257 | sorear++ | [dfa/Cursor] Connect DFA generator to DFA execution kernel.
sorear diakopter: spaces
moritz_ diakopter: what's the naming scheme behind all those evalbot targets?
diakopter vivpsq is viv's emit-psq
sorear but viv has an established convention of its own
diakopter emit_psq()
sorear namely "random mixture"
and I've been preserving that 19:24
diakopter vpr is short for viv-perlesque-run
moritz_ run as opposed to ... ?
diakopter display
vivpsq shows the perlesque code it emits
vpr feeds that code to perlesque as well 19:25
feel free to change them :)
the target names
moritz_ I might, when I want to use them :-)
sorear DFA-Cursor is now completely self supporting 19:26
though it's not up to feature completeness with the old Cursor
19:27 hercynium left
sorear most important missing features: subrules, quantifiers 19:28
hardest missing features: character classes
19:30 xabbu42_ joined, xabbu42__ joined
jnthn o/ 19:31
19:32 xabbu42 left, xabbu42__ is now known as xabbu42
sorear diakopter: If we went that route, what would using sprixel from perlesque code look like? 19:32
moritz_ \o jnthn
sorear hi 19:33
19:34 xabbu42_ left 19:38 mr_ank joined
pmichaud jnthn: o/ 19:41
19:42 xabbu42 left 19:45 hercynium joined
sorear What does <ww> mean? 19:47
&RE_method::longest special cases it
moritz_ within word
sorear ah 19:48
moritz_ Method 'reify' not found for invocant of class 'RangeIter'
is that only a metter of implementing method reify? or some deeper conceptual problem? 19:49
pmichaud moritz_: git pull, perhaps?
I added RangeIter.reify a short while ago
at least, I think I pushed.
moritz_ oh
yes
dalek kudo: cfbeb5a | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get some testing; we are close to the next parrot
moritz_ pmichaud: is flat the new eager? 19:54
pmichaud no, eager is the new eager :-) 19:55
List.eager
.flat creates a flattening list (but it can still be lazy)
sorear phenny: tell diakopter What motivated the decision to abandon JSmeta and switch to .NET/C#?
phenny sorear: I'll pass that on when diakopter is around.
19:57 Schwern left
moritz_ pmichaud: what's the difference between .eager and .reify? is reify in-place? 19:57
pmichaud .reify is something you do to an Iterator
.eager is something you do to a List
there is no more Iterator.eager -- that was wrong. 19:58
moritz_ Array.push calls [@stuff].iterator.eager
should that be .reify?
pmichaud Array.push is broken, I'm fixing it now.
moritz_ ok :-)
pmichaud and it's no longer Array.push, it's now List.push
(Array.push will simply inherit List.push) 19:59
bbiab
19:59 pjcj joined 20:04 Psyche^ joined
jnthn pmichaud: hi :-) 20:05
pmichaud: I see the list work continues apace. :-)
szabgabx rakudo: my @x = qqx{ls -1}; say @x.perl 20:06
p6eval rakudo 8b0022: OUTPUT«operation not permitted in safe mode␤ in <anon> at line 1:/tmp/SGlFNmS1Ib␤ in main program body at line 11:/tmp/SGlFNmS1Ib␤»
szabgabx whatver
if qqx assigned to @x, shouldn't it return a list ?
moritz_ szabgabx: inward-flowing context sensitivity is gone 20:07
szabgabx so is there a way to run qqx and get a list?
moritz_ qqx{ls -1}.split("\n") ?
szabgabx I don't see anything in the spec
20:08 Patterner left, Psyche^ is now known as Patterner
szabgabx yes I can do that but I was hoping for some :list or similar 20:08
moritz_ hm... 20:10
qq:x:lines{...} would be it, if it were specced 20:11
20:11 jakre left
alester moritz_: You're asking for a DNS A record? 20:12
moritz_ alester: yes
20:13 hercynium left
Tene You can have \n in a filename. 20:14
sorear depends on the OS 20:16
alester Anything else besides that try. A record? 20:18
szabgabx if I write given $thing when :d { }; shouldn't that execute $thing ~~ :d ?
moritz_ alester: a ponie? :-) no, can't think of anything right now
alester what should ponie.rakudo.org point to? 20:19
moritz_ rakudo: given '/' { when :d { say "/ is a dir" } }
p6eval rakudo 8b0022: OUTPUT«/ is a dir␤»
moritz_ alester: a finished ponie implementation, of course :-)
no, try. is enough
alester ok, done 20:20
moritz_ alester++ # thanks
alester you're welcome
and I renewed the domain for another year, too.
szabgabx moritz_, oh yes, my bug 20:22
moritz_ you can only omit the curlies in the statement-modifying form
20:23 pjcj left
pmichaud back again 20:26
20:27 am0c left 20:28 ethel joined
pugssvn r31258 | sorear++ | [dfa/Cursor] Implement subrules 20:28
moritz_ there and back again, pumpking's tale 20:29
20:32 Schwern joined, Su-Shee left 20:33 arthur-- joined
moritz_ phenny: ask masak if he thinks moritz.faui2k3.org/tmp/tryrakudo.svg looks like a sane structure for try.rakudo.org 20:35
phenny moritz_: I'll pass that on when masak is around.
moritz_ comments from others are welcome too :-) 20:36
20:36 arthur-_ left
pmichaud jnthn: I have a question regarding CREATE 20:36
Tene moritz_: explain "controller port"? 20:37
20:37 pronik joined
moritz_ Tene: each controller is a separate process, and listens at a TCP port 20:37
Tene: the session stores which port it is associated with 20:38
Tene so you're fetching the port number from the session.
'k
That looks very reasonable to me.
What are you using for sandboxing them?
moritz_ that's still an open question for me 20:39
I'd love to use a different UNIX user, which has write permissions (nearly) nowhere
but I'm not sure who it best fits into the model
Tene selinux has a 'sandbox' command that's pretty much perfect for it, iirc. I'm unsure about the support for selinux on non-RH distros, though. 20:40
ascent_ moritz_: using Catalyst (nice support for Ajax+JSON) and FastCGI (better scaling, persistent processes) would be better.
moritz_ ascent_: FastCGI is definitively an option
Tene ascent_: I don't think that's the part of the infrastructure that he was asking about?
moritz_ ascent_: I don't think that catalyst really helps much; I expect the actual CGI to be *very* simple 20:41
as in, one URL
which queries the session, and then opens the TCP connection
diakopter sorear: it would look sorta like the code in Perlesque/*.cs
phenny diakopter: 19:55Z <sorear> tell diakopter What motivated the decision to abandon JSmeta and switch to .NET/C#?
moritz_ Tene: currently feather3 doesn't have selinux support... 20:42
diakopter sorear: cuz C# provided compact arrays/primitive types and runtime codegen/compilation to disk 20:43
Tene Unfortunate, but understandable.
moritz_ Tene: but if Juerd++ carries out his plan to put each feather\d on a separate box, it might be well possible to add that
Tene Yeah, restricted user is pretty reasonable. You could set up firewall rules to restrict that user from making outbound connections, too.
moritz_ but at which point do I restrict the user? 20:44
erm
diakopter sorear: also, it can interact with all the other hundreds of .NET languages
Tene hm?
moritz_ change to another user, that is
ascent_ moritz_: for security maybe linux vserver? or create separate directory and chroot using separate user, but that for starter will require root privileges (to do chroot()).
moritz_ the CGI will be run was www-data
how do I get it to start the controller as 'nobody' (or any other user)? 20:45
Tene moritz_: you can have a simple little suid binary wrapper that invokes it. 20:46
moritz_ maybe a separate starter program that is setuid-root, adapts UID of 'nobody' drops privs, execs the controller?
Tene no, just suid-nobody
moritz_ oh
right
shame that suidperl is gone
Tene iirc, there were problems with suidperl not clearing the saved uid, so processes could re-gain the uid of the caller. 20:47
not really sure of that memory, though.
anyway, that's like 5 lines of C, so shouldn't be much trouble. 20:49
moritz_ right 20:50
20:52 hercynium joined 20:59 pronik left 21:09 whiteknight joined
Juerd moritz_: Sorry... plan to put each feather\d+ on a separate box?! 21:16
moritz_: That won't happen. In fact, the plan is to put feather* and some other TNX virtual machines on a new, single box.
21:18 Ross left 21:25 jrtayloriv joined 21:26 pyrimidine left 21:27 tadzik left 21:33 Guest72130 left 21:41 mjk joined 21:44 jrtayloriv left
diakopter sorear: I'm skimming through viv 21:46
I mean, scanning. 21:48
sorear ask questions freely 21:51
diakopter: What's the difference between RunSharp and System.Reflection.Emit?
diakopter RunSharp wraps/extends the classes in SRE, adding additional abstraction 21:52
RunSharp data structures are the sexps for the SREmissions 21:53
well
scratch that last 21:54
keep the first :)
21:54 jhuni joined 21:56 Guest23195 left
diakopter sorear: instead of "sub not found" maybe a Dumper() output of the first layer deep would be more helpful 21:57
as in, for:
vivpsq: 3.say
p6eval vivpsq 31258: OUTPUT«Can't locate object method "emit_psq" via package "VAST::dotty__S_Dot" at (eval 230) line 19␤ VAST::Base::psq('VAST::dotty__S_Dot=HASH(0x18e09c8)') called at viv line 2450␤ VAST::statement::emit_psq('VAST::statement=HASH(0x4215338)') called at (eval 230) line 19␤
.. VAST::Base::psq('V…
sorear it's a pretty straightfoward "something here is unimplemented" 21:58
diakopter right, but I mean for the implementor, to avoid a debug step
21:58 skids left
sorear unfortunately, there's a problem with verbosity control 21:59
diakopter I could add a check in the autoload
diakopter lost the autoload 22:00
sorear no, if you're sure you want to do something, add a method emit_psq to VAST::Base
but I won't use it
diakopter ok;heh 22:01
sorear 1. I run viv, get a nice, *succinct* unimplemented error
2. I implement the function in the named class
diakopter one level deep isn't much
sorear "one level deep"?
diakopter of blessed objects 22:02
sorear uhm
diakopter never mind
sorear method lookup in Perl doesn't look more than one level deep
diakopter I mean in the Dumper output
I wasn't referring to method lookup
sorear what do you want Dumper output for?
diakopter to see the hash keys 22:03
sorear Dumper sucks, which is why I implemented YAML output instead
try viv -y
diakopter ok, but I just want the unimplemented bit
it's what I did in jsmeta
like I said, never mind 22:04
sorear ok
diakopter s/jsmeta/sprixeljs/ 22:08
22:11 azert0x joined 22:14 Trashlord left
ingy seen masak 22:17
Tene phenny: seen masak? 22:19
22:23 pugssvn left 22:24 pugssvn joined, hatseflats left, hugme left 22:25 Helios left 22:26 hatseflats joined 22:31 Helios joined
sorear buubot: seen masak 22:45
buubot sorear: I last saw masak saying "my @a = (1, 2, 3); my $i = 4; for my $elem (@a) { print $elem, "\n"; push @a, ++$i if $elem % 2 }" at Fri Jun 11 13:13:25 2010 Z.
sorear pity it's wrong
22:51 mjk left 23:03 snarkyboojum joined 23:04 lestrrat is now known as lest_away 23:14 envi^home joined 23:20 Schwern left
lue I'm drinking java on Java while programming java! 23:26
[and hi]
23:28 alester left, katharnakh joined 23:33 rgrau_ left 23:41 avar left, literal left 23:48 ethel left 23:49 mr_ank left, katharnakh left 23:50 szabgabx left 23:54 literal joined 23:59 Chillance left