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