Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2010-06-14

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

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

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

Perl 6 | Reference Documentation | Rakudo