»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
pmichaud | 'night from me also -- bbt | 00:00 | |
00:01
geekosaur joined
00:04
Omni|AFK joined,
Omni|AFK is now known as Omni|Work
|
|||
Omni|Work | Is Parrot still the base of perl6? | 00:04 | |
00:06
sisar left
|
|||
lichtkind | good night | 00:13 | |
# | |||
good night | 00:14 | ||
ahh sorry | |||
had vusual problems | |||
Omni|Work: yes rakudo still runs on parrot | |||
but will run also on other VM | |||
as Niecza, another compiler does today | 00:15 | ||
timotimo | and pugs, which doesn't run under a common VM | ||
does pugs implement its own bytecode + VM under the hood? | |||
lichtkind | it runs on GHC | 00:16 | |
timotimo | so ... it translates perl6 code into haskell and compiles and runs that? or what? | ||
lichtkind | i mean it has its own intermediatary structures | 00:17 | |
yes | |||
timotimo | that's kind of cool | ||
lichtkind | theres also perlito | ||
which compiles to js and can run in a browser too | |||
timotimo | and it's got less features or passing tests than the intersection of passing tests for pugs, niecza and rakudo? :) | 00:18 | |
lichtkind | true | ||
pugs was revitalized recently | |||
rakudo and niecza are really the heavyweights | |||
timotimo | how much exactly does the "std" implementation do, btw? is it only a grammar or does it do any semantics at all? maybe some type checking? | 00:19 | |
lichtkind | real fun starts when rakudo runs on .net and jvm which will be full feature and bug compatible, which is more that ruby or python ever had | ||
ok STD is no implmentation | 00:20 | ||
Omni|Work | lichtkind: Thanks! I was thinking of the ideal situation for my simple Pythong server designed to serve up Bugzilla. | ||
timotimo | std: sub a(Int $a where * > 0) { say $a }; a(-1); | ||
p6eval | std 1ad3292: OUTPUT«ok 00:01 114m» | ||
Omni|Work | And parrot was the ideal situation. But, of course, no Python on Parrot. :-/ | ||
timotimo | "no python on parrot" is wrong, there are several implementations :p | ||
lichtkind | yes no fullblown python however | ||
timotimo: ok lets explain STD | 00:21 | ||
Omni|Work | From what I can tell that means there have been several starts and no finishes. :-) | ||
timotimo | i wonder how hard it would be to make pypy emit PIR or something :p | ||
there have also only been "several starts and no finishes" for perl6 ;) | |||
Omni|Work laughs. | |||
I thought perl6 was very close to being done recently. I saw a flurry of press about it, and some really long strings of odd characters that did some really amazing stuff. | 00:22 | ||
lichtkind | timotimo: its just a parser which tells jou if some code is valid perl 6 and what part is what kind of token, it does no compiling just transformation into an AST | ||
timotimo | ah, okay | ||
lichtkind | Omni|Work: perl 6 is usable today | ||
its just not very fast or complete | |||
Omni|Work nods. | 00:23 | ||
lichtkind | timotimo: STD is actually a specification of perl 6 and an 100% corret parser which understands all of perl 6 which no other does | ||
Omni|Work | Not even any other human! | ||
lichtkind | :) | ||
thats one huge advantage over perl 5 | 00:24 | ||
timotimo | :) | ||
it is! | |||
Omni|Work laughs. | |||
lichtkind | we have an exact spec which can compile into a parser which can tell you if the code is correct | ||
Omni|Work | That is a nice advantage. | ||
lichtkind | that perl 5 never had | ||
Omni|Work nods. | 00:25 | ||
timotimo | it really is! | ||
Omni|Work | You had to run your program in order to figure out if it the syntax was correct. | ||
lichtkind | which doest gave guarabtee to understand what actually happened | 00:26 | |
Omni|Work nods. | |||
lichtkind | even after seen the optree you didnt understood in some cases | ||
the perl 6 ready is a hairy question becasue any reasonably language needed time to ripe and we announced it befor we even started :9 | 00:27 | ||
and you simply cant compare it with python 3000 which brought less new stuff than perl 5.10 | 00:28 | ||
ok thei took different route and fight different sets of problems | 00:29 | ||
timotimo | :) | ||
lichtkind | any question remaining i leave now otherwise | 00:30 | |
timotimo | python 3000 still caused enough problems ;) | ||
i'm fine. thanks for the enlightenment and gute nacht :) | |||
lichtkind | yes it forces you adopt the new oop model , moose and the new mop will be otional | ||
will not come with 5.16 but 5.18 i suppose | 00:31 | ||
timotimo | "the new mop" will be exactly what perl6 has right now? | ||
lichtkind | now | ||
a mini version | |||
use MooseX to get full shebang | |||
timotimo | ok, fair enough | ||
lichtkind | only most needed parts will come into core | ||
its also to reduce codebase and increase speed of moose | 00:32 | ||
allrigth over and out | |||
have fien night | |||
fine | 00:33 | ||
00:33
lichtkind left
|
|||
Omni|Work | I have to run and enjoy the fantastic Seattle sunshine. | 00:33 | |
Thanks for your explanations. | |||
And, I'm not being silly, it is gorgeous in Seattle today. | |||
00:34
Omni|Work left
00:35
localhost left
00:36
localhost joined
00:48
japhb_ left
00:50
cogno joined
01:13
M_o_C left
01:15
cogno left
01:16
cogno joined
01:20
Tene joined,
Tene left,
Tene joined
01:26
jaldhar joined
01:28
tokuhiro_ left
01:30
cogno left
01:31
Trashlord left
01:32
Trashlord joined
01:59
BruceZu-CNBJ joined
02:33
whiteknight left
02:39
sivoais_ left,
sivoais joined
02:48
xinming joined
02:53
aindilis joined
03:05
jaldhar left
03:15
orafu left
03:20
Chillance left
03:33
jaldhar joined
03:41
PacoAir left
04:00
benabik joined
04:02
leprevost joined
04:07
sisar joined
04:12
am0c joined
04:24
Su-Shee_ joined
04:27
Su-Shee left
04:43
Patterner left
04:48
shinobicl_ joined
04:54
Psyche^ joined,
Psyche^ is now known as Patterner
04:57
TimToady joined
|
|||
TimToady | just figgered out I was badly netsplit for the last few hours | 05:05 | |
05:06
cogno joined
|
|||
sorear | wb | 05:09 | |
TimToady | not that Friday nights are the liveliest time of the week | 05:10 | |
05:16
benabik left
05:18
kaare_ joined
05:20
shinobicl_ left
05:31
cogno left
05:34
wolfman2000 joined
05:37
parthm joined
05:45
isBEKaml joined
05:58
mucker joined
|
|||
sorear | TimToady: still around? | 06:06 | |
TimToady | vaguely | 06:16 | |
sorear | wondering if you have any thoughts on the meaning of my @foo[**] | 06:17 | |
at issue is the fact that normally my @foo[2 xx 5] requires 5 indexes to get a real slot, otherwise you just get a slice | 06:18 | ||
but @foo[* xx **] doesn't require infinite indexes | 06:19 | ||
* xx * | |||
TimToady | I'd say that's all the leaves for a multidim array, since ** is as many dimensions as necessary to match on either end | ||
06:19
kaare_ left
|
|||
sorear | I don't follow | 06:20 | |
1. leaves? | |||
2. I thought ** made an infinite list | 06:21 | ||
TimToady | no, just an indefinite number | ||
so .[1; **; 2] in a 2-d array, it represents 0 *s | 06:22 | ||
sorear | is that syntactic? | ||
TimToady | well, it has to know it operates at the ; level | 06:23 | |
06:23
sisar left
|
|||
sorear | what are leaves? | 06:24 | |
TimToady | the Foo of 'my Foo @matrix[3,3]' | ||
er, 3;3 | 06:25 | ||
sorear | ah, that's what I suspected | ||
TimToady | whereas * is just the op index | ||
*top | |||
06:26
isBEKaml left
|
|||
sorear | how does @foo[**] know whether @foo[2;3;4] is a leaf or a slice? | 06:29 | |
TimToady | by the declaration of @foo | ||
sorear | my @foo[**] | ||
TimToady | which might be reduced to a dimensionality number | 06:30 | |
in that case it'd have to look at the effective shape of the actual data, if we allow it | |||
presuming the Foo doesn't support Positional | 06:31 | ||
alternately, we can bias it shallow or deep in ambiguous cases | |||
sorear | I'd rather not allow it, but S09:444 | 06:32 | |
TimToady | it's related to the shallow/duck/deep hyper question, I suppose | 06:33 | |
sorear | so, one basic question would be 'my @foo[**]; say @foo[2;3].gist' | 06:36 | |
TimToady | that doesn't appear to be a question :) | ||
what's at 2;3 might be a leaf or it might not | 06:37 | ||
sorear | That's to be considered an entire program. | 06:38 | |
What would it print, if ** were implemented as you imagine it? | |||
TimToady | well, I'd expect is says some variant of Nil, possibly with some autoviv info if it can't figure out it's strictly an rvalue | 06:39 | |
(think of Nil as the simplest Failure here) | 06:40 | ||
sorear | erm | ||
'sub foo($x) { say $x.gist }; my @bar[**]; foo(@bar[2;3]) | 06:41 | ||
' | |||
==> 'foo(Nil)' | |||
which is the same as foo() because Nils are treated as argument-not-provided, use-defaults | |||
which is a runtime error, required positional not provided | |||
is that REALLY what we want? | |||
my p5-sense wants foo to just get an undefined value, not no value at all | 06:42 | ||
TimToady | then declare it $x? | ||
I'm also assuming that Nil will be outside of Any | 06:43 | ||
along with other failures | |||
if you want to think of @bar[2;3] as returning a failure with autoviv info attached, that seems about right to me | 06:45 | ||
the autoviv info isn't so very different from what is needed in a good error message anyway, I suppose | |||
the issue of whether Nil is a failure with no other info is kinda independent of that | 06:46 | ||
sorear blinks a few times | 06:47 | ||
TimToady is speaking in terms of the OKness proposal here, more or less | |||
sorear | so, Nil + 1 should be 1 with a warning? &infix:<+> accepts ($x?, $y?) ? | 06:48 | |
because I want 'say @array[2] + 5' to behave p5ishly | 06:49 | ||
if NaN and Nil are both kinds of failure, then why does NaN + 1 = NaN but Nil + 1 = 1 ? | |||
TimToady | well, NaN is a *bad* number, whereas Nil is just missing, I suppose one could argue, and lots of missing things like to default to 0 or '' (but not all, hence the warning) | 06:53 | |
06:54
birdwindupbird joined
|
|||
TimToady | then there's the whole issue of default values for arrays and hashes | 06:54 | |
which puts a weird spin on what you return to enable autoviv | 06:56 | ||
presumably you could have a KetSet defaulting to 0, but then the autoviv element has to be 0 and also indicate it's not really there somehow | |||
which is making my brane feel like it's almost bedtime | 06:57 | ||
07:00
birdwindupbird left
|
|||
sorear | well then I'll let you go ;) | 07:01 | |
sleep well | |||
TimToady | well, False for a KeySet, 0 for a KeyBag, I guess | ||
night, zzz & | 07:03 | ||
sorear | huh, it turns out a faster computer can run niecza's build substantially faster. | 07:06 | |
niecza> my %hash; %hash<k> := 1..3; join ';', %hash<k> | 07:11 | ||
1;2;3 | |||
07:11
Su-Shee_ left
|
|||
dalek | ecza: 1252cdb | sorear++ | lib/Kernel.cs: Don't itemize containers bound into an aggregate In accordance with discussions this week on #perl6. This affects things like my %foo; %foo<k> := 1..3; join ';', %foo<k> |
07:12 | |
07:13
fglock joined
|
|||
sorear | o/ fglock | 07:14 | |
fglock | sorear: hi | ||
I'm looking at how to implement BEGIN blocks - the side-effects are hard to put back into the AST | 07:19 | ||
sorear | for niecza, implementing BEGIN required turning the AST system completely upside down | 07:41 | |
in a metaphorical sense | |||
07:42
dukeleto left
07:53
lestrrat left
07:54
lestrrat joined
07:58
parthm left
|
|||
tadzik | hello #perl6 | 08:14 | |
sorear | hello tadzik | 08:23 | |
08:29
mucker left
08:35
MayDaniel joined
08:42
Su-Shee joined
08:46
NamelessTee joined
09:03
fgomez left
09:28
JimmyZ_ joined
09:32
mj41 joined
09:45
JimmyZ_ left
09:54
nwc10 joined
10:14
MayDaniel left
10:25
havenn joined,
MayDaniel joined
|
|||
moritz | \o | 10:41 | |
tadzik | ' | 10:43 | |
o/ | |||
fsergot | o/ | 10:51 | |
colomon | o/ | 10:56 | |
11:12
Woodi left
|
|||
masak | o/ | 11:17 | |
11:23
birdwindupbird joined
|
|||
masak | sorear++ # tackling the S09 mysteries | 11:31 | |
also, the more I backlog over TimToady's OKness musings, the more nervous I become. :/ | |||
I mostly don't like where those ideas seem to be heading. | |||
timotimo | "pecl6, you're NOT going out dressed like this! go to your room and change!" | 11:33 | |
perl6*, durr | |||
masak | p6: my %hash; %hash<k> := 1..3; join ';', %hash<k> | ||
p6eval | pugs, rakudo a4c78f, niecza v15-5-g1252cdb: ( no output ) | ||
masak | p6: my %hash; %hash<k> := 1..3; say join ';', %hash<k> | ||
p6eval | pugs, rakudo a4c78f, niecza v15-5-g1252cdb: OUTPUT«1;2;3» | ||
masak | wow, total accord. | 11:34 | |
11:35
taryk joined
|
|||
timotimo | well, one would hope? | 11:35 | |
11:36
taryk|2 joined
|
|||
masak | my prior for it wasn't too large, since sorear++ made the change a few hours ago. | 11:41 | |
11:41
pochi left
11:45
whiteknight joined
|
|||
felher just read a bit of S03 and wonders: | 11:47 | ||
If i want objects of a class be able to compare to other objects of that class, i most likely want to define a 'WHICH'-method on them, right? | |||
And then can '===' or '~~' those objects :) | 11:48 | ||
nom: say "blar".WHICH | |||
p6eval | rakudo a4c78f: OUTPUT«Str|blar» | ||
sjn | heh | 11:50 | |
the "Blair".WHICH project :) | |||
felher | *lol* :D | ||
11:51
MayDaniel_ joined
11:54
MayDaniel left
|
|||
felher | Hm. So those object would automagically work with 'when'. sweet :) | 11:55 | |
masak | r: class A { has $.x; method WHICH { "A|$.x" } }; my $a1 = A.new(:x(5)); my $a2 = A.new(:x(5)); say $a1 === $a2 | 11:57 | |
p6eval | rakudo a4c78f: OUTPUT«True» | ||
masak | r: class A { has $.x }; my $a1 = A.new(:x(5)); my $a2 = A.new(:x(5)); say $a1 === $a2 | ||
p6eval | rakudo a4c78f: OUTPUT«False» | ||
11:57
conntrack joined
|
|||
masak | seems to work fine, yes. | 11:57 | |
r: class A { has $.x; method WHICH { "A|$.x" } }; my $a1 = A.new(:x(5)); my $a2 = A.new(:x(42)); say $a1 === $a2 | 11:58 | ||
p6eval | rakudo a4c78f: OUTPUT«False» | ||
felher | nom: say Mu.WHICH | ||
p6eval | rakudo a4c78f: OUTPUT«Mu» | ||
felher | Hm, and since every object seems to have a .WHICH-method, that seems to be roughly equivalent to java's compare. | ||
masak | heh. S03:1279 calls .WHICH a "metamethod" -- it really isn't. S03:1286 calls .WHICH a "macro" -- it really isn't. | 11:59 | |
12:00
mj41 left
|
|||
masak | felher: it's roughly equivalent to Java's .hashCode | 12:00 | |
felher | masak: right. Maybe its more correct if i say: .WHICH is roughly equivalent to Java's .hashCode but seems to serve the same purpose as Java's .compare? | 12:02 | |
masak | I don't see the connection to Java's .compare at all. That's the sole method on the Comparable interface. it's a static method with two Object paramters to be compared. | 12:04 | |
.WHICH is non-static and takes no non-invocant parameters. | 12:05 | ||
12:05
havenn left
|
|||
masak | Java's .compare is better contrasted with something like infix:<cmp> in Perl 6. | 12:05 | |
12:05
taryk|2 left,
taryk left
|
|||
felher | masak: oh, yeah, i meant equals... :) | 12:05 | |
masak | oh! | ||
felher | damn it :) Sorry | ||
masak | .equals does value comparison, so it's best contrasted with infix:<eqv>, I think. | 12:07 | |
.WHICH serves slightly different purposes depending on whether your type is an entity type or a value type. | |||
in the former case, all the attributes across two objects can be identical, but .WHICH would still differ. (in which case you don't need to override it, because that's the default behavior) | 12:08 | ||
in the latter case, if the two objects are equivalent in terms of attributes, .WHICH will return the same value. (in which case you need to define your own) | |||
felher | masak: well, .equals, if you don't change it, seems to be more like '=:=', i.e. comparing the references of two objects. If you change it, you can compare the values of object, if you want to, but don't have to. | 12:10 | |
moritz | \o | 12:11 | |
masak | yeah. we're saying the same thing now. | ||
felher | great :) | ||
masak | furthermore, .equals in Java is just a "projected" version of .hashCode, in the sense that whenever .equals returns True on two objects, .hashCode is expected to give the same result on those two. | 12:12 | |
the reason .equals isn't automatically derived from .hashCode is that hashing can be expensive, and .equals can be made faster in many cases. | 12:13 | ||
now the t/spec/S19-command-line/dash-e.rakudo tests TODO-pass. I'll unfudge them. | 12:26 | ||
interesting suspicion: could it be that my fiddling with locale and LANG changed the outcome of those tests? :) | |||
dalek | ast: 47b0ce4 | masak++ | S19-command-line/dash-e.t: Revert "[S19-command-line/dash-e.t] fudged for rakudo" This reverts commit 4cfafd6979ac540dd788615e8dfec5727b7b642d. |
12:27 | |
moritz | masak: could be | 12:32 | |
felher | masak: whats an 'entity type'? | 12:35 | |
12:42
ab5tract joined
12:47
taryk joined
12:48
mj41 joined
12:49
taryk left
12:55
taryk joined
13:04
parthm joined
13:05
ab5tract left
|
|||
masak | felher: a type of object with inherent identity. in the dichotomy "entity type"/"value type", the entity types generally have setters, and their .WHICH methods compute based on some object address, not based on the attributes. | 13:05 | |
contrast with a value type, which behaves a lot like built-in value types like Int or Str or Bool. two objects that both are 42, or both "OH HAI", or both False, are identical because-and-only-because they represent the same value. | 13:06 | ||
in short, objects of value type are identical iff they are equivalent. entity types are not. | 13:07 | ||
felher | masak: ok, thanks :) | 13:24 | |
masak | there's the usual pure/sinful division between value types and entity types. just like with FP/assignment, or monads/side-effects, or DRY/denormalization. | 13:25 | |
that is, there are clear benefits to doing things the pure way (using value types, for example), and the academic view often backs that side. | 13:26 | ||
but generally you have to be sinful somewhere. the core business component of a design is often an entity type of some sort. | |||
moritz | there are also clear benefits to mutable data structures | 13:30 | |
like, that's what computers do best | 13:31 | ||
try something very trivial like "count how often each character occured in a string" with immutable data structures in O(acceptable) | |||
masak | right. | 13:32 | |
though immutability sometimes gives surprising speed/space benefits, too. | |||
git being perhaps the prime example of that. | |||
all you ever do in a repo is build ever deeper immutable structures. | |||
and it all works out very efficiently, because it's factored just the right way. | 13:33 | ||
felher | masak: would List.equals equals a list with the same elements vs. [1,2,3].WHICH is different from [1,2,3].WHICH be an example of the difference you saw between .WHICH and .equals? | ||
moritz | masak: except when you use branches, which you do all the time | ||
masak | felher: two Arrays [1, 2, 3] in Perl 6 would have different .WHICH values and compare false with infix:<===> (because they are mutable containers and thus entity types). but they would compare True with infix:<eqv>. | 13:34 | |
s/two/two distinct/ | |||
felher | masak: great. Then i think i got your point :) | 13:35 | |
masak | moritz: I don't understand the "except". you're still building immutable structures. | ||
13:35
Chillance joined
|
|||
moritz | masak: and you're updating the 'master' and 'HEAD' pointers, which are mutable objects | 13:35 | |
masak | that falls under my "you have to sin a little" exception. the point is that commits are immutable/value objects. | 13:36 | |
13:36
birdwindupbird left
|
|||
moritz | right | 13:37 | |
masak | actually, commits flaunt their immutability by promising that their SHA hash value describes the entire commit. | ||
moritz | but I refuse to call them "sin" | ||
masak | you don't have to accept my analogy, just that it's describes a valid point ;0 | ||
;) | |||
moritz | accepted | 13:38 | |
masak | \o/ | ||
call it "impurity" or whatever. I tend to see the phenomenon all the time nowadays. many successful models seem to have just the right engineering mixture of academic purity and pragmatic schmutz. | 13:39 | ||
that ties in, by the way, to why I don't like putting up "theory" and "practice" as irreconcilable opposites. they seem more like disciplines that co-exist and thrive off each other. | 13:43 | ||
13:44
MayDaniel_ left
13:45
parthm left
|
|||
felher | I have to go shopping to get someting nom'able. Thanks for your explanations and your patience, masak :) | 13:47 | |
masak++ | |||
masak | thanks for letting me babble on about things I'm still learning myself. :) | 13:49 | |
felher++ | |||
moritz++ | |||
moritz: this book www.amazon.com/Purely-Functional-St...521663504/ has always caught my interest. I wouldn't be surprised if it contained a recipe for a persistent but O(acceptable) data structure for counting how often each character occurs in a given string. | 13:53 | ||
I haven't read it yet, but I'd like to. | 13:54 | ||
14:00
havenn joined
14:14
pochi joined
14:24
GlitchMr joined
|
|||
GlitchMr | Just wondering, I want to make something serious in Perl 6, and I wonder if any text editor can do syntax highlighting for Perl 6 (not Perl 5). | 14:25 | |
moritz | vim and emacs | 14:27 | |
and padre | |||
GlitchMr | Thanks, I will check those | 14:31 | |
14:31
MayDaniel joined
14:33
havenn left
|
|||
GlitchMr | ... ok... Padre seems to work weirdly... I press "Enter" and it makes two linebreaks... just what... | 14:34 | |
masak | probably something the good folks on #padre would like to hear about. | 14:35 | |
GlitchMr | And syntax highlighter in Padre... is very simple... | ||
It only seems to recognize few keywords, numbers and strings... | 14:36 | ||
masak | to be honest, I haven't found a syntax highlighter for Perl 6 yet that's worth the hassle of setting it up. | ||
14:36
ponbiki joined
|
|||
GlitchMr | heh... I guess I should make one yourself :P. | 14:37 | |
Before doing anything... | |||
masak | the one I was least disappointed with was the cperl-mode in Emacs, which is a Perl 5 syntax highlighter, but is fault-tolerant enough to handle Perl 6 fairly well. | ||
GlitchMr: I'd rather see you contributing Perl 6 code than Perl 6 syntax highlighter code ;) | |||
GlitchMr | I've considered Notepad++, but it's failure with Perl 6 grammars... | ||
Perhaps Kate would work (Perl 5, but it doesn't seem to find regexpes everywhere)... perhaps... | 14:39 | ||
masak | I know jnthn uses www.e-texteditor.com/ | ||
it seems decent, even though it'll never replace vim and Emacs for me ;) | 14:40 | ||
14:40
havenn joined
|
|||
GlitchMr | Looks nice, but I don't think I want to pay $50 for yet another editor :P | 14:40 | |
masak | huh. never noticed it cost money. | 14:43 | |
14:46
PacoAir joined
|
|||
flussence | .oO( make your code flow like natural language and you won't need highlighting! ) |
14:50 | |
GlitchMr | heh... | 14:51 | |
It's hard to call "sub" for example natural language :P | |||
... but... do I need this word... | 14:52 | ||
... after all... code blocks can be created using {}... | |||
masak | but they can't be 'return'-ed from. | 14:53 | |
GlitchMr | perl6: my $a = 5; $a(); | ||
p6eval | rakudo a4c78f: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Int' in <anon> at src/gen/BOOTSTRAP.pm:812 in any <anon> at src/gen/BOOTSTRAP.pm:808 in block <anon> at /tmp/t1yJ0EfOgk:1» | ||
..pugs: OUTPUT«*** Cannot cast from VInt 5 to VCode (VCode) at /tmp/fPwlXVGinE line 1, column 12-16» | |||
..niecza v15-5-g1252cdb: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in class Int at /tmp/TuWJ9Mulxo line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 3838 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3839 (module-CORE @ 65)… | |||
14:53
benabik joined
|
|||
GlitchMr | perl6: my $a = { 5 }; print $a(); | 14:53 | |
p6eval | pugs, rakudo a4c78f, niecza v15-5-g1252cdb: OUTPUT«5» | 14:54 | |
GlitchMr | But... do I need to return? | ||
14:54
benabik left
|
|||
flussence | I was reading an article yesterday about "point-free" code in Haskell, pretty interesting and sort of related to that | 14:56 | |
14:56
MayDaniel left,
am0c left
|
|||
flussence | the idea is you don't name point A or point B (the input/output values), just define how to get from one to the other | 14:57 | |
I suppose the p6 equivalent would be using $_ a lot | 14:58 | ||
colomon | I'd think it would be more along the lines of chained method calls or feeds. | 14:59 | |
n: say ^Inf.map(* ** 2).grep(* %% 3)[^10] | |||
p6eval | niecza v15-5-g1252cdb: OUTPUT«0..^10» | ||
flussence | makes sense :) | ||
colomon | n: say (^Inf).map(* ** 2).grep(* %% 3)[^10] | 15:00 | |
p6eval | niecza v15-5-g1252cdb: OUTPUT«0 9 36 81 144 225 324 441 576 729» | ||
colomon | though I guess I did use two Whatevers in there. :) | ||
flussence | I think it boils down to "avoid defining variables" | ||
(avoid "="?) | 15:01 | ||
GlitchMr | perl6: ({sleep 2; print ('a')}()) | (print('b')) | (print('c')); | ||
p6eval | pugs: OUTPUT«*** Unsafe function 'sleep' called under safe mode at /tmp/rfqjQYaSJT line 1, column 3-10» | ||
..rakudo a4c78f, niecza v15-5-g1252cdb: OUTPUT«abc» | |||
GlitchMr | So I guess that it doesn't use multithreading for now :P... | ||
flussence | The ». syntax is specced to, but right now it's just emulated by processing inputs in random order | 15:02 | |
GlitchMr | lol...? | ||
flussence | it's to stop people writing code that assumes it'll always be ordered | 15:03 | |
masak | GlitchMr: you never "need" to return, but sometimes logic gets simpler if you can. | ||
GlitchMr | Well, technically all you need are variables, conditional goto and file handle operations :P... | 15:04 | |
perl6: my @array = 1..10; @array».say; | 15:05 | ||
p6eval | rakudo a4c78f: OUTPUT«65389210741» | ||
..pugs: OUTPUT«23456789101» | |||
..niecza v15-5-g1252cdb: OUTPUT«12345678910» | |||
GlitchMr | But... isn't emulation of multithreading nearly useless? | 15:06 | |
masak | yes. | ||
feel free to implement the real thing for us. | 15:07 | ||
GlitchMr | :P | ||
Well, I can understand it could be very difficult :P. | |||
And this is community project ;) | |||
masak | not very. just difficult. | ||
GlitchMr | Is there forking at least? | 15:08 | |
masak | maybe in Niecza. | ||
flussence | as the web's shown, people usually write code until it works for them, not for what the spec says :) | ||
GlitchMr | Which would work... | ||
dalek | osystem: 282fbc0 | colomon++ | META.list: Tried to fix Math::ContinuedFractions. |
||
atures: db29f93 | (Carl Mäsak)++ | features.json: Second attempt at unbreaking the json That comma shouldn't be there, I guess. |
15:10 | ||
colomon | wow, panda search Math is going very slowly.... | 15:23 | |
colomon naturally immediately runs the command again to see if it is as slow the second time. | 15:25 | ||
15:30
MayDaniel joined
|
|||
masak | what's the slow part? | 15:31 | |
(my guess is JSON parsing) | |||
colomon | I've no idea, I just know it's slow. | ||
panda-niecza is drastically faster at this command | 15:32 | ||
neither point actually helps me understand why Math::ContinuedFractions cannot be found. :\ | |||
masak | debugging time! \o/ | 15:34 | |
15:35
ponbiki left
|
|||
colomon | have there been recent changes to JSON that would make it much slower? | 15:36 | |
15:37
whiteknight left
|
|||
colomon | 4m21s on rakudo | 15:38 | |
6s on niecza | |||
CAVEAT: I think panda-niecza is probably using a several months old version of JSON | |||
15:39
havenn left,
xenu joined
|
|||
masak | that's... slow. :( | 15:39 | |
I consider that an error. | 15:40 | ||
if you can golf it, I'll rakudobug-submit it for you. | |||
colomon | if I can do all the work, you'll do the last step? ;) | 15:41 | |
masak | dang, that usually works! ;) | 15:42 | |
15:43
orafu joined,
jevin joined,
ivan`` joined,
krakan joined
|
|||
colomon | shell "wget 'feather.perl6.nl:3000/list' -O '$!projectsfile'"; | 15:44 | |
why is this how the ecosystem information is fetched? | |||
it doesn't have Math::ContinuedFractions | 15:45 | ||
masak | tadzik: ping | ||
flussence runs `perl6 --profile `which panda` search Math`, ooc | 15:46 | ||
masak | I have no idea, but my guess would be that feather.perl6.nl:3000/list is populated from github.com/perl6/ecosystem/blob/ma.../META.list somehow | ||
15:47
Psyche^ joined
15:50
Patterner left,
Psyche^ is now known as Patterner
|
|||
masak | walk & | 15:50 | |
flussence | argh... I did > instead of 2> and half the output disappeared off my scrollback! | 15:56 | |
15:56
havenn joined,
GlitchMr left
16:08
havenn left
16:11
havenn joined
16:13
GlitchMr joined
|
|||
flussence | hm, this profile says half the time is spent in grammar parsing... which means the other half isn't | 16:13 | |
16:15
nwc10 left
|
|||
flussence | so JSON::Tiny isn't *entirely* at fault, but that's about all I can figure out from this output, it's all too low-level for me. | 16:17 | |
colomon | flussence++ | 16:22 | |
flussence | I've stuck the profile in my homedir on feather3, if anyone wants it | 16:23 | |
colomon | url? | ||
colomon doesn't actually have an account on featherN... | 16:24 | ||
flussence | it doesn't seem to be running a httpd, I could try running a temporary one... | ||
colomon | nah, don't sweat it. | 16:26 | |
e-mail it to my id at gmail? | |||
flussence | that'd work :) | ||
username@ ? | |||
colomon | yes | ||
flussence | sent | 16:28 | |
colomon | got it, thank you | ||
16:31
havenn left
16:35
jferrero left
16:37
thou joined
16:46
jferrero joined
|
|||
TimToady | japhb: I would say that rosettacode is a very good place to put examples, but not the only place, since it's organized more by task rather than by language, and sometimes you just want a bunch of things from one language together, or have a better indexing scheme than RC provides to find poorly named tasks | 16:49 | |
16:49
wolfman2000 left
|
|||
sorear | good * #perl6 | 16:49 | |
TimToady | o/ | 16:50 | |
16:50
havenn joined
|
|||
sorear | masak: I too am uneasy about the way OKness is headed. | 16:50 | |
o/ TimToady | 16:51 | ||
16:54
fsergot left
|
|||
sorear | There have been a total of four semantic commits this month. I am planning to skip this month's release. | 16:54 | |
16:55
_sri left
16:57
_sri joined
16:59
jferrero left
17:00
jferrero joined,
whiteknight joined
|
|||
moritz | don't | 17:02 | |
if you do time-based releases, do time-based releases | |||
masak | +1 | 17:08 | |
17:10
spider-mario joined
|
|||
sorear | o/ masak | 17:11 | |
spider-mario | hi, I’m glad to see that there are so many people interested in Perl 6 :) | ||
sorear | Hello and welcome, spider-mario | ||
spider-mario | I’m a new and enthusiastic user. | ||
sorear | Nah, they aren't really here for Perl 6, they just hang out bucause it's one of the friendliest channels here :p | 17:12 | |
spider-mario | :D | ||
sorear has tuits for the first time in ages and is puzzling over how multidimensional arrays should work | 17:13 | ||
well, this is an awkward silence. I guess I should ask spider-mario some questions or something | 17:18 | ||
spider-mario | or I could ask one | ||
would you know how to have raw interpolation of a variable in a regex? | 17:19 | ||
17:19
fsergot joined
|
|||
gfldex | spider-mario: perlcabal.org/syn/S05.html#Variable...erpolation | 17:20 | |
i herein confirm to be here for the general friendlyness | |||
spider-mario | that’s what I’ve come across | ||
oh, sorry, I missed a point | 17:21 | ||
“However, if $var contains a Regex object, instead of attempting to convert it to a string, it is called as a subrule, as if you said <$var>.” | |||
I kind of read it backwards | |||
so, I just need to write <$x>, appearently. | |||
thanks. :) | |||
great, it works, indeed | 17:22 | ||
\o/ | |||
TimToady | I think you were defining "raw" backwards from us there :) | 17:23 | |
we tend to think of the bare string as raw, and interpolating it as a regex as "cooked" | |||
pmichaud | good afternoon, #perl6 | ||
TimToady | which is backwards from how P5 thinks of it | ||
pmichaud | (briefly) | ||
spider-mario | oh, ok | ||
sorry, I’ll remember that :) | |||
TimToady | no problem, just one of the many areas we flipped the default to something a bit more sensible | 17:24 | |
masak | spider-mario: welcome! | ||
spider-mario | thank you :) | 17:25 | |
TimToady | and the very fact that the new default is more sensible causes us to forget that other people might think of it the other way around | ||
pmichaud | sorear: (time based releases) -- I agree with moritz++ and masak++. Do the time-based release, even if there's not much (or even any) change from the previous release. Unless the release process is a pain. :-) | 17:26 | |
sorear: is your release process documented somewhere? Maybe now is the time to get release managers :-) | |||
colomon | sorear-tuits++ | 17:27 | |
GlitchMr | perl6: my $a = 2; $a ==== 2; print $a; | 17:28 | |
sorear | :-) | ||
p6eval | niecza v15-5-g1252cdb: OUTPUT«===SORRY!===Cannot make assignment out of === because chaining operators are diffy at /tmp/bWRoTfCkc0 line 1:------> my $a = 2; $a ====⏏ 2; print $a;Unhandled exception: Check failed at /home/p6eval/niecza/boot/l… | ||
..rakudo a4c78f: OUTPUT«True» | |||
..pugs: OUTPUT«2» | |||
17:29
jferrero left,
MayDaniel left
|
|||
sorear | spider-mario: in Perl 5 a regex is a kind of string that is parsed at match time. In Perl 6 regexes are code with a funny syntax that is parsed with the rest of your code. | 17:29 | |
<$foo> is really a kind of eval() | 17:30 | ||
spider-mario | that’s what I suspected | ||
but thanks for making it clear and explicit | |||
sorear | like how you can sort of interpret 5 + eval($foo) * 8 as "interpolating" $foo into the expression | ||
with the caveat that precedence is fixed | |||
GlitchMr | Well, in Perl 5, s/blah/print 2/e; is also kind of eval, but parsed in compile time :P. | ||
sorear | <$foo> always interpolates as an atom | ||
GlitchMr | (unlike PHP) | ||
masak | I'd volunteer to do a Niecza release. | ||
pmichaud | I suspect we'd have several Niecza release volunteers. | 17:31 | |
sorear | you can't do my $foo = '*' ; / q <$foo> / | ||
pmichaud | I'd volunteer but my tuits are too unreliable. | ||
GlitchMr | As B::Deparse says... | ||
17:32
jferrero joined
|
|||
pmichaud | okay, time for me to go again .. bbl | 17:33 | |
colomon | o/ | ||
17:34
shinobicl__ joined
|
|||
masak | r: my $foo = '*'; say "q*" ~~ / q <$foo> / | 17:34 | |
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Method 'rxtype' not found for invocant of class 'Integer'» | ||
masak | innerestin'. | ||
sorear | masak: there's docs/release.txt; I don't know how useful it is | ||
n: my $foo = '*'; say "q*" ~~ / q <$foo> / | 17:35 | ||
p6eval | niecza v15-5-g1252cdb: OUTPUT«Unhandled exception: Quantifier quantifies nothing at /home/p6eval/niecza/boot/lib/CORE.setting line 1362 (die @ 3)  at /home/p6eval/niecza/src/STD.pm6 line 5722 (STD.sorry @ 5)  at /home/p6eval/niecza/src/STD.pm6 line 4827 (Regex.metachar:quant @ 5) … | ||
spider-mario | Quantifier quantifies nothing | ||
is that what you meant by | |||
<sorear> <$foo> always interpolates as an atom | |||
? | |||
masak | sorear: it looks straightforward enough. I could dry-run it once first, just to be sure there are no surprises. | 17:36 | |
sorear | I mean that it's interpreted as /q [[[[ * ]]]] / | ||
spider-mario | hm. | ||
sorear | [] is how we write (?: ) now | ||
TimToady | give or take a billion square brackets | ||
17:36
fsergot left
|
|||
masak | I prefer Niecza's error to Rakudo's. | 17:37 | |
r: say '' ~~ / * / | |||
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Method 'rxtype' not found for invocant of class 'Integer'» | ||
masak | ah, there we go. | ||
TimToady | what sorear means is that the interpolated expression must be able to stand on its own as a regex | ||
masak submits LTA rakudobug | |||
17:38
kaare_ joined
|
|||
TimToady | to do something lower level than that would require a macroish thing | 17:38 | |
sorear | I do have the tuits for a release. | ||
TimToady | of the sort masak isn't working on yet | ||
sorear | The original idea was that I might be wasting p6a's time with a nearly empty annoucement | 17:39 | |
spider-mario | I understood it that way | ||
and it matches what I needed | |||
(no pun intended) | |||
sorear | or also like how 'my $x = 2 + 3; say $x * 5' doesn't print 17 | ||
LTA, tuits, p6a, I wonder if spider-mario is lost ;) | 17:40 | ||
spider-mario | I haven’t seen “LTA”, but I am, a little. :p | 17:41 | |
17:41
jferrero left
|
|||
masak | TimToady: are you implying I'd ever take on 'is parsed' macros? :) doubtful. | 17:41 | |
spider-mario | oh, 18:37:40 | ||
(LTA) | 17:42 | ||
masak | "Less Than Awesome" | ||
spider-mario | thanks :) | ||
17:42
jferrero joined
|
|||
masak | a code word for "it gives an error message, but it's not up to our high standards" | 17:42 | |
sorear | p6[acul] = perl6-{announce,compiler,users,language}@perl.org | 17:46 | |
spider-mario | thank you | ||
masak | sorear: I think you should do the release, and not be the least apologetic about not having done as many semantic commits as you would've liked. consider it a "legitimate PR moment", because it is. a minute of everyone's time where they all slow down, read your thoughts on current and future Niecza development, and get excited about Niecza. | ||
sorear: this is *especially* true since Niecza doesn't have a web site. :P | 17:47 | ||
spider-mario | (I feel like I’m repeating myself, does English not have any other expression to thank someone else?) | ||
masak | spider-mario: a "tuit" is an idealized piece of productivity. | ||
spider-mario | oh, that’s an interesting concept :D | 17:48 | |
masak | spider-mario: from the phrase "I'll do it when I get around to it." | ||
sorear | "here, have a round tuit" | ||
masak | ("a round tuit" -- get it?) :) | ||
spider-mario: on Perl conferences and workshops people are known to hand out free tuits. they're round, made of wood, and slightly bigger than a coin. | |||
17:49
shinobicl__ left
|
|||
spider-mario | sounds like something I want. | 17:49 | |
sorear wonders what the size of coins in .se is | |||
17:49
shinobicl__ joined
|
|||
masak | sorear: see the table at en.wikipedia.org/wiki/Swedish_krona#Coins | 17:51 | |
spider-mario | the more I learn about Perl 6, the more I love it | 17:53 | |
it’s like the programming language I’ve always been dreaming of | |||
and its community looks amazing :) | 17:54 | ||
masak | glad you like it. :) many of us are here for just those reasons, too. | 17:55 | |
sorear | masak: ...the pictures aren't showing up for me | 17:59 | |
masak | curious. not here either. | 18:00 | |
though judging by the source, those are not very realistic images anyway. | 18:01 | ||
just circles showing the approximate color. | 18:02 | ||
18:03
isBEKaml joined
|
|||
masak | isBEKaml! \o/ | 18:03 | |
isBEKaml | masak: hi! | ||
sorear | the measurements at least are there... about the same as USD coins | 18:05 | |
isBEKaml | hmm, there has been little change since last niecza build. sorear, big thing cooking? :) | ||
sorear | nah, just tuit starved. | 18:06 | |
spring break soon :> | |||
isBEKaml | \o/ sorear++ | ||
Not sure if I can help, anything LHFish? | |||
18:06
BruceZu-CNBJ left
|
|||
masak | spider-mario: "LHF" -- "low-hanging fruit" :) | 18:07 | |
spider-mario | :D | ||
18:07
BruceZu-home joined
|
|||
spider-mario | I love learning all those expressions | 18:08 | |
thanks a lot :D | |||
isBEKaml | spider-mario: nah, just hover over those looking like acronyms on irclog.perlgeek.de. You get quite a bunch here. :) | ||
18:08
havenn left
|
|||
masak | oh, right! | 18:08 | |
18:08
BruceZu-home left
|
|||
masak | also, you get links into the spec, when people say things like S01:33 | 18:09 | |
isBEKaml | [Coke]: what does the state of pugs look like as far as test runs go? close to 50%? :) | 18:11 | |
masak makes supper & | |||
isBEKaml | std: my @foo[ ** ]; | 18:15 | |
p6eval | std 1ad3292: OUTPUT«ok 00:01 110m» | ||
isBEKaml | std: my @foo[25 xx 42]; | ||
p6eval | std 1ad3292: OUTPUT«ok 00:01 112m» | ||
18:23
shinobicl__ left
18:25
shinobicl__ joined
|
|||
TimToady | masak: two bug reports for the price of one; rakudo and niecza both fail this test for different reasons: gist.github.com/2185853 | 18:29 | |
niecza because it has not take-rw (though take works because it doesn't properly decontainerize) | |||
rakudo because of the scoping issue in the list comprehension (pretty much any refactoring of the loop and conditional works) | 18:30 | ||
18:32
MayDaniel joined
18:35
thou left,
MayDaniel left
|
|||
TimToady | the take vs take-rw issue is kind of a killer for putting a forest fire up on RC that works under both niecza and rakudo | 18:45 | |
masak | I've never seen a gather inside of a statement_mod for before. is that spec'd to do what you mean? | 18:47 | |
TimToady | it's not inside | 18:48 | |
masak | well, the statement_mod modifies the whole statement, doesn't it? | ||
TimToady | the statement that gather starts | ||
statement prefixes are like a big left curly | |||
just as listops are like a left paren | 18:49 | ||
masak | oh, so you're saying it's LHS = (gather EXPR if for) | ||
sorear | what -rw forms are needed? | ||
take-rw, return-rw, leave-rw? | |||
TimToady | anything that decontainerizes by defualt | ||
sorear | I can certainly add those as synonyms for the non-rw forms, until such time as the latter work | ||
colomon is imagining that creating take-rw in niecza is probably very easy, given that regular take already works that way.... | |||
TimToady | that would be a good temp workaround | 18:50 | |
masak: I don't know what you mean by that. gather statement is like gather { statement }, and the modifiers on statement belong to statement in either case, and don't escape to even see the gather | 18:51 | ||
sorear | colomon: that's exactly what I mean | 18:53 | |
colomon | sorear: yeah, we were both typing the same idea at the same time. :) | ||
sorear: and bonus, it's a new feature for this month's release! | |||
TimToady | \o/ | ||
dalek | ecza: efda208 | sorear++ | lib/CORE.setting: Add take-rw and return-rw They are currently synonymous with the undecorated forms, but this won't last forever. |
18:56 | |
TimToady | oh, and that test case also has a hack because nom doesn't autoviv, which could go away if that were fixed | ||
colomon wishes he knew why his VIsual C++ 2005 project files will not upgrade to Visual C++ 2010. :( | |||
18:57
ggoebel left
19:02
aindilis left
19:03
thou joined
19:05
ggoebel joined
19:10
zipf joined
19:15
mj41 left
19:21
zipf left
19:23
taryk left
19:28
fglock left
|
|||
masak | TimToady: I'm wondering if you haven't just re-discovered rt.perl.org/rt3/Ticket/Display.html?id=109322 | 19:33 | |
moritz | r: /*/ | ||
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Quantifier quantifies nothing at line 1, near "/"» | ||
moritz | r: my $x = '*'; /<$x>/ | 19:34 | |
p6eval | rakudo a4c78f: ( no output ) | ||
moritz | r: my $x = '*'; /q <$x>/ | ||
p6eval | rakudo a4c78f: ( no output ) | ||
moritz | r: my $x = '*'; so /<$x>/ | ||
p6eval | rakudo a4c78f: OUTPUT«Method 'match' not found for invocant of class 'Any' in method Bool at src/gen/CORE.setting:8330 in sub prefix:<so> at src/gen/CORE.setting:2053 in block <anon> at /tmp/xUQbVM7GvY:1» | ||
moritz | r: my $x = '*'; 'a' ~~ /<$x>/ | 19:35 | |
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Method 'rxtype' not found for invocant of class 'Integer'» | ||
moritz | the real question is, why doesn't it parse-error the same way as the original regex? | ||
masak | r: '' ~~ / * / | 19:36 | |
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Method 'rxtype' not found for invocant of class 'Integer'» | ||
masak | it does. | ||
question is what exact circumstances trigger it. | |||
moritz | r: /* * | ||
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Quantifier quantifies nothing at line 1, near " *"» | ||
moritz | r: /* / | ||
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Quantifier quantifies nothing at line 1, near " /"» | ||
moritz | r: /*/ | ||
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Quantifier quantifies nothing at line 1, near "/"» | ||
moritz | hm | ||
what's the difference? | 19:38 | ||
masak | far as I can see, you get the 'rxtype' error (at compile time!) if you include the '~~'. | ||
which makes no sense at all. | |||
"I notice that I am confused." :) | 19:39 | ||
moritz | aye | ||
nqp: /*/ | |||
p6eval | nqp: OUTPUT«Quantifier quantifies nothing at line 1, near "/"current instr.: 'nqp;HLL;Grammar;panic' pc 22008 (src/stage2/gen/NQPHLL.pir:7047) (src/stage2/gen/NQPHLL.pm:329)» | ||
moritz | r: "" ~~ /*/ | 19:41 | |
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Quantifier quantifies nothing at line 1, near "/"» | ||
moritz | r: "" ~~ / * / | ||
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Method 'rxtype' not found for invocant of class 'Integer'» | ||
moritz | so, one needs ~~ *and* whitesapce to trigger it? | ||
r: / * / | 19:42 | ||
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Method 'rxtype' not found for invocant of class 'Integer'» | ||
moritz | no, just whitespace | ||
so, probably a parsing bug | |||
masak | ah. | 19:45 | |
masak updates the RT ticket | |||
moritz++ # rational elucidation | |||
moritz | the parsing chain goes like this: TOP -> Nibbler -> termconj -> termish -> quantified_atom -> atom -> metachar:sym<quantifier> | 19:47 | |
and all of them are tokens | |||
and none allows whitespace | |||
std: / */ | 19:49 | ||
p6eval | std 1ad3292: OUTPUT«ok 00:01 109m» | ||
masak | o.O | ||
19:51
havenn joined
|
|||
moritz | it parses the blank as metachars:sigwhitespace | 19:52 | |
niecza: / */ | 19:53 | ||
p6eval | niecza v15-6-gefda208: ( no output ) | ||
moritz | o.O | ||
masak | the rot goeth deep. | ||
moritz | I tried to see how STD and niecza do it, so that I could replicated that behaviour | 19:54 | |
TimToady | implementing S05:321 correctly will probably fix that | ||
moritz | well, I decided not to that now :-) | 19:55 | |
TimToady | 'that' as a predicate, yum | 19:56 | |
masak .oO( that that! ) | |||
TimToady | That me again, Sam. | ||
masak | "A riff off a non-quote!", he that incredulously. | 19:57 | |
moritz | just a missing verb | ||
19:57
whiteknight left
|
|||
TimToady | at first I almost said: That sentence one verb | 19:58 | |
masak | moritz: aye. and quite an easy to make/explain omission. | ||
'to' looks a bit like 'do'. | |||
TimToady | in other news, Perl 6 has introduced the 'go do' statement | ||
masak | it a Perl 6 statement as an expression... in a Google Go goroutine? :) | 19:59 | |
argh, s/it /it evaluates / | |||
the non-verb disease is spreading! | 20:00 | ||
spider-mario | oh, I just saw you are the author of ufo, masak? | ||
masak | spider-mario: if you can call it an act of authoring, yes. | 20:01 | |
spider-mario | yes, I see there are contributions from others | 20:02 | |
nice job, everyone :) | |||
moritz | well, the aliens did a nice job, no? :-) | ||
20:02
jferrero left
|
|||
masak | there's nothing particularly innovative about ufo. but I think it's my most popular Perl 6 script out there. | 20:03 | |
those weird visitors deserve all the credit, of course. and ingy. | |||
20:04
noteventime joined
|
|||
masak | noteventime! \o/ | 20:05 | |
colomon | ingy is not a weird visitor? | 20:07 | |
TimToady | it is not weird for ingy to visit | 20:08 | |
masak | I never feel weird around ingy. | 20:09 | |
colomon | but ingy is weird, ergo, when he visits, he is a weird visitor | ||
ingy++, btw | |||
20:13
y3llow_ joined,
bruges_ joined
20:15
y3llow left,
bruges left,
y3llow_ is now known as y3llow
20:22
GlitchMr left
|
|||
masak | perl6: say "5 breads" + "2 fish" | 20:33 | |
p6eval | pugs: OUTPUT«7» | ||
..niecza v15-6-gefda208: OUTPUT«Unhandled exception: Cannot parse number: 5 breads at /home/p6eval/niecza/lib/CORE.setting line 1366 (die @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3405 (ANON @ 10)  at /home/p6eval/niecza/lib/CORE.setting line 3407 (NumSyntax.str2num @ 4)  … | |||
..rakudo a4c78f: OUTPUT«Cannot call 'Numeric'; none of these signatures match::(Mu:U \$v, Mu %_!) in method Numeric at src/gen/CORE.setting:644 in sub infix:<+> at src/gen/CORE.setting:2284 in sub infix:<+> at src/gen/CORE.setting:2284 in block <anon> at /tmp/MQR1lC3xrk:1»… | |||
masak | perl6: say "5" + "2" | 20:34 | |
p6eval | pugs, rakudo a4c78f, niecza v15-6-gefda208: OUTPUT«7» | ||
masak | Rakudo's error message leaves something to be desired, IMO. | ||
colomon | +1 | ||
masak submits rakudobug | 20:35 | ||
spider-mario | hm, what do I need to do for “prove -e perl6 -r t/” to run t/foo.pl? | 20:37 | |
the current output I get is: | |||
Files=0, Tests=0, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU) | |||
Result: NOTESTS | |||
“prove -e perl6 t/foo.pl” works as expected | |||
(runs my tests and Result: PASS) | 20:38 | ||
masak | spider-mario: try renaming it foo.t | ||
by tradition that's how test scripts are named. probably prove goes looking for *.t, too. | |||
spider-mario | it worked, thanks :D | ||
20:38
rsimoes left
|
|||
spider-mario | yes, I was having trouble trying to get that tradition. | 20:39 | |
masak | stick with it. it's not a bad tradition. | ||
spider-mario | I meant trying to know what it was. | ||
I’m not against it at all. :p | 20:40 | ||
sorry if I’m not always clear, English is not my native language | |||
(it’s French) | |||
20:41
plobsing left
20:42
rsimoes joined
|
|||
masak | ah, merveilleux. | 20:42 | |
20:46
thou left
|
|||
moritz | yep, our Failure handling is faulty | 20:51 | |
moritz replied to a stale chat, sorry | 20:52 | ||
noteventime | masak: ? :) | 20:55 | |
20:56
Araq joined
|
|||
masak | noteventime: just glad you're popping by :) | 20:58 | |
Araq: hey, welcome back! :) | 20:59 | ||
Araq | thanks | ||
masak takes a brief vacation from his job as #perl6 doorman | |||
Araq | didn't find the time to play with perl 6's way of parsing though | ||
masak | I hear they're making new time as we speak. | 21:00 | |
some people consider that's a mistake, citing inflation as a clear risk if we keep pumping time into an already diluted economy. | |||
Araq | well *my* time is limited | 21:02 | |
I don't think I'll benefit from the new time | |||
21:03
PacoAir_ joined
21:04
PacoAir left,
PacoAir_ is now known as PacoAir
21:05
lichtkind joined
21:07
stdio joined
|
|||
stdio | hello | 21:08 | |
is there an explanation of why, for example, perl6 went from print to say, and other such differences? | |||
spider-mario | print is still there | 21:09 | |
and say was already there in 5.10 | |||
Araq | so that perl has the shortest "hello world" program | ||
stdio | so print will always be there? | ||
Araq | 'say' is only 3 chars | ||
stdio | Arag haha really? | ||
Araq | I think so | 21:10 | |
and afaik, 'say' was backported to perl 5 | |||
spider-mario | I think cat has it, actually | ||
hello.txt : Hello World! | |||
$ cat hello.txt | |||
Hello World! | |||
noteventime | masak: I see, thank for the warm welcome. | 21:11 | |
stdio | a lot of syntax changes in perl6 :\ | ||
noteventime | thanks* | ||
spider-mario | Araq: I can confirm that | ||
$ perl -e 'use v5.10; say "hello"' | |||
hello | |||
(alternatively, you may "use feature 'say'" instead of v5.10) | 21:12 | ||
(feature 'say' is just part of what v5.10 does) | |||
stdio | is there specific reason you guys use 5.10 instead of 5.14? | 21:13 | |
masak | stdio: who says we use 5.10 instead of 5.14? :) | 21:14 | |
stdio | some of you :) | ||
spider-mario | stdio: “use v5.10” is just a line of code | ||
masak | 'say' was introduced in Perl 5.10. | ||
stdio | oh | ||
spider-mario | and it gives better compatibility than “use v5.14” if you only use say | ||
masak | I'd suggest using Perl 5.16 if you have the choice :) | 21:15 | |
colomon | stdio: print is still there. but say is the more common function, and saving four characters (two in the function and the \n) on something you do all the time is a pretty big win | ||
masak | stdio: the big win with 'say', in my opinion, is that you don't have to type "\n" so much. | ||
21:15
havenn left
|
|||
masak | that's just so common. | 21:15 | |
and it feels like the language is nice to help you avoid that, with a *shorter* function name that 'print', no less. | 21:16 | ||
stdio | i come from the old days of perl, been out of loop for a while | ||
spider-mario | or even “. "\n"” if you do not use string interpolation | ||
(~ instead of . in 6) | |||
masak | spider-mario: pro tip: never concatenate-then-print. just use commas ;) | ||
spider-mario | (or , if passing multiple arguments to print) | ||
masak | right. | 21:17 | |
spider-mario | yeah, isn’t . kind of the php way? :D | ||
to me, php seems to try being perl and not being perl at the same time | 21:18 | ||
Araq | how about making blocks shorter by using indentation instead of {}? ;-) | ||
spider-mario | actually, haskell allows both | ||
I’ve found significant indentation to work greatly in Haskell | 21:19 | ||
Araq | yep | ||
but I guess for perlers indentation based syntax is blasphemy | 21:21 | ||
stdio | what do you mostly code in perl, web apps or admin scripts? backend apps? | 21:22 | |
masak | depends who you ask. | 21:24 | |
Araq: all is fair if you predeclare. but it's never going to be part of the main Perl slang. | |||
Araq | I never got that part of perl | 21:26 | |
it tries to introduce shortcuts all over the place and yet getting rid of {;} or the sigils was never even considered | |||
lichtkind made link anchors for quote adverbs and there proper linking | 21:28 | ||
masak | Araq: I dispute "never even considered". you'll probably find that most Perl people will happily discuss those two syntactic features, and why they like or don't like them. | 21:29 | |
Araq | yeah ok, I'm unfair | ||
masak | as for me, I happen to like sigils and semicolons. | ||
spider-mario | ; is a separator in perl rather than a terminator, which makes it possible to avoid it sometimes. | ||
masak | to the point that I'm slightly uneasy about the new \-sigil sigilless variables. | 21:30 | |
Araq | well masak, you like 'say' does not require \n | ||
masak | but I'm going to withhold judgement about them until we have a working implementation. | ||
Araq | and it's good because it's a common thing | ||
and I don't disagree btw | 21:31 | ||
masak | Araq: yes, but the sigils and the semicolons do useful work for me. | ||
putting them in makes sense in various ways. | |||
semicolons: I like the freedom of laying out my statements on several lines. if you lose the statement separators, you'll have to start to make compromises with that. | |||
sigils: ever used variable interpolation in strings? it's quite handy. also, the "mini-namespacing effect" with $ @ % &. also, clearly separating nouns from verbs. | 21:32 | ||
spider-mario | interpolation does not require sigils, does it? | 21:40 | |
there’s the more general {} | |||
lichtkind | 9i dont quite get it | 21:46 | |
masak | spider-mario: sure. but sigils allow interpolation without {} or any other marker. the sigil is marker enough. | 21:47 | |
21:52
fgomez joined
|
|||
masak | "He put the {noun} on the {place} and went back to the {location}." versus "He put the $noun on the $place and went back to the $location." | 21:53 | |
spider-mario | honestly, I might prefer the first one | 21:58 | |
which makes it clearer where interpolated variables stop | |||
masak | r: my ($noun, $place, $location) = <clock mantlepiece kitchen>; say "He put the {$noun} on the {$place} and went back to the {$location}." | 21:59 | |
p6eval | rakudo a4c78f: OUTPUT«He put the clock on the mantlepiece and went back to the kitchen.» | ||
masak | then it's available to you. | ||
and sometimes it's advisable, for exactly the reason you give. | 22:00 | ||
22:10
kaare_ left,
MayDaniel joined
|
|||
Araq | see you, good night | 22:11 | |
22:11
Araq left
22:23
havenn joined
22:25
havenn left,
havenn joined
22:41
MayDaniel left
22:46
mj41 joined
22:51
lichtkind left
|
|||
sorear | masak: | 22:53 | |
n: my \foo = 5; say foo | |||
p6eval | niecza v15-6-gefda208: OUTPUT«5» | ||
22:54
mj41 left
|
|||
masak | sorear: woot. what's your impression of them so far? | 22:56 | |
23:12
benabik joined
23:25
Timbus left
|
|||
masak | p6: my $x = 31; say :8($x) | 23:25 | |
p6eval | pugs: OUTPUT«25» | ||
..niecza v15-6-gefda208: OUTPUT«Unhandled exception: Numbers may not be passed :base(); if you wanted to render the number in the given base, use $number.base($radix); if you want to treat the number as a string, explicitly coerce it first at /home/p6eval/niecza/lib/CORE.setting line 13… | |||
..rakudo a4c78f: OUTPUT«Nominal type check failed for parameter '$str'; expected Str but got Int instead in sub unbase at src/gen/CORE.setting:4008 in block <anon> at /tmp/WxHEFGpJCh:1» | |||
masak submits LTA rakudobug | 23:26 | ||
23:26
Timbus joined
|
|||
spider-mario | p6: my \foo = 5; say foo | 23:26 | |
p6eval | rakudo a4c78f: OUTPUT«===SORRY!===Malformed myat /tmp/0axah2ZQwu:1» | ||
..pugs: OUTPUT«***  Unexpected "\\" expecting "=", formal parameter, context, ":" or "(" at /tmp/iexIhFvdCS line 1, column 4» | |||
..niecza v15-6-gefda208: OUTPUT«5» | |||
23:27
ruoso left,
ruoso joined
23:35
havenn left
23:40
fgomez left
|
|||
sorear | masak: I haven't used them much | 23:42 | |
23:47
fgomez joined
23:48
derrazo joined
23:51
thou joined
|
|||
masak | 'night, #perl6 | 23:51 | |
colomon | o/ |