»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
JumpingJackeroo when should i use the bind operator := instead of = 01:02
shouldn't perl6 knows if a list is going to be infinite
any scenario where := is necessary 01:03
?
TimToady JumpingJackeroo: the halting problem implies that we can't always know whether a list is infinite 01:32
TimToady it knows in the obvious cases, but not all cases are obvious 01:32
JumpingJackeroo thank you 01:33
TimToady anyway, P5 programmers will expect = to be eager regardless of whether we know
r: my @foo = 1..*; # knows
camelia ( no output )
TimToady r: my @foo = 1..*; say @foo[^20]; # knows
camelia rakudo-parrot 3c80d3, rakudo-jvm 3c80d3, rakudo-moar 3c80d3: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20␤»
TimToady but as soon as you put a gather and some generating code, the halting problem arises 01:34
BenGoldberg I know in perl5, if I do $x = delete $h{$y}, it will remove key $y from hash %h, and will assign to $x the value that had been in $h{$y} before the deletion occured.... how do I do this in perl6? 02:04
my $x = %h{$y} :delete; ?
(doesn't seem to do the right thing)
BenGoldberg is attempting a sieve of eratosthenese, as follows: 02:05
r: my %sieve; my @primes; my $p_i = 0; my $p = 2; my $q = 4; my $n = 5; @primes := gather { take 2; take 3; OUTER: loop { while ( my $s = %sieve{$n} :delete ) { push %sieve{$n + $_}, $_ for $s; $n += 2 }; while $n < $q { take $n; $n += 2; next OUTER if %sieve{$n} :exists; }; push %sieve{$q + $p * 2}, $p * 2; $p = @primes[++$p_i]; $q = $p*$p; $n += 2; } };
camelia rakudo-jvm 3c80d3: OUTPUT«Unhandled exception: This representation can not unbox to a native str␤ in delete_key (gen/jvm/CORE.setting:8973)␤ in delete_key (gen/jvm/CORE.setting:8969)␤ in (gen/jvm/CORE.setting:1915)␤ in (gen/jvm/CORE.setting:1908)␤ in SLICE_ONE (gen/…»
..rakudo-parrot 3c80d3: OUTPUT«This type cannot unbox to a native string␤current instr.: 'delete_key' pc 370776 (src/gen/p-CORE.setting.pir:156357) (gen/parrot/CORE.setting:8993)␤called from Sub 'delete_key' pc 370699 (src/gen/p-CORE.setting.pir:156300) (gen/parrot/CORE.setting:89…»
..rakudo-moar 3c80d3: OUTPUT«Unhandled exception: This type cannot unbox to a native string␤ at src/gen/m-CORE.setting:8973 (/home/p6eval/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:delete_key:72)␤ from src/gen/m-CORE.setting:8969 (/home/p6eval/rakudo-inst-1/lang…»
BenGoldberg n: my %sieve; my @primes; my $p_i = 0; my $p = 2; my $q = 4; my $n = 5; @primes := gather { take 2; take 3; OUTER: loop { while ( my $s = %sieve{$n} :delete ) { push %sieve{$n + $_}, $_ for @$s; $n += 2 }; while $n < $q { take $n; $n += 2; next OUTER if %sieve{$n} :exists; }; push %sieve{$q + $p * 2}, $p * 2; $p = @primes[++$p_i]; $q = $p*$p; $n += 2; } }; 02:07
camelia ( no output )
BenGoldberg n: my %sieve; my @primes; my $p_i = 0; my $p = 2; my $q = 4; my $n = 5; @primes := gather { take 2; take 3; OUTER: loop { while ( my $s = %sieve{$n} :delete ) { push %sieve{$n + $_}, $_ for @$s; $n += 2 }; while $n < $q { take $n; $n += 2; next OUTER if %sieve{$n} :exists; }; push %sieve{$q + $p * 2}, $p * 2; $p = @primes[++$p_i]; $q = $p*$p; $n += 2; } }; say @primes[^5];
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Unable to resolve method push in type Any␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/pq2BxZQpL8 line 1 (ANON @ 28) ␤ at /tmp/pq2BxZQpL8 line 1 (ANON @ 9) ␤ at <unknown> line 0 (KERNEL dogather @ 1) ␤ at /home/…»
BenGoldberg Hmm... I think that the "cannot unbox" is a rakudobug. 02:26
With niecza, the following works ok: 02:27
n: my %sieve; sub addit($start is copy, $step) {$start+=$step while %sieve{$start};%sieve{$start}= $step;}; my @primes;my$p_i=1;my$n=5;my$p=3;my$q=9;@primes:=gather {take 2; take 3; loop { if ( my $s = %sieve{$n} :delete ) { addit($n + $s, $s) } elsif $n < $q { take 0+$n } else { addit($q + $p*2, $p * 2); $p = @primes[++$p_i]; $q = $p*$p; }; $n += 2 } }; say @primes[^20];
camelia niecza v24-109-g48a8de3: OUTPUT«2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71␤»
BenGoldberg But with rakudo, it dies with the "This type cannot unbox to a native string" exception.
TimToady I believe loop labels are NYI 02:34
BenGoldberg I rewrote it to not need the label. 02:37
BenGoldberg Well, actually I made it more like the original python code :), but same difference. 02:37
TimToady a workaround, when you say %sieve{$x}, say %sieve{~$x} instead 02:49
TimToady it apparently can't figure out how to hash an integer 02:49
BenGoldberg Ok :) 02:50
rn: my %sieve; sub addit($start is copy, $step) {$start+=$step while %sieve{$start};%sieve{$start}= $step;}; my @primes;my$p_i=1;my$n=5;my$p=3;my$q=9;@primes:=gather {take 2; take 3; loop { if ( my $s = %sieve{~$n} :delete ) { addit($n + $s, $s) } elsif $n < $q { take 0+$n } else { addit($q + $p*2, $p * 2); $p = @primes[++$p_i]; $q = $p*$p; }; $n += 2 } }; say @primes[^100]; 02:51
camelia rakudo-parrot 3c80d3, rakudo-jvm 3c80d3, rakudo-moar 3c80d3, niecza v24-109-g48a8de3: OUTPUT«2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257…»
BenGoldberg \o/
Does anyone besides me think that an infinite lazy list of primes, with roughly constant time for each additional prime, is really cool? 02:52
lue That bugfix from a while ago fixed the issue of getting panda to run at all, but the bootstrap process now gets stuck on ==> Fetching panda :( 03:11
lue My panda is getting stuck because of that recursive .work/* problem. Using the 'absolute' branch (which seemed like a good choice) doesn't work either. 03:40
lue Hrm. I'm trying to write a routine tracer (similar to Grammar::Tracer); I've got the various Dispatcher metamodel classes set up, but apparently I can't do the EXPORTHOW trick Grammar::Tracer does with EXPORT :/ 05:16
dalek ast: 10afb2d | larry++ | S02-lexical-conventions/unicode-whitespace.t:
MONGOLIAN VOWEL SEPARATOR moved from Zs to Cf

So don't test it for being whitespace already.
06:03
dalek ecs: 43477ea | larry++ | S05-regex.pod:
bring <cntrl> in line with <:Cc>
06:24
FROGGS_ .tell lue You need this: github.com/tadzik/panda/pull/69 06:34
lue heh, I was just about to leave my computer for the night too :) . I'll check it tomorrow, ♘ #perl6 o/ 06:35
TimToady m: say "\c[PILE OF POO]" 06:41
camelia rakudo-moar 3c80d3: OUTPUT«􁝫␤»
TimToady m: say "\c[PILE OF POO].ord.base(16)"
camelia rakudo-moar 3c80d3: OUTPUT«􁝫.ord.base(16)␤»
TimToady m: say "\c[PILE OF POO]".ord.base(16) 06:42
camelia rakudo-moar 3c80d3: OUTPUT«10176B␤»
TimToady not yet
FROGGS_ gnight lue 06:43
FROGGS_ is eager to run the regex spectests 06:48
FROGGS_ gosh how I love that list: 06:57
Using /home/froggs/dev/nqp/install/bin/nqp-p (version 2014.02-1-g8aab212 / Parrot 6.1.0).
Using /home/froggs/dev/nqp/install/bin/nqp-j (version 2014.02-1-g8aab212 / OpenJDK 1.7.0_51).
Using /home/froggs/dev/nqp/install/bin/nqp-m (version 2014.02-1-g8aab212 / MoarVM 2014.02-5-g6653722).
FROGGS_ I just miss this one: 06:59
Using /home/froggs/dev/nqp/install/bin/nqp-js (version 2014.02-1-g8aab212 / node.js 10.7.3).
dalek ast: ced837a | larry++ | S05-mass/rx.t:
MONGOLIAN VOWEL SEPARATOR moved from Zs to Cf
07:00
ast: 42a12c5 | larry++ | S05-mass/charsets.t:
º and ª moved from Ll to Lo
TimToady haven't been able to figure out where <cntrl> is defined; <:cntrl> properl aliases <:Cc>, but <cntrl> doesn't 07:01
maybe we should just delete <cntrl>
FROGGS_ MoarVM/UNIDATA/PropertyValueAliases.txt:561:gc ; Cc ; Control ; cntrl 07:02
moritz +1
FROGGS_ and it seems like cntrl has a property code (14) and a property value code 07:03
moritz (to removing cntrl)
FROGGS_ moritz: but it seems to be still a valid alias 07:04
TimToady m: say so "\x80" ~~ /<cntrl>/; say so "\x80" ~~ /<:cntrl>/
camelia rakudo-moar 3c80d3: OUTPUT«False␤True␤»
TimToady where's the first def coming from? 07:05
FROGGS_ m: say "\t" ~~ /<:cntrl>/
camelia rakudo-moar 3c80d3: OUTPUT«「 」␤␤»
FROGGS_ ahhh
now I read correctly about <:cntrl>/<cntrl> 07:06
TimToady: I guess it is a method in nqp somewhere
TimToady: nqp/src/QRegex/Cursor.nqp:650: method cntrl() {
TimToady haven't been able to grep it out
ah 07:07
FROGGS_ we're even using it: nqp/src/QRegex/Cursor.nqp:653: $cur."!cursor_pass"($!pos+1, 'cntrl')
TimToady needs to be fixed in MoarVM/src/strings/ops.c and should probably just delegate to the Cc class 07:12
or, as I say, we should just delete the non-: form 07:13
it's not all that useful
FROGGS_ if :cntrl is way slower than we might leave <cntrl> it as an internal thing in nqp 07:15
TimToady 1) probably not even used, and 2) if we defer to Cc, it's the same speed 07:16
looks like it's only used in tests :) 07:17
nothing in rakudo-star uses it 07:18
and frankly, all those categories are just in there only because posix had [:cntrl:] or some such 07:20
FROGGS_ cool
(about checking star)
TimToady (well, except the same tests)
FROGGS_ /home/froggs/dev/ecosystem/gge/STATUS:58: <xdigit>, <space>, <cntrl>, <punct> 07:21
/home/froggs/dev/ecosystem/gge/lib/GGE/Match.pm:214: method cntrl() { self.cclass: /<cntrl>/ }
/home/froggs/dev/ecosystem/gge/t/perl6regex/rx_subrules:43:<cntrl>\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij/mob<cntrl>: <\t @ 0>/<cntrl>
whatever gge is, it uses it
TimToady m: say "\c[PILE OF POO]".ord.base(16) 07:23
camelia rakudo-moar 3c80d3: OUTPUT«10176B␤»
TimToady nope
FROGGS_ perl6-m -e 'say "\c[PILE OF POO]".ord.base(16)'
1F4A9
my box is happy :o)
(very happy)
because this fixes like about 50 spectests? 07:24
TimToady I didn't count
FROGGS_ TimToady: ahh, we need to bump moar and nqp revision
camelia does not build head
TimToady how...conservative... 07:25
FROGGS_ that is from [Coke]++'s roast log: S05-mass/named-chars.rakudo.moar................... 284 53 0 94 431 07:27
and now it passes on my boc 07:28
box*
FROGGS_ TimToady++ # so there are already 53 more passing tests :o) 07:28
TimToady: are you going to bump revision or shall I? 07:29
dalek ecs: bf45e2f | larry++ | S05-regex.pod:
recommend <:alpha> for no underscore
TimToady you may do it 07:30
moritz FROGGS_: if it's a valid Unicode alias, it should be available as <:cntrl>; no need to make it available as <cntrl>
TimToady that's what we were discussing above 07:31
FROGGS_ moritz: yes, I've understand it in between :o)
moritz ok -)
TimToady except if peopel expect all the posixy [:foo:] things to turn into <foo>
dalek p: 5796e43 | (Tobias Leich)++ | tools/build/MOAR_REVISION:
bump moar rev to get unicode fixes, TimToady++
moritz TimToady: then we need to teach them to look for <:foo> instead; shouldn't be too hard, the posixy thing contains colons too, after all :-) 07:32
dalek kudo/nom: 1726c7d | (Tobias Leich)++ | tools/build/NQP_REVISION:
bump nqp (moar) rev to get unicode fixes, TimToady++
FROGGS_ now we have to wait an hour :o)
TimToady or two
FROGGS_ masak: I PR'd you :o) 08:00
TimToady: that said PR removes the only usage of <cntrl> in the ecosystem 08:01
commute &
moritz I was just wondering why rakudo rebuild on camelia's server was so slow 08:08
turns out there was a JVM process from camelia using 100% CPU 08:09
m: say "\c[PILE OF POO]".ord.base(16) 08:14
camelia rakudo-moar 3c80d3: OUTPUT«10176B␤»
nwc10 rn: say "\c[PILE OF POO]".ord.base(16) 08:26
because I'm curious 08:27
camelia rakudo-jvm 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unrecognized character name PILE OF POO␤at /tmp/tmpfile:1␤------> say "\c[PILE OF POO⏏]".ord.base(16)␤»
..rakudo-parrot 1726c7, rakudo-moar 1726c7, niecza v24-109-g48a8de3: OUTPUT«1F4A9␤»
timotimo o/ 09:01
FROGGS o/ 09:03
nwc10 [Coke]: oh woe, no automated spectest runs. So we won't know how much closer to JVM ++TimToady's commit got us 10:01
nwc10 I hope you're able to find a new home for that soon. 10:05
I have none to offer 10:06
Ven r: class A { has $.a; submethod init($.a) { } }; my A $a .= new; say $a.perl; $a.init(5); say $a.perl; 10:25
camelia rakudo-parrot 1726c7, rakudo-moar 1726c7: OUTPUT«A.new(a => Any)␤Cannot assign to a readonly variable or a value␤ in submethod init at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm 1726c7: OUTPUT«A.new(a => Any)␤java.lang.RuntimeException: $.x parameters NYI␤ in submethod init at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
Ven oh, omly the :$ with (a =>) form is implemented I guess 10:26
Ven `is`, `will` and kinda `but` 10:38
dalek nda: b89cd24 | (Donald Hunter)++ | lib/Panda/Fetcher.pm:
Use eager for loop to resolve recursing into .work directory.
11:26
nda: d6f8a3a | tadzik++ | lib/Panda/Fetcher.pm:
Merge pull request #69 from donaldh/eager-for

Use eager for loop to resolve recursing into .work directory.
Ven r: sub f(:(::T $ where Int | Bool --> T) $x) { ($x(3), $x(True)) } 11:39
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Missing block␤at /tmp/tmpfile:1␤------> sub f(:(::T $ where Int | Bool --> T) ⏏$x) { ($x(3), $x(True)) }␤ expecting a…»
dalek nda/moar-support: 934a4f3 | tadzik++ | ext/File__Find:
Update File::Find
11:40
panda/moar-support: 1b8e421 | tadzik++ | ext/File__Find:
panda/moar-support: Update File::Find
tadzik I killed it 11:40
but, moar-support is merged, panda is now workings :)
Ven r: sub f(:(::T $ where Int | Bool --> T) $x) { return ($x(3), $x(True)) } 11:41
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Missing block␤at /tmp/tmpfile:1␤------> sub f(:(::T $ where Int | Bool --> T) ⏏$x) { return ($x(3), $x(True)) }␤ expe…»
Ven err 11:43
Ven not sure about that one 11:47
r: sub f(&x:(::T $ where Int | Bool --> T)) { return (x(3), x(True)) } 11:50
camelia rakudo-jvm 1726c7: OUTPUT«===SORRY!===␤Can not invoke this object␤»
..rakudo-moar 1726c7: OUTPUT«===SORRY!===␤Cannot invoke this object (REPR: P6opaque, cs = 0)␤»
..rakudo-parrot 1726c7: OUTPUT«===SORRY!===␤invoke() not implemented in class 'QAST::WVal'␤»
timotimo Ven: the problem with your init method is that you were trying to set a value to $.a, which isn't defined as "is rw" 12:00
if you want to set a value for $.a you need to access it via the attribute storage, not via the accessor 12:01
so you want to have method init($!a) { } rather than init($.a} { }
Ven timotimo: ah, I was trying that code from S06 12:06
any idea for my second code ?
(but I don't get why I need to use $!a for $.a :o) 12:08
r: class A { has $.a; submethod init($!a) { } }; my A $a .= new; say $a.perl; $a.init(5); say $a.perl; 12:09
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«A.new(a => Any)␤A.new(a => 5)␤»
Ven Well~ timotimo++ 12:10
r: class A { has $.a is rw; submethod init($.a) { } }; my A $a .= new; say $a.perl; $a.init(5); say $a.perl; 12:14
camelia rakudo-jvm 1726c7: OUTPUT«A.new(a => Any)␤java.lang.RuntimeException: $.x parameters NYI␤ in submethod init at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 1726c7, rakudo-moar 1726c7: OUTPUT«A.new(a => Any)␤A.new(a => 5)␤»
Ven alright.
FROGGS tadzik++
tadzik FROGGS++ 12:40
tadzik for some reason panda can't connect to feather though 12:41
Could not download module metadata: Failed to connect: host is unreachable
dalek nda: 026cd23 | (Tobias Leich)++ | / (7 files):
use absolute paths where possible
12:43
nda: d37c017 | tadzik++ | / (7 files):
Merge pull request #71 from tadzik/absolute

use absolute paths where possible [based on moar-support branch]
colomon tadzik: I don't seem to be having difficulty here?
tadzik moar commits
colomon: must be something with my conneciton then :/
colomon though ABC build just failed. or… ==> Installing ABC from a local directory 'ABC' ? 12:44
None of the parametric role variants for 'ABC::Pitched' matched the arguments supplied. 12:45
colomon now wonders if the Parrot version will work. He's already got a full module smoke test on Parrot underway…
colomon huh 12:59
If I just run straight from the ABC .pm files, all tests pass.
It's compiling ABC::BrokenRhythm that triggers the None of the parametric role variants for 'ABC::Pitched' matched the arguments supplied messae 13:00
Ven can you do something like c++ template specialization ?
ie `multi class a [::T] {}; class a [Int]` or something 13:01
TimToady roles dispatch like multis, if that's what you're asking 13:29
TimToady role a[::T] { method foo() { say "::T" } }; role a[Int] { method foo() { say "Int" }}; class aInt does a[Int] {}; class aT does a[Str] []; say aInt.new.foo; say aT.new.foo 13:33
r: role a[::T] { method foo() { say "::T" } }; role a[Int] { method foo() { say "Int" }}; class aInt does a[Int] {}; class aT does a[Str] []; say aInt.new.foo; say aT.new.foo
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unable to parse class definition␤at /tmp/tmpfile:1␤------> nt does a[Int] {}; class aT does a[Str] ⏏[]; say aInt.new.foo; say …»
TimToady r: role a[::T] { method foo() { say "::T" } }; role a[Int] { method foo() { say "Int" }}; class aInt does a[Int] {}; class aT does a[Str] {}; say aInt.new.foo; say aT.new.foo
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«Int␤True␤::T␤True␤»
TimToady like that? 13:34
Ven: ^^
Ven TimToady: something like that :-) 13:35
I actually realize what I'd want needs type inference
TimToady we don't quite do that yet 13:36
Ven TimToady: Hindley-Milner for Perl 7, ha ! 13:37
r: role Semigroup[::T]; role Monoid[::T] is Semigroup[T] {}; role Functor[::T]; role Applicative[::T] is Functor[T]; role Monoid[::T] is Monoid[T] is Application[T] {} 13:41
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«===SORRY!===␤Cannot type check against type variable T␤»
Ven something like that I guess
TimToady r: role Semigroup[::T]; role Monoid[::T] does Semigroup[T] {}; role Functor[::T]; role Applicative[::T] does Functor[T]; role Monoid[::T] does Monoid[T] does Application[T] {} 13:43
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Too late for semicolon form of role definition␤at /tmp/tmpfile:1␤------> oes Semigroup[T] {}; role Functor[::T]; ⏏role Applica…»
Ven I guess it was bound to be does
I just wondered whether between role and role it'd be inheritance
TimToady r: role Semigroup[::T] {}; role Monoid[::T] does Semigroup[T] {}; role Functor[::T] {}; role Applicative[::T] does Functor[T] {}; role Monoid[::T] does Monoid[T] does Application[T] {}
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unable to parse role definition␤at /tmp/tmpfile:1␤------> }; role Monoid[::T] does Monoid[T] does ⏏Application[T] {}␤ …» 13:44
Ven mmh ?
TimToady r: role Semigroup[::T] {}; role Monoid[::T] does Semigroup[T] {}; role Functor[::T] {}; role Applicative[::T] does Functor[T] {}; role Monoid[::T] does Monoid[T] does Applicative[T] {} 13:45
camelia rakudo-moar 1726c7: OUTPUT«Unhandled exception: Could not instantiate role 'Monoid':␤Not enough positional parameters passed; got 1 but expected 2␤ at <unknown>:1 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/Perl6/Metamodel.moarvm:specialize:4294967295)␤ from src/gen/m-Met…» 13:46
..rakudo-jvm 1726c7: OUTPUT«Unhandled exception: Could not instantiate role 'Monoid':␤Not enough positional parameters passed; got 1 but expected 2␤ in specialize (gen/jvm/Metamodel.nqp:2025)␤ in (gen/jvm/Metamodel.nqp:2465)␤ in (gen/jvm/Metamodel.nqp:2461)␤ in compose…»
..rakudo-parrot 1726c7: OUTPUT«Could not instantiate role 'Monoid':␤Not enough positional parameters passed; got 1 but expected 2␤current instr.: 'specialize' pc 22132 (src/gen/perl6-metamodel.pir:10426) (gen/parrot/Metamodel.nqp:2102)␤called from Sub '' pc 27863 (src/gen/perl6-…»
Ven role Monoid[::T] does Monoid[T]
r: role Semigroup[::T] {}; role Monoid[::T] does Semigroup[T] {}; role Functor[::T] {}; role Applicative[::T] does Functor[T] {}; role Monad[::T] does Monoid[T] does Applicative[T] {} 13:47
camelia rakudo-parrot 1726c7: OUTPUT«Could not instantiate role 'Monad':␤Not enough positional parameters passed; got 1 but expected 2␤current instr.: 'specialize' pc 22132 (src/gen/perl6-metamodel.pir:10426) (gen/parrot/Metamodel.nqp:2102)␤called from Sub '' pc 27863 (src/gen/perl6-m…»
..rakudo-jvm 1726c7: OUTPUT«Unhandled exception: Could not instantiate role 'Monad':␤Not enough positional parameters passed; got 1 but expected 2␤ in specialize (gen/jvm/Metamodel.nqp:2025)␤ in (gen/jvm/Metamodel.nqp:2465)␤ in (gen/jvm/Metamodel.nqp:2461)␤ in compose …»
..rakudo-moar 1726c7: OUTPUT«Unhandled exception: Could not instantiate role 'Monad':␤Not enough positional parameters passed; got 1 but expected 2␤ at <unknown>:1 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/Perl6/Metamodel.moarvm:specialize:4294967295)␤ from src/gen/m-Meta…»
TimToady well, looks like it's close to doing what you want
Ven type-inference is what I want, but replicating the typeclassopedia in p6 would be a nice start :) 13:48
maybe by 2025, perl 6.5 will have type inference, eh :[
s/'['/')'/ 13:49
TimToady we'd have to find some smart people who can figure out how to do it without requiring the user to be just as smart as they are :)
Ven TimToady: I think HM works nicely in Haskell 13:50
I love static type check, so that probably doesn't fit a scripting language -- which is fine
TimToady well, Haskell is definitely aimed at a different target audience than Perl 6 13:51
daxim bartoszmilewski.com/2014/02/26/c17-...ur-future/ # compare the syntax here with jnthn's talk series about futures
TimToady The only question is how much of the Promethian Fire we can put into the Procrustean Bed. 13:52
Ven TimToady: I do believe that's a task perl 6 is trying to tackle, though ? Mixing what probably shouldn't be mixed ;) 13:53
TimToady *Promethean
indeed, we're too stupid to know it's impossible :)
Ven "They didn't know it was impossible, so they did it", eh ? I guess I just like breed mixing :) 13:54
TimToady one can call it either "bastardization" or "hybrid vigor" :) 13:55
Ven If I liked stuff to be "pure" or something called like that I'd probably do lisp all day
(not "pure" in the functional sense. Else I'd do Agda or something)
TimToady well, the purity of lisp is a bit overstated at times
TimToady but yeah, lisp definitely uses its circularity saw at a very low level 13:57
Ven oh, it definitely is. I guess I can't really say I only do cool-looking stuff though, because "^^[]{}@@=>->|..=><[]>+~>%"#@".>>.&*$~_?\\`°" is a valid expression in a language I'm working on :P
(it's a no-op though ...) 13:58
TimToady looks a bit like Teco :)
TimToady which, one recalls, the first emacs was built upon, which says...something... 13:59
Ven TimToady: Hahahhaa ! The whole language doesn't look like that, though. I guess you can show a really crazy perl example and scare people off, when really ...
[Coke] m: "^^[]{}@@=>->|..=><[]>+~>%"#@".>>.&*$~_?\\`°"
camelia ( no output )
[Coke] (it's valid here, too. :P) 14:00
Ven oh wow :D
[Coke]++
TimToady he cheated
geekosaur note the string quotes :p
Ven oh yeah
[Coke] what, I pasted his code verbatim. :)
Ven well
there's #@ inbetween though
[Coke] I thought -he- was cheating.
Ven [Coke]: livescript.net, I'll let you try it :p 14:01
(as I said, it's a no-op, `->` is a function, and it's never called
TimToady curious now 14:02
m: ^^[]{}@@=>->|..=><[]>+~>%"#@".>>.&*$~_?\\`°
camelia rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/hRiuIeQw1F␤Two terms in a row␤at /tmp/hRiuIeQw1F:1␤------> ^^[]{}⏏@@=>->|..=><[]>+~>%"#@".>>.&*$~_?\\`°␤ expecting any of:␤ postfix␤ subscript␤ …»
Ven Could you add methods to the grammar to make it work,though :)?
I guess you can
TimToady every other langauge is just a dialect of Perl 6
including Perl 7 :)
Ven oh, I guess that goes for everything. I once met a guy saying lisp's reader macros where available in every language, and pasted a C example to modify the source code as an argument :) 14:03
but Perl 7 will be too godly for Perl 6 :p. 14:04
or I guess "holy" should be the word here, I can't english !
TimToady well,just think of it as a form of 'use strict;'
Ven I'd love a use stricttypes; with a more static type checking 14:05
(gradual typing is cool and all, though)
TimToady that's the big bet 14:06
Ven (so long you're not dart and you're not typechecking anything ..)
TimToady gotta keep people honest occasionally 14:06
Ven TimToady: are type annotations more of a burden (perf-wise) right now ?
TimToady depends 14:07
TimToady on assignment, yes 14:07
on multi signatures, no
Ven something like int VS something like subset Duck of Mu where *.^can('quack')
TimToady since you'd have to be writing switches or doing dispatch anyway
Ven and on simple signatures ? 14:08
TimToady sure, constraints quickly run into halting problems if you try to be analytical
Ven mmh ?
TimToady you generally have to run the constraint to figure out whether it's true or not 14:09
Ven yes, but on the error hand, it leaves room for optimization
TimToady and your duck example is potentially optimizable
Ven with `sub (Dog $d) { $d.barf; }` you know which method to call (almost)
(because it allows for Dog subtyping IIRC) 14:10
TimToady probably more so than 'subset Even of Int where * %% 2;'
Ven that shouldn't allow much optimizations though
I don't know of many methods that take longers on Odds 14:11
TimToady well, you can prove it's true right after a left shift :)
Ven TimToady: yes ! but it's still overhead compared to "Int"
whereas knowing statically $d will always be a Dog object makes it easier to generate more efficient code 14:12
TimToady sure, which is why we call it "nominal typing"
Ven I've seen atrocious perf hits in some languages because the JIT had to back off a method (suddenly, a single call with a Duck after 10k calls with a Dog)
TimToady: well, ^.can allows for kinda-structural typing, which is nice 14:13
TimToady imagines a constraint that is enforced randomly, so you eventually catch the error, but not at the expense of much runtime, course that doesn't help with constraint-based dispatch
Ven (static analysis ?)
TimToady which is why I said your example was somewhat optimizable
Ven TimToady: In a few years, maybe 14:16
or if moar gets a JIT with GSoC
TimToady one imagines a CanQuack role that automatically composes itself into anything that can quack 14:18
presuming that can be determined without an instance 14:19
Ven TimToady: that's structural typing
can you do that yet ?
TimToady not the automatic part
it's kind of an AOPish thing
needs something like a global COMPOSE phaser 14:20
Ven r: say &infix:<@#> 14:21
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ &infix:<@#> used at line 1␤␤»
Ven No way this operator doesn't exist
TimToady whazzit do?
Ven No idea, that's just from earlier, when trying to compiling my snippet. it was like `r: "lots of stuff"#@"other stuff"` and I wondered how it worked 14:22
when [Coke] cheated
TimToady I see a #@ 14:23
Ven True that, I messed the order :). Whazzit do? 14:24
TimToady r: say 42 #@ "eels";
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«42␤»
Ven OH
hahahaha
++<<[ TimToady, [Coke] ] 14:25
TimToady it's more of an infix macro, which has the unfortunate ability to eat your semicolons
along with your right argument :) 14:26
because it takes the entire rest of your line as the right argument 14:27
Ven don't push it :p 14:28
TimToady ;)
FROGGS TimToady: have you seen this? github.com/rakudo/rakudo/commit/3c80d3ae0e 14:34
I wonder what is needed to do to fix this issue... 14:35
r: my @j; my int $j = 42; @j.push($j); say @j # RT #121349
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121349
camelia rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«42␤»
..rakudo-parrot 1726c7: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in method REIFY at gen/parrot/CORE.setting:8407␤ in method reify at gen/parrot/CORE.setting:7279␤ in method gimme at gen/parrot/CORE.setting:7724␤ in method push at gen/parrot/CORE.setti…»
TimToady p: my @j; my int $j = 42; @j.push(+$j); say @j # RT #121349 14:43
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121349 14:44
camelia rakudo-parrot 1726c7: OUTPUT«42␤»
TimToady fixed it fer ya :P
FROGGS :P
I have no positive feeling about that^^ 14:45
colomon ADT and Sum modules started failing sometime in the last week (Parrot) 14:47
timotimo: ^
FROGGS when was you last test?
TimToady Sum could be related to X or Z changes 14:48
or [Z+]
or the [] as a list bug
FROGGS ADT also: github.com/timo/ADT/blob/master/lib/ADT.pm6#L30 14:49
TimToady that looks like it should work, unless >> is returning a [] rather than a () 14:51
say <1 2 3>».Str.WHAT
FROGGS p: say (<a b c>>>.Str).perl
camelia rakudo-parrot 1726c7: OUTPUT«("a", "b", "c")␤»
TimToady r: say <1 2 3>».Str.WHAT 14:52
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«(Parcel)␤»
TimToady r: say <1 2 3>».Str.VAR.WHAT
FROGGS there is a Z=> also: github.com/timo/ADT/blob/master/li...T.pm6#L140
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«(Parcel)␤»
FROGGS but Z=> should work too, at least it does for panda
colomon FROGGS: my last smoke run prior was the 23rd 14:55
TimToady well, but it's autoviving an Array, so maybe it needs a .list
FROGGS colomon: and the latest run? because I think we fixed something yesterday 14:56
TimToady Z=> is fine, but not if you expect [] to flatten
colomon FROGGS: latest run was this morning.
masak why would you expect [] to flatten?
FROGGS I guess the right answer is to never expect [] to flatten, right? 14:57
colomon about an hour ago
FROGGS colomon: okay
I was hoping for something differently
TimToady r: my @a; @a.push: 42; say @a.VAR.WHAT 14:58
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«(Array)␤»
TimToady r: my %a; %a<foo>.push: 42; say %a<foo>.VAR.WHAT 14:59
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«(Scalar)␤»
TimToady there you go
it's itemized
FROGGS I see
so it should be this? self.bless(|($name.lc => $type.new(|(%handlers{$name}.list Z=> @args).hash))) 15:00
TimToady r: my %a; %a<foo>.push: 42; say %a<foo>[].VAR.WHAT
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«(Array)␤»
TimToady or that 15:01
FROGGS or @(), but there are enough parens :o)
FROGGS p: say "\x[FF62]" 15:09
camelia rakudo-parrot 1726c7: OUTPUT«「␤»
FROGGS nqp: say "\x[FF62]"
camelia nqp-parrot: OUTPUT«Confused at line 2, near "say \"\\x[FF"␤current instr.: 'panic' pc 15934 (gen/parrot/stage2/NQPHLL.pir:5941) (gen/parrot/stage2/NQPHLL.nqp:425)␤» 15:10
..nqp-jvm: OUTPUT«Confused at line 2, near "say \"\\x[FF"␤ in panic (gen/jvm/stage2/NQPHLL.nqp:378)␤ in comp_unit (gen/jvm/stage2/NQP.nqp:922)␤ in TOP (gen/jvm/stage2/NQP.nqp:820)␤ in parse (gen/jvm/stage2/QRegex.nqp:1290)␤ in parse (gen/jvm/stage2/NQPHLL.nqp:1377)␤ …»
..nqp-moarvm: OUTPUT«Confused at line 2, near "say \"\\x[FF"␤ at gen/moar/stage2/NQPHLL.nqp:369 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/NQPHLL.moarvm:panic:120)␤ from gen/moar/stage2/NQP.nqp:917 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/nqp.moarvm:comp_unit:346)␤ f…»
FROGGS nqp: say "\c[FF62]"
camelia nqp-moarvm: OUTPUT«Confused at line 2, near "say \"\\c[FF"␤ at gen/moar/stage2/NQPHLL.nqp:369 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/NQPHLL.moarvm:panic:120)␤ from gen/moar/stage2/NQP.nqp:917 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/nqp.moarvm:comp_unit:346)␤ f…»
..nqp-jvm: OUTPUT«Confused at line 2, near "say \"\\c[FF"␤ in panic (gen/jvm/stage2/NQPHLL.nqp:378)␤ in comp_unit (gen/jvm/stage2/NQP.nqp:922)␤ in TOP (gen/jvm/stage2/NQP.nqp:820)␤ in parse (gen/jvm/stage2/QRegex.nqp:1290)␤ in parse (gen/jvm/stage2/NQPHLL.nqp:1377)␤ …»
..nqp-parrot: OUTPUT«Confused at line 2, near "say \"\\c[FF"␤current instr.: 'panic' pc 15934 (gen/parrot/stage2/NQPHLL.pir:5941) (gen/parrot/stage2/NQPHLL.nqp:425)␤»
FROGGS nqp: say("\x[FF62]") 15:11
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«「␤»
timotimo thank you colomon 15:23
FROGGS colomon: we really need your stats on a public server :/ 15:32
colomon and need them for jvm and moar, too. 15:33
FROGGS timotimo: you've seen the discussion about the possible fix?
colomon: ohh, yes
colomon if someone could just mail me a large supply of tuits... 15:35
FROGGS wendy++ could do that *g* 15:37
colomon then I could burn them to stay warm (-19F when I woke up this morning) and use the savings to spend an extra hour working on p6! 15:38
FROGGS -19F?? 15:39
colomon yup
FROGGS that is kinda crazy
btyler multiple days with air temperature in that range here in MN: with windchill it got down to more like -40F/C 15:40
really tough winter this year
geekosaur I wake up kinda late (0900ish local) and it was still 0°F today
colomon This has been a pretty extreme winter
timotimo FROGGS: no, not yet
i was on ym phone
i'm now on my notebook, though, so i can have a look
colomon we've only gotten above freezing for maybe four days in the last six weeks.
geekosaur (we haven't quite reached -19 at any point this winter)
FROGGS - self.bless(|($name.lc => $type.new(|(%handlers{$name} Z=> @args).hash))) 15:41
+ self.bless(|($name.lc => $type.new(|(%handlers{$name}.list Z=> @args).hash)))
timotimo: something like this --^
timotimo oh, that is from my code?
FROGGS timotimo: yes, ADT that is 15:42
github.com/timo/ADT/blob/master/li...T.pm6#L140
FROGGS I dunno how long our winter was in germany, it it was not very long and it was not very cold even 15:42
timotimo thank you :) 15:43
colomon we've had 10+ cm of snow on the ground since mid-December. And if the 10-day forecast is even close to right, we will have it well into March. 15:44
FROGGS timotimo: we just patched it in theory, you must do the hard testing work :o)
colomon and we've been lucky, they got another meter of snow just a couple hours' drive south of us. 15:44
timotimo hehe 15:47
will do it when i've reached my destination
i think i'm getting a bit sick from using my laptop on the train right now
FROGGS yeah, the same happens to me 15:52
nwc10 TimToady: in perl 1, why does it have EXT struct stat statbuf; and EXT struct tms timesbuf; in perl.h, rather than using local variables in functions? Was there some compiler back then that screwed up allocating structs on the stack? 16:05
TimToady Don't recall, but I suspect it's just because the stat manpage had 'extern struct stat statbuf' 16:09
nwc10 aha thanks
geekosaur nwc10: for what it's worth, early versions of the original pcc (the cc on v7/2bsd/4bsd) couldn't return structs, so you needed to allocate and return a pointer or write to an external buffer somewhere. which is why so much stuff takes a struct pointer parameter that is written into 16:13
timotimo FROGGS: how did you become a #perl6 member if you can't code on a train? :) 16:35
geekosaur did so by not having a train to code on... 16:36
FROGGS timotimo: I am not that often on a train obviously, so they tolerate me :o) 16:37
colomon has never coded on a train 16:44
masak :) 16:45
timotimo :) 16:46
PerlJam Have you coded on a bus? Did you code without much fuss? 16:55
masak :)
yes.
though that's probably the vehicle I've coded on where I'm the most likely to get carsick. 16:56
PerlJam wouldn't that be bus-sick?
:)
masak :P
timotimo bad bus factor ...
colomon has actually spent a good bit of time coding in a car or minivan… 16:58
grondilu rn: grammar Foo { rule TOP { <expr> }; rule expr { <symbol> '[' ~ ']' [ <symbol>+ % ',' ]? }; token symbol { <.alpha>+ } }; say Foo.parse('Foo[bar,buz]'); 17:25
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7, niecza v24-109-g48a8de3: OUTPUT«「Foo[bar,buz]」␤ expr => 「Foo[bar,buz]」␤ symbol => 「Foo」␤ symbol => 「bar」␤ symbol => 「buz」␤␤»
grondilu rn: grammar Foo { rule TOP { <expr> }; rule expr { <symbol> | <expr> '[' ~ ']' [ <expr>+ % ',' ]? }; token symbol { <.alpha>+ } }; say Foo.parse('Foo[bar,buz]'); 17:26
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«「Foo」␤ expr => 「Foo」␤ symbol => 「Foo」␤␤»
..niecza v24-109-g48a8de3: OUTPUT«(Any)␤»
grondilu desperately notices that he never manages to correctly write recursive rules :/ 17:27
rn: grammar Foo { rule TOP { <expr> }; token expr { <symbol> | <expr> '[' ~ ']' [ <expr>+ % ',' ]? }; token symbol { <.alpha>+ } }; say Foo.parse('Foo[bar,buz]'); 17:28
camelia rakudo-moar 1726c7, niecza v24-109-g48a8de3: OUTPUT«(timeout)» 17:29
..rakudo-parrot 1726c7: OUTPUT«maximum recursion depth exceeded␤current instr.: 'print_exception' pc 139569 (src/gen/p-CORE.setting.pir:59493) (gen/parrot/CORE.setting:10965)␤called from Sub 'defined' pc 9129 (gen/parrot/stage2/NQPCORE.setting.pir:4209) (gen/parrot/stage2/NQPCORE.…»
..rakudo-jvm 1726c7: OUTPUT«pr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤ in expr␤…»
FROGGS rn: grammar Foo { rule TOP { <expr> }; token expr { <symbol> | <expr> {} '[' ~ ']' [ <expr>+ % ',' ] }; token symbol { <.alpha>+ } }; say Foo.parse('Foo[bar,buz]'); 17:31
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«「Foo」␤ expr => 「Foo」␤ symbol => 「Foo」␤␤»
..niecza v24-109-g48a8de3: OUTPUT«(Any)␤»
FROGGS m: grammar Foo { rule TOP { <expr> }; token expr { <symbol> | <expr> {} '[' ~ ']' [ <expr>+ % ',' ] }; token symbol { <.alpha>+ } }; say Foo.parse('Foo[bar,buz[zer]]');
camelia rakudo-moar 1726c7: OUTPUT«「Foo」␤ expr => 「Foo」␤ symbol => 「Foo」␤␤»
timotimo looking forward to the daily roast commit :3 17:44
[Coke] timotimo: probably won't happen until sunday 17:45
and I'm not going to rerun missing days.
timotimo ah, that's okay
it's just that we're expecting a big jump up in rakumoar's pass rate 17:46
[Coke] will oblige asap.
colomon timotimo: what exactly was done? 17:48
FROGGS TimToady++ fixed unicode character-by-name lookups
which are worth >50 tests AFAIK
timotimo he fixed PILE OF POO 17:49
FROGGS and we are at about 150 failing tests the last time roast_pass_data worked
exactly
colomon is finished cooking, backlogs, and .... 19:20
timotimo is not sure what to do next 19:21
colomon FROGGS, timotimo: so TimToady++ eliminated more than 1/3 of the "passing" tests moar was failing in one blow?
FROGGS colomon: that is what I think, yes 19:22
colomon woah
FROGGS but [Coke]++'s smoke testing will have to prove that :oO)
-0
timotimo colomon i think so, yes 19:23
ah, i should fix ADT 19:24
timotimo the suggested fix is probably good. i'll run the tests which should prove it to be right :P 19:30
except my tests are not really extremely thorough
colomon well, we know they were breaking as of this morning. 19:31
so if you make them stop breaking, it's got to be an improvement
even if it still isn't right.
timotimo :) 19:33
i might make more tests at some point
we need a test coverage analysis tool :P
not yet working :| 19:36
ah 19:37
it helps to get the latest commits from nom
timotimo (at least i hope so) 19:50
arnsholt o/ 19:54
timotimo heyo arnsholt :) 19:55
i didn't actually do anything for nativecall on moar yet
but jnthn said something about starting with that a few days ago
arnsholt 'sok, neither did I =)
FROGGS :o)
timotimo i'm getting into Qt Creator plugin development 19:56
i see, people are excited 19:58
arnsholt Tool support for people who aren't already vi/emacs brainwashed sounds like a very good thing 20:05
You can have my vi when you pry it from my cold, dead hands, but more tools sounds good to me =) 20:06
timotimo qt creator has a fakevim plugin 20:08
which i'd like to improve, if i can at all
arnsholt clones iperl6kernel 20:11
timotimo but i'd probably only work on that in order to familiarize myself more with the codebase 20:15
so that i can build perl6 related stuff ;)
and at some point i'll want to improve fakevim because i'm using qt creator all the time ;)
arnsholt timotimo: In ChattyRepl.interactive, it says that it's copied from HLL::Compiler, but since it's been copied I assume some bits have been changed (since HLL::Compiler.interactive wasn't used). Do you remember roughly which bits?
Quom donaldh++ github.com/tadzik/panda/commit/b89cd2
timotimo arnsholt: no, that's pretty long ago now :( 20:16
Quom is glad to see that issue resolved
arnsholt Not a problem
timotimo i think i only copied the parts that take care about making lexicals available to future invocations
Quom and tadzik++ and FROGGS++
arnsholt I'll just diff agains HLL::Compiler and see what falls out =)
But asked you first in case you remembered, 'cause that's even easier =)
Quom for making Panda awesomesauce
timotimo right :) 20:17
arnsholt Oh, and the iPython messaging docs are a bit confusing >.< 20:23
timotimo a bit, aye.
FROGGS hi Quom :o) 20:28
Mouq hi :)
timotimo need to go catch a train now
FROGGS ahh Mouq!
FROGGS puts away his mirror 20:29
timotimo ah hey Mouq
i wouldn't have minded a new member, but Mouq is just as good :3
Mouq doesn't like Mouq_
timotimo: Daww, well I should have tuits later this weekend, should probably spend it getting Pod tables working 20:30
properly
Mouq & for now though 20:38
timotimo cool! :) 20:50
FROGGS I can't tell how much I hate this msg: Missing or wrong version of dependency 'src/gen/m-CORE.setting' 20:54
lue FROGGS: "Uninitialized value of type Any used in string context" is far worse, as well as any other error message that fails to supply a backtrace :) 20:58
FROGGS that is bad too, yes :o) 20:59
lue (perl6-p does provide a backtrace for that error though, which is one of the reasons it's still nice to have around ☺) 21:00
timotimo adds methods to ADT to treat ADTs like lists of their "positional" parameters 21:02
[Coke] ADT? 21:04
oh.
FROGGS lue: that is what I do too when I get an error in the setting or so... I'll check with other backends, because often you get different error messages for the same problem
masak FROGGS: what would need to change in order for people not to get that version dependency message? or what would need to change for you/them to hate it less? 21:05
FROGGS masak: I'd let fall back to the pm file if it is present 21:06
FROGGS or perhaps recompile the .moarvm/.pbc/... 21:06
because it is just a cached version
masak: in the module loader it checks for both the existence of .pm and .moarvm, so we'd just need to check for the workability of the .moarvm before we are trying to load it 21:10
m: say v1 ~~ v2 21:11
camelia rakudo-moar 1726c7: OUTPUT«False␤»
FROGGS m: say v2 ~~ v1
camelia rakudo-moar 1726c7: OUTPUT«False␤»
FROGGS m: say v1.2.3.4 ~~ v1.2.3.4
camelia rakudo-moar 1726c7: OUTPUT«True␤»
FROGGS m: say v1.2.3.4 ~~ v1.2.3
camelia rakudo-moar 1726c7: OUTPUT«True␤»
FROGGS m: say v1.2.3.4 == v1.2.3
camelia rakudo-moar 1726c7: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: *%_)␤ in method Numeric at src/gen/m-CORE.setting:1010␤ in sub infix:<==> at src/gen/m-CORE.setting:4068␤ in sub infix:<==> at src/gen/m-CORE.setting:4066␤ in block at /tmp/k1…»
FROGGS :/
m: say v1.2.3 ~~ v1.2.3.4
camelia rakudo-moar 1726c7: OUTPUT«True␤»
FROGGS versions/versioning is never intuitive, ehh? 21:12
TimToady I see that dalek is MIA 21:14
FROGGS yeah, he took a day off
masak FROGGS: that sounds incredibly sane to me. why aren't we doing it like that? 21:20
FROGGS tuits? priorities? I dunno
lue FROGGS: wait, you're running modules from previous versions of Rakudo (or at least trying to)? I've always experienced the versioning of rakudo to be way too granular for that to happen by default. 21:22
masak question to the people: would you write ^$0.elems without hesitation? (it means (0 ..^ $0.elems) -- or would you parenthesize it to ^($0.elems) ? 21:23
oops, missing ')' in there. sorry 'bout that :)
FROGGS lue: I am playing with panda, which precompiles modules like File::Find 21:24
FROGGS masak: since I write prefix:<+> without parens, I'd also write prefix:<^> without 21:25
lue masak: depends on how familiar I am with the precedence table by that point :) 21:26
Mouq r: say ^+(1,2,3) 21:27
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«0..^3␤»
masak lue: I think I'm aiming for a style that doesn't depend too much on the level of proficiency of the reader. 21:28
so I guess what I'm asking is how shocking ^$0.elems looks to the lowest common denominator. 21:29
lue masak: I see there's potential for someone's brain to think the smallest operator (^ vs. .elems) should go first. 21:29
FROGGS a bit shocking, yes
masak right. 21:30
FROGGS because you have to read from the middle to the end to the front
masak decides to write it as $0.keys, which is better anyways.
lue If relevant and possible, you could put an aside somewhere saying "you don't need the parens, but we're doing it for clarity" 21:31
timotimo i kind of like ^+... 21:32
lue couldn't you also write it as ^+$0 though? :) 21:32
timotimo r: my @a = <foo bar baz>; say ^+@a; 21:32
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«0..^3␤»
timotimo well, in that case it'd have to be ^+@$0, which seems kind of line noisy ... 21:33
there's no non-parethesized way to get something like ^5.perl to mean (^5).perl, right? 21:34
FROGGS .oO( ^+($0[]) )
timotimo .perl is less good for an example, but pick and roll are
Mouq timotimo: +$0 == +$0.elems != +@$0 21:35
oh, wait
*== +@$0
timotimo r: say pick ^5
FROGGS well, there are traits about precedence
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«Nil␤»
timotimo ..oh?
hah 21:36
FROGGS m: prefix:<^>(|) is prec('y>') { 42 }; say ^1.perl 21:37
camelia rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/nu47ItmFUt␤Preceding context expects a term, but found infix | instead␤at /tmp/nu47ItmFUt:1␤------> prefix:<^>(|⏏) is prec('y>') { 42 }; say ^1.perl␤»
timotimo i know what it does
it flattens the arguments to figure out how many there are
and the npicks from the nonflattened argument list 21:38
FROGGS m: prefix:<^>(*@) is prec('y>') { 42 }; say ^1.perl
camelia rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/y4icyoVbVs␤Unable to parse expression in argument list; couldn't find final ')' ␤at /tmp/y4icyoVbVs:1␤------> prefix:<^>(*⏏@) is prec('y>') { 42 }; say ^1.perl␤ expec…»
Mouq FROGGS: You need a space between > and (
No, wait
FROGGS m: multi prefix:<^>(*@) is prec('y>') { 42 }; say ^1.perl
camelia rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/oIJNQBfBPD␤Can't use unknown trait 'is prec' in a sub declaration.␤at /tmp/oIJNQBfBPD:1␤------> ␤ expecting any of:␤ rw parcel hidden_from_backtrace␤ pure default DEPREC…»
Mouq is dumb
timotimo haha 21:39
Mouq was remembering that you can't do "sub type:thing($param) {*}"
timotimo no i'm silly
r: say pick 5, ^5
camelia rakudo-parrot 1726c7: OUTPUT«4 2 0 3 1␤»
..rakudo-moar 1726c7: OUTPUT«0 4 3 2 1␤»
..rakudo-jvm 1726c7: OUTPUT«0 1 2 4 3␤»
timotimo gotta get off my train now
FROGGS m: multi prefix:<^>(*@) is tighter(&postcirumfix:<[ ]>) { 42 }; say ^1.perl 21:40
camelia rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/Dh7kpKqII8␤Can't use unknown trait 'is tighter' in a sub declaration.␤at /tmp/Dh7kpKqII8:1␤------> ␤ expecting any of:␤ rw parcel hidden_from_backtrace␤ pure default DEP…»
FROGGS m: sub prefix:<^> (|) is tighter(&postfix:<++>) { 42 }; say ^1.perl # there we go 21:43
camelia rakudo-moar 1726c7: OUTPUT«42␤»
FROGGS hmmm, no 21:44
n: sub prefix:<^> (|) is tighter(&postfix:<i>) { 42 }; say ^1.succ # there we go 21:45
camelia niecza v24-109-g48a8de3: OUTPUT«43␤»
FROGGS m: sub prefix:<^> (|) is tighter(&postfix:<i>) { 42 }; say ^1.succ # there we go
camelia rakudo-moar 1726c7: OUTPUT«42␤»
FROGGS r: sub prefix:<^> (|) is tighter(&postfix:<i>) { 42 }; say ^1.succ # there we go
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«42␤»
FROGGS rakudobug
Mouq m: proto prefix:<^> (|) is tighter(&postfix:<++>) { 42 }; say ^1.perl 21:48
camelia rakudo-moar 1726c7: OUTPUT«42␤»
Mouq That error message is LTA; ought to say "Did you mean to use a proto" or likewise, /me thinks 21:49
FROGGS I think my error msg above is because there is no &postcirumfix:<[ ]> 21:51
m: say &postcirumfix:<[ ]>
camelia rakudo-moar 1726c7: OUTPUT«===SORRY!=== Error while compiling /tmp/iFiYPzkQI4␤Undeclared name:␤ &postcirumfix:<[ ]> used at line 1␤␤»
Mouq r: $(1,2,3).WHAT.say 21:54
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«(Parcel)␤»
Mouq r: (1,2,3).WHAT.say
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«(Parcel)␤»
Mouq github.com/rakudo/rakudo/commit/7c12a 21:58
^^ product of my debugging from a couple days ago; I don't know why it wasn't working then (I think maybe I just hadn't hit save), but it works now 21:59
Mouq p6: "a b c d" ~~ /[(\w) \s*]+/; say $0.WHAT 22:02
camelia niecza v24-109-g48a8de3: OUTPUT«(List)␤» 22:03
..rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«(Parcel)␤»
Mouq p6: "a b c d" ~~ /[(\w) \s*]+/; say $0.caps
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«No such method 'caps' for invocant of type 'Parcel'␤ in block at /tmp/tmpfile:1␤␤»
..niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Unable to resolve method caps in type List␤ at /tmp/tmpfile line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4595 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4596 (module-CORE @ 576) ␤ …»
Mouq p6: "a b c d" ~~ /[(\w) \s*]+/; say $0[].caps
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Unable to resolve method caps in type List␤ at /tmp/tmpfile line 1 (mainline @ 6) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4595 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4596 (module-CORE @ 576) ␤ …»
..rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«No such method 'caps' for invocant of type 'List'␤ in block at /tmp/tmpfile:1␤␤»
Mouq p6: "a b c d" ~~ /[(\w) \s*]+/; say $0>>.caps 22:03
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7, niecza v24-109-g48a8de3: OUTPUT« ␤»
Mouq p6: "a b c d" ~~ /[(\w) \s*]+/; say $0.caps
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7: OUTPUT«No such method 'caps' for invocant of type 'Parcel'␤ in block at /tmp/tmpfile:1␤␤»
..niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Unable to resolve method caps in type List␤ at /tmp/tmpfile line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4595 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4596 (module-CORE @ 576) ␤ …»
Mouq p6: "a b c d" ~~ /[(\w) \s*]/; say $0.caps
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7, niecza v24-109-g48a8de3: OUTPUT«␤» 22:04
Mouq changes a single element to not be an Array, Mouq--
FROGGS p6: "a b c d" ~~ /[(\w) \s*]/; say $0
Mouq *a single capture 22:04
camelia rakudo-parrot 1726c7, rakudo-jvm 1726c7, rakudo-moar 1726c7, niecza v24-109-g48a8de3: OUTPUT«「a」␤␤»
masak 'night, #perl6 22:15
FROGGS gnight masak 22:16
Mouq o/ 22:17
is there an easier way to say 'nqp::elems(nqp::list($var))'? 22:18
timotimo er, i don't think that will actually flatten for you 22:20
Mouq Hm 22:22
timotimo there's a nqp:: op that does flatten
i forgot what it's called :( 22:23
p6list perhaps?
Mouq just wants to know if $var is list-y or Match-y
FROGGS nqp::islist?
nqp::istype($var, NQPMatch)?
timotimo ah
Mouq Thank youuus 22:24
timotimo i wonder if i should be pushing for adt to get into star at some point 22:50
Mouq r: 'aaaaa' ~~ /\w+/; say $¢
camelia rakudo-jvm 7c12aa: OUTPUT«(timeout)»
..rakudo-parrot 7c12aa, rakudo-moar 7c12aa: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unsupported use of $¢ variable␤at /tmp/tmpfile:1␤------> 'aaaaa' ~~ /\w+/; say ⏏$¢␤ expecting any of:␤ argument list␤ …»
timotimo r: 'aaaa' ~~ /\w+/; say $/.CURSOR 22:51
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«Cursor.new()␤»
timotimo r: 'aaaa' ~~ /\w+/; say $/.CURSOR.DUMP
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«Cursor<1>(:$!ast(Any))␤»
timotimo good night! 22:58
lue timotimo o/ 22:59
Mouq o/ timotiom 23:02
mo
r: 'aaaaa' ~~ /\w+/; EVAL 'say $¢'; CATCH $!.WHAT.say 23:04
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Missing block␤at /tmp/tmpfile:1␤------> 'aaaaa' ~~ /\w+/; EVAL 'say $¢'; CATCH ⏏$!.WHAT.say␤ expecting any of:␤ …»
Mouq r: 'aaaaa' ~~ /\w+/; EVAL 'say $¢'; CATCH { $!.WHAT.say }
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«===SORRY!=== Error while compiling eval_0␤Unsupported use of $¢ variable␤at eval_0:1␤------> say ⏏$¢␤ expecting any of:␤ argument list␤ prefix or…»
Mouq r: 'aaaaa' ~~ /\w+/; try { EVAL 'say $¢'; CATCH { $!.WHAT.say } } 23:05
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«Nil␤===SORRY!=== Error while compiling eval_0␤Unsupported use of $¢ variable␤at eval_0:1␤------> say ⏏$¢␤ expecting any of:␤ argument list␤ pre…»
Mouq r: 'aaaaa' ~~ /\w+/; try { EVAL 'say $¢'; } CATCH { $!.WHAT.say } #?
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> aaaaa' ~~ /\w+/; try { EVAL 'say $¢'; } ⏏CATCH { $!.WHAT.say } #?␤ expe…»
Mouq r: 'aaaaa' ~~ /\w+/; try { EVAL 'say $¢'; }; CATCH { $!.WHAT.say } #?
camelia ( no output )
Mouq r: 'aaaaa' ~~ /\w+/; try { EVAL 'say $¢'; }; $!.WHAT.say
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«(X::Syntax::Perl5Var)␤»
Mouq ^^ that
r: constant \term:<$¢> = macro { $/.CURSOR }; 'aaaaa' ~~ /\w+/; say $¢ 23:08
camelia rakudo-moar 7c12aa: OUTPUT«===SORRY!===␤Cannot find method 'has_compile_time_value'␤»
..rakudo-parrot 7c12aa, rakudo-jvm 7c12aa: OUTPUT«===SORRY!===␤No such method 'has_compile_time_value' for invocant of type 'NQPMu'␤»
Mouq r: constant \term:<$¢> = macro { quasi { $/.CURSOR } }; 'aaaaa' ~~ /\w+/; say $¢
camelia rakudo-moar 7c12aa: OUTPUT«===SORRY!===␤Cannot find method 'has_compile_time_value'␤»
..rakudo-parrot 7c12aa, rakudo-jvm 7c12aa: OUTPUT«===SORRY!===␤No such method 'has_compile_time_value' for invocant of type 'NQPMu'␤»
lue $¢ isn't supposed to exist anymore(?) 23:10
Mouq r: macro term:<$¢> () { $/.Cursor }; "aaaaa" ~~ /\w+/; say $¢
lue: Oh?
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«No such method 'Cursor' for invocant of type 'Match'␤ in macro term:<$¢> at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
lue still wants the ¢ sigil for sheer -Ofun-ness, by the way.
Mouq r: macro term:<$¢> () { $/.CURSOR }; "aaaaa" ~~ /\w+/; say $¢ 23:11
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«Cursor.new()␤»
Mouq It was never removed from S05 23:12
lue I could be wrong on $¢, but I know the ¢ sigil is tragically gone.
Mouq And STD.pm6 uses it heavily IIRC… 23:13
But adding `macro term:<$¢> { $/.CURSOR }` somewhere in the setting should hypothetically fix that error 23:14
lue Hang on, S08 (Under "Context Deferral") mentions that Capture and Parcel are sufficient to avoid coercing captures into something else. Since \vars are Parcel (IIRC), does that mean \foo is the replacement for ¢foo ?
lue .ask TimToady if I read the last section of S08 correctly (and correctly understand that \foo operates on a Parcel basis), does that mean \foo is considerable as a replacement for ¢foo ? 23:18
yoleaux lue: I'll pass your message to TimToady.
Mouq There should definitely be some sort of documentation *just* on parameters 23:19
lue Mouq: That means I should finish my parameter intro/tutorial/thing sometime soon, then? :) [and possibly remove/condense the introductory stuff in Signature] 23:20
Mouq class S06 is Int { method addto (|args, $self: @x) { say(args); $self += [+] @x } }; S06.new.addto(5); 23:22
r: class S06 is Int { method addto (|args, $self: @x) { say(args); $self + [+] @x } }; S06.new.addto(5); 23:23
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Cannot put required parameter $self after variadic parameters␤at /tmp/tmpfile:1␤------> S06 is Int { method addto (|args, $self⏏[…»
Mouq n: class S06 is Int { method addto (|args, $self: @x) { say(args); $self + [+] @x } }; S06.new.addto(5);
camelia niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Only the first parameter may be invocant at /tmp/KRIVsK2col line 1:␤------> is Int { method addto (|args, $self: @x⏏) { say(args); $self + [+] @x } }; S06.n␤␤Unhandled exception: Illegal …»
Mouq lue: perlcabal.org/syn/S06.html#Parcel_binding 23:24
lue Mouq: try ($self: @x, |args)
Mouq lue: I know, I was just testing a line from S06 that I didn't think would work 23:25
lue Alright :)
Mouq lue: I'm not sure what ¢var was supposed to do, but between \var and |var I don't know what other Capture semantics you want 23:26
\var isn't so much Parcel as gimme *exactly* whatever that argument passed to me was, AIUI 23:27
lue Mouq: AFAIU, ¢foo was/is meant to hold Captures without, say, itemizing them, or any other sort of coercion $ and friends would do. Which is why I wonder if \foo is the suitable replacement.
Mouq lue: That's exactly what \foo does
lue (Or if we want something specifically Capturesque and bring back ¢foo. I want this option for increased Unicodeness ☺) 23:28
If (*if*) we brought back ¢foo, then perhaps \foo would be the ASCII alternative, instead of the weird $@foo (or was it @$foo) thing we had before. 23:29
Mouq p6: $#var 23:30
camelia rakudo-parrot 7c12aa, rakudo-jvm 7c12aa, rakudo-moar 7c12aa: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unsupported use of $#variable; in Perl 6 please use @variable.end␤at /tmp/tmpfile:1␤------> $#var⏏<EOL>␤»
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Unsupported use of $#var variable; in Perl 6 please use @var.end at /tmp/tmpfile line 1 (EOF):␤------> $#var⏏<EOL>␤␤Parse failed␤␤»
Mouq lue: And also yes, parameter intro/tutorial/thing would be awesome :) 23:40
lue :) 23:41