[perl #62970] Null PMC access when calling nonexistent sub in package
On Sun Feb 01 09:27:58 2009, masak wrote: > rakudo: package A {}; A::method_that_does_not_exist > rakudo 36249: OUTPUT«Null PMC access in invoke() [...] > * masak reports rakudobug Patch is here http://github.com/bacek/rakudo/commit/acdb19ee3ac09b390896c0f8f1fa32bcf7b7f9ae -- Bacek
[perl #63228] [PATCH] Support using $? variables and implement $?PROGRAM
# New Ticket Created by Chris Dolan # Please include the string: [perl #63228] # in the subject line of all future correspondence about this issue. # http://rt.perl.org/rt3/Ticket/Display.html?id=63228 > This patch adds support for '?' twigil variables to actions.pm and declares the $?PROGRAM read-only global variable in !UNIT_START. The value stored in that variable is first argument to Rakudo (e.g. 'prog.pl' or '-e') which previously was dropped on the floor when creating @*ARGS. git pull git://github.com/chrisdolan/rakudo.git program-name t/spec/S02-magicals/progname.t updated to test this in r25324 0001-Support-using-variables-and-implement-PROGRAM.patch Description: Binary data
[perl #63226] [BUG] globals in !UNIT_START set up too late, or statements executed too early
# New Ticket Created by Chris Dolan # Please include the string: [perl #63226] # in the subject line of all future correspondence about this issue. # http://rt.perl.org/rt3/Ticket/Display.html?id=63226 > If you include statements in the body of a package, class, etc. declaration, those are executed at :load time which happens before :main. So, globals like @*ARGS which are set up in ! UNIT_START from :main are not yet established. All three of the following examples should have the same results, but the middle one is wrong. Either setup of globals needs to happen before :load, or the statements in the package, class, etc. need to be moved out of :load methods. I think the latter is better, since :load methods are like BEGIN blocks. ../../parrot perl6.pbc -e 'say "(", @*ARGS, ")";' f g h (fgh) ../../parrot perl6.pbc -e 'package Foo { say "(", @*ARGS, ")"; }' f g h () ../../parrot perl6.pbc -e 'package Foo { sub run() { say "(", @*ARGS, ")"; } }; Foo::run()' f g h (fgh)
[perl #61836] Rakudo cannot take the minimum of undef
On Mon Jan 05 11:53:29 2009, moritz wrote: > Carl MXXsak (via RT) wrote: > > # New Ticket Created by "Carl Mäsak" > > # Please include the string: [perl #61836] > > # in the subject line of all future correspondence about this issue. > > # http://rt.perl.org/rt3/Ticket/Display.html?id=61836 > > > > > > > Rakudo r34628: > > > > $ perl6 -e 'undef min 2' > > Multiple Dispatch: No suitable candidate found for 'cmp', with > signature 'PP->I' > > [...] > > Added tests to t/spec/S03-operators/misc.t (but I don't know what the > result should be, I just tested with lives_ok). > > Cheers, > Moritz > Part of this bug fixed in #61840. Part of this bug related to Parrot absence of VTABLE_cmp for "undef". Attached patch adds VTABLE_cmp for Undef in Parrot. Other approach is to add .sub 'cmp' :multi('Failure',_) to Rakudo. I can't judge with one is better. -- Bacek commit 948c9412c390b86cf68eaf5cc76525e050a1e100 Author: Vasily Chekalkin Date: Sat Feb 14 18:24:13 2009 +1100 Implement Undef.cmp diff --git a/src/pmc/undef.pmc b/src/pmc/undef.pmc index ed949a0..0bde497 100644 --- a/src/pmc/undef.pmc +++ b/src/pmc/undef.pmc @@ -245,6 +245,25 @@ Returns 1 if the C<*value> is an Undef PMC, 0 otherwise. MULTI INTVAL is_equal(DEFAULT value) { return 0; } + +/* + +=item C + +Returns 1 if the C<*value> is an Undef PMC, otherwise delegate comparition to value. + +=cut + +*/ + +MULTI INTVAL cmp(Undef value) { +return 1; +} + +MULTI INTVAL cmp(DEFAULT value) { +return VTABLE_cmp(INTERP, value, SELF); +} + } /*
[perl #63232] Rakudo doesn't Z together mixes of elements and ranges properly
# New Ticket Created by "Carl Mäsak" # Please include the string: [perl #63232] # in the subject line of all future correspondence about this issue. # http://rt.perl.org/rt3/Ticket/Display.html?id=63232 > rakudo: for "a".."c" Z ("?", "a".."b") -> $x1, $x2 { say $x1, $x2 } rakudo a0a390: OUTPUT«a?baStopIteration [...] jnthn: does this look right to you? pugs: for "a".."c" Z ("?", "a".."b") -> $x1, $x2 { say $x1, $x2 } pugs: OUTPUT«a?bacb» * masak submits rakudobug looks right to me good enough for me :) shouldn't need the parens, either right. just making sure. pugs: for "a".."c" Z "?", "a".."b" -> $x1, $x2 { say $x1, $x2 } pugs: OUTPUT«a?bacb» rakudo: say "a".."c" Z "?", "a".."b"; rakudo a0a390: OUTPUT«a?bab» >From the last example, we see that there's a 'c' missing from the result of the Z.
Re: [perl #51340] [RESOLVED] [BUG] compiler detection failure
Hi, James Keenan via RT schreef: According to our records, your request regarding "[BUG] compiler detection failure" has been resolved. If you have any further questions or concerns, please respond to this message. For other topics, please create a new ticket. http://rt.perl.org/rt3/Ticket/Display.html?id=51340 > I see. Well, it's a matter of how you view things, isn't it? You could see the history of this report as someone doing his utmost to correspond about a problem he doesn't see himself. Or you could see it as the report having been handled by someone who didn't have the matching hardware and asked for information that was already in the message. I have no idea whether I saw his message at the time, nor what kind of reply I sent if I did see it. But I downloaded parrot-0.9.0 to test, and when after untarring I perl Configure.pl, I get the following result: - Start of include: - Parrot Version 0.9.0 Configure 2.0 Copyright (C) 2001-2008, The Perl Foundation. Hello, I'm Configure. My job is to poke and prod your system to figure out how to build Parrot. The process is completely automated, unless you passed in the `--ask' flag on the command line, in which case I'll prompt you for a few pieces of info. Since you're running this program, you obviously have Perl 5--I'll be pulling some defaults from its configuration. init::manifest - Check MANIFEST.done. init::defaults - Set Configure's default values.done. init::install - Set up installation paths..done. init::hints - Load platform and local hints filesdone. init::headers - Find header files distributed with Parrot..done. inter::progs -Determine what C compiler and linker to use...Compilation failed with 'cc' - End of include. - And, yes, that means it failed at that time. And no, I do not have more output about other failures, for if I had had more output it would be there: This is not part of the result, it's all of it. The only thing I left out is that my shell will once again print a command prompt once this has finished. I haven't checked whether the documentation still speaks about a myconfig, but in any case, I don't see it being created. Lacking such feedback, I instead return to you the revealing results of using perl Configure.pl --verbose-step=inter::progs - Start of include: - Parrot Version 0.9.0 Configure 2.0 Copyright (C) 2001-2008, The Perl Foundation. Hello, I'm Configure. My job is to poke and prod your system to figure out how to build Parrot. The process is completely automated, unless you passed in the `--ask' flag on the command line, in which case I'll prompt you for a few pieces of info. Since you're running this program, you obviously have Perl 5--I'll be pulling some defaults from its configuration. init::manifest - Check MANIFEST.done. init::defaults - Set Configure's default values.done. init::install - Set up installation paths..done. init::hints - Load platform and local hints filesdone. init::headers - Find header files distributed with Parrot..done. inter::progs -Determine what C compiler and linker to use... ccflags: -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 cc -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I./include -c test_7926.c cc -L/usr/local/lib -Wl,-E test_7926.o -o test_7926 -ldl -lm -lpthread -lcrypt /usr/bin/ld: crt1.o: No such file: No such file or directory collect2: ld gaf exit-status 1 terug Compilation failed with 'cc' - End of include. - Same notes as before. I hope it's of any help. BFN -- Peter Hans van den Muijzenberg Sneek p...@home.nl
[perl #62168] .comb doesn't take zero arguments in Rakudo
On Sat Jan 10 09:42:10 2009, masak wrote: > rakudo: " a b c".comb.perl.say > rakudo 35345: OUTPUT«too few arguments passed (1) - 4 params > expected [...] > rakudo: " a b c".comb(" ").perl.say > rakudo 35345: OUTPUT«invoke() not implemented in class > 'Perl6Str' [...] > rakudo: " a b c".comb(/\S+/).perl.say > rakudo 35345: OUTPUT«["a", "b", "c"]» > should default to \S+ > * masak submits rakudobug * bacek pushes fix to github. http://github.com/bacek/rakudo/commit/086f639db51f0136fd893ab70dac2ce6eeb76a8b -- Bacek.
[perl #63236] 0 but Bool::True seems to put rakudo in an infinite loop
# New Ticket Created by fREW Schmidt # Please include the string: [perl #63236] # in the subject line of all future correspondence about this issue. # http://rt.perl.org/rt3/Ticket/Display.html?id=63236 >
[perl #61732] Null PMC access when catching 'fail' using a CATCH block in Rakudo
On Fri Dec 26 05:05:27 2008, masak wrote: > rakudo: sub foo { fail }; sub bar { foo(); 2; CATCH { 1; } }; > say bar(); > rakudo 34376: OUTPUT«Null PMC access in isa() [...] > meh > that's strange. > that one didn't involve any 'whan' clause. > no smartmatching. > I might have misdiagnosed the bug in my summary, then. > * masak corrects Actual summary should be "CATCH blocks eats return values from subs". $ ../../parrot perl6.pbc -e 'sub bar { 1; CATCH { } }; say bar()' Null PMC access in isa() -- Bacek.
[perl #61480] Rakudo shouldn't die on unrecognized initializers to constructors
On Thu Dec 18 09:52:52 2008, masak wrote: > rakudo: class Base { has $.foo }; class Deriving is Base {}; > say Deriving.new( :foo(5) ).foo() > rakudo 34068: OUTPUT[You passed an initialization parameter > that does not have a matching attribute. [...] > and in general, it's not an error to pass unrecognized > initializers > TimToady: oh! > since each class will assume it was intended for a > different class > _two_ rakudobugs. :) > * masak files > and we want to allow scope for people splitting classes > without having to redo initializers > refactoring++ It works in recent rakudo: $ ../../parrot perl6.pbc -e 'class Base { has $.foo }; class Deriving is Base {}; say Deriving.new( :foo(5) ).foo()' 5 So ticket can be closed. -- Bacek
[perl #62772] Rakudo dies on ord('')
On Mon Jan 26 06:45:24 2009, masak wrote: > rakudo: ord(""); say "Alive" > rakudo 36030: OUTPUT«Cannot get character of empty string [...] > should Rakudo really die here? > * masak thinks not > I think it should fail() > <[particle]> return a Failure > <[particle]> see what perl 5 does > good. we agree. > * masak submits rakudobug Fix for this issue is there http://github.com/bacek/rakudo/commit/206c219d5fc495d1b171552650a29e8f0901e2c8 (It doesn't work ATM because of "fail" implementation bug) -- Bacek
[perl #61840] [TODO] min= and max= operators
On Mon Jan 05 12:00:25 2009, moritz wrote: > Carl MXXsak (via RT) wrote: > > > > $ perl6 -e 'my $a = 5; $a min= 2; say $a' > > get_iter() not implemented in class 'Integer' > > [...] > > Added tests to t/spec/S03-operators/assign.t (which grows to an > alarming > size...) Rakudo fix available at http://github.com/bacek/rakudo/commit/669a891036b186c8ea886c2dea000c8c5a3e47ee Spectest fixed in r25330 -- Bacek
[perl #63230] [TODO] Implement renaming of named parameters in Rakudo
# New Ticket Created by "Carl Mäsak" # Please include the string: [perl #63230] # in the subject line of all future correspondence about this issue. # http://rt.perl.org/rt3/Ticket/Display.html?id=63230 > $ perl6 -e 'sub formalize($text, :case($case), :justify($justify)) {...}' Unable to parse multisig; couldn't find final ')' at line 1, near ":case($cas" [...] Example straight out of S06:721.
Implementing $?LINE and other S02 compile-time vars
I've been considering how to inject compile-time values ($?VAR) into Rakudo. I was thinking about how to implement $?LINE and came up with two ways to do it: on the fly and post processing. On the fly would require some significant work in PGE, I think, to keep the line count correct in the face of backtracking. However, this may already be necessary down the road for proper line numbers in error messages for code mapped from an HLL to a lower level syntax. Post-processing on the other hand would require me to keep an actions.pm 'our' variable of whether we found a $?LINE or not. Only if so, then in TOP we walk the parse tree counting newlines and replacing PAST::Var(:name('$?LINE')) with PAST::Val(:value ($linecount)). That way, we'd encounter no performance hit if there were no line number requests. The former seems like the right general solution for the long term, but the latter seems doable today. Thoughts? Other compile-time variables like $?OS and $?FILE seem easier to implement because they require a lot less context. I think $?OS is just the NQP equivalent of the following code: use cfg; my %cfg = _config(); make PAST::Val(:value(%cfg)); $?PARSER should be simply the grammar class name. $?LANG should always be 'Perl6', unless explicitly overridden with :lang. $?VM and $?KVM should just be 'Parrot', at present. Should $?PERL be 'Rakudo' or '/path/to/perl6.pbc'? I think $?GRAMMAR, $?CLASS, $?ROLE, $?MODULE and $?PACKAGE should be easy because actions.pm already tracks those values in @?PKGDECL[*-1] (or something like that). @?GRAMMAR, @?CLASS, @?ROLE, @? MODULE, and @?PACKAGE should be similar operations on @?PKGDECL. Thoughts? Chris
Re: r25328 - docs/Perl6/Spec
On Sat, 14 Feb 2009, Leon Timmermans wrote: On Sat, Feb 14, 2009 at 6:38 AM, wrote: +=head2 IO::Openable + +This role implies that the object can be connected to, or listened on. + +=over 4 + +=item open + + method Bool open(); + +Attempts to open the handle. Depending on the implementation, this could be an open() +call, a connect(), a listen(), or something similar. + +=back + I'm not sure if I really hate or love this. I'm not quite convinced if the use of it anyway. I like it if we can make it work, but it may be too nonsensical to get anything useful out of it. See my discussion below. Why should this do POSIX? What about non-POSIX operating systems? This was an example of me not thinking. Basically, it was because it was easier than writing IO::Readable IO::Writeable. I'll ignore the question as it crops up throughout; someone feel free to replace POSIX with something else. I haven't written a program that was intended to be run on anything other than Unix or Embedded in years, so I'm quite pleased to get some input from non-POSIX types. I'm happy (once we sort out what we're doing) for others to edit the thing, now that I've gone and restructured it all :). As a rakudo user, I'm also wondering whether we shouldn't be referring more to the Parrot IO stuff, but that may just be me. http://www.parrotcode.org/docs/ops/io.html +=item syscall + That functions should be well hidden Question -- is there a reason this is in IO, instead of eg. S29? If not, I'll move it there. +=item sysopen + I vote for sysopen (and all other sys functions) to be wiped out of existence. Disagree -- I think these belong in IO::Unbuffered. Maybe we could make that optional, though :). +=head1 Classes + +=head2 IO::File + +This does file input and output. + +class IO::File does IO::POSIX does IO::Closeable does IO::Openable { +... +} + +=over + +=item init + + method init(String $filename, $options?); + method init(Int $fd); + + # Read + $fobj = new IO::File($filename); + + # Write + $fobj = new IO::File($filename, :w); + + # Read using file descriptor + $fobj = new IO::File($fd); + +Associate an IO object with an already-open file descriptor, +presumably passed in from the parent process. + +=back Why is that function called init, and not open? That's rather non-intuitive. Hmm. I still haven't gotten the hang of Perl 6. What I want is for the name of this function to be the one that automatically gets called on object creation. Then you do something like this: $fobj = new IO::File($filename); # Creates handle $fobj.open(); # opens file This should do IO::Seekable and (to be written) IO::Stattable. Should it? I'm just thinking about the interactions between IO::File and IO::FileSystem. Maybe I'm just wondering about the name :). I'd argue that maybe class IO::File ... { has IO::FileSystemEntry $FSEntry; ... } ...and that you could then do: $fobj = new IO::File($filename); if($fobj.FSEntry.ModificationTime > '2008') { print "Modified this year\n"; } $fobj.open() ... In other words, I'm arguing that maybe we need a separate class for the calls that do stuff to the "outside" of a file, verses the calls that do stuff to the "inside" of a file. But maybe that's what roles are for. I'm undecided. Thoughts, anyone? +=head2 IO::Socket::INET + +class IO::Socket::INET does IO::Socket { +... +} + +=over + +=item init + + method Bool init($RemoteHost, $RemotePort, $LocalHost?, $LocalPort?); + +=item open($Listen?); + +If $Listen is 0, it does a connect(). If $Listen is 1, it does a connect() and a +listen(). If $Listen is 2, it does a listen(), but no connect(). + I *really* hate that interface, and I don't see how it covers an accepting socket. Ok, I agree there's room for improvement, but I'm not 100% sure I agree on the details. IMO there should be two calls At least 3 :). method IO connect($RemoteHost, $RemotePort, *%options) where *%options can contain things like the local address, non-blockingness, etc... I'd break this into two; one like the init call above that creates the object, and has the local and remote host/port passed in, but doesn't do any calls. Maybe something like this example for a client: $socket = new IO::Socket::INET($RemoteHost, $RemotePort, OtherOption => 1); $socket.Blockingness = 1; # Ok, maybe not blockingness, but you know what I mean $socket.OtherOption = 0; # Changed our mind from what we said in the class creation call $socket.open(); # This could be called "connect", maybe I'm kinda keen to call the function open() instead of connect(), so that things are more consistent across the whole IO interface, but I agree that attaching the listen stuff to that call was a bad idea. For the server, I'd suggest an additional role, IO::Listening, that has both listen() and accept() calls on it. Would that work for you? Or is that essentially exact
r25348 - docs/Perl6/Spec
Author: wayland Date: 2009-02-16 04:50:39 +0100 (Mon, 16 Feb 2009) New Revision: 25348 Modified: docs/Perl6/Spec/S16-io.pod Log: S16: Changed my $| stupidity to select() Modified: docs/Perl6/Spec/S16-io.pod === --- docs/Perl6/Spec/S16-io.pod 2009-02-16 03:02:46 UTC (rev 25347) +++ docs/Perl6/Spec/S16-io.pod 2009-02-16 03:50:39 UTC (rev 25348) @@ -30,7 +30,8 @@ The I ones are our old familiar friends (with new names). Standard input is C<$*IN>, standard output is C<$*OUT>, and standard error is C<$*ERR>. -However, the I ones replace the Perl 5 $| variable with three new variables. +However, the I ones replace the single handle set by the Perl 5 select() call +with with three new variables. At the start of the program, the default handles (C<$*DEFIN>, C<$*DEFOUT>, and C<$*DEFERR>) are aliased to the standard handles, but may be temporarily or permanently rebound to some other file handle.
Re: r25329 - docs/Perl6/Spec
On Sat, 14 Feb 2009, Mark J. Reed wrote: That mention of $| is confusing, since $| has nothing to do with changing where output goes in p5. All it does is cause output to be autoflushed.. The Perl5 analog to $DEFOUT would seem to be the select() function... Agreed, fixed. Btw, thanks to everyone for your patience with me; I've used almost all these calls at one time or another, but not much in recent years, so I've made some obvious mistakes. Thanks. :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y- -END GEEK CODE BLOCK-
Re: r25328 - docs/Perl6/Spec
On 2009 Feb 15, at 22:50, Timothy S. Nelson wrote: On Sat, 14 Feb 2009, Leon Timmermans wrote: +=item sysopen I vote for sysopen (and all other sys functions) to be wiped out of existence. Disagree -- I think these belong in IO::Unbuffered. Maybe we could make that optional, though I think sysopen etc. should go away, instead allowing open() to specify unbuffered. In general anything that exposes a system file descriptor is an abstraction violation (unless in a module which is intended to do so; IO::Posix?). The original intent behind sysopen() was to allow system file descriptor mode flags to be used; this was a workaround for perl5's open being insufficiently flexible. -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allb...@kf8nh.com system administrator [openafs,heimdal,too many hats] allb...@ece.cmu.edu electrical and computer engineering, carnegie mellon universityKF8NH PGP.sig Description: This is a digitally signed message part
Re: r25328 - docs/Perl6/Spec
On Sun, 15 Feb 2009, Brandon S. Allbery KF8NH wrote: On 2009 Feb 15, at 22:50, Timothy S. Nelson wrote: On Sat, 14 Feb 2009, Leon Timmermans wrote: +=item sysopen I vote for sysopen (and all other sys functions) to be wiped out of existence. Disagree -- I think these belong in IO::Unbuffered. Maybe we could make that optional, though I think sysopen etc. should go away, instead allowing open() to specify unbuffered. In general anything that exposes a system file descriptor is an abstraction violation (unless in a module which is intended to do so; IO::Posix?). I'm not convinced about it being an option to open, but if you said instead that it should be an attribute on a role (IO::Openable?), then I'd happily agree. The original intent behind sysopen() was to allow system file descriptor mode flags to be used; this was a workaround for perl5's open being insufficiently flexible. That's good to know; thanks. :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y- -END GEEK CODE BLOCK-
Call-and-response grammars?
Ok, I'm wondering about how a protocol such as ACAP could be implemented as a grammar. For those not familiar with ACAP, it bears some resemblance to IMAP (and a more distant resemblance to POP3 and SMTP), with the difference that the server can send information to the client unsolicited (think of something like "you have new mail", without it being asked). The first thing I'm wondering is how to go about writing a call-and-response grammar. Take a basic SMTP transaction as an example. You'd send something like a HELO command, and get a response. Then "MAIL FROM", "RCPT TO", "DATA", and the like, each with an appropriate response. Is there some way to write a single grammar that encapsulates the whole thing, a grammar that could be used one way by a client, and another way by a server? I guess my real question is, how should grammars of protocols be done? :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y- -END GEEK CODE BLOCK-
Periodic Table of the Operators, version 3
Friends - Just a note to let you know that the third version of the Periodic Table of the Operators is complete: http://www.ozonehouse.com/mark/periodic/ Thanks again to all those who helped me dive deep into perl6. - MtnViewMark Mark Lentczner http://www.ozonehouse.com/mark/ m...@glyphic.com
S17-concurrency question
Hi. I have a question for the S17-concurrency people. Say I wanted to write a POP3 server. I want to receive a username and password from the client. I want things to be interruptable during this, but it's also impossible to sensibly roll things back like they were before the connection was opened. Is this possible with the concurrency model you specified? I've been looking at POE ( http://search.cpan.org/~rcaputo/POE-1.003/ ) and have observed that it contains its own simulated concurrency (Sessions, he calls them), and is, it seems to me, well-designed for doing external data transfer as in POP3. He uses an event-driven model. Anyway, I'll be interested to hear about this. :) - | Name: Tim Nelson | Because the Creator is,| | E-mail: wayl...@wayland.id.au| I am | - BEGIN GEEK CODE BLOCK Version 3.12 GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y- -END GEEK CODE BLOCK-
[perl #61764] [TODO] Implement ff and fff
On Sat Dec 27 09:50:09 2008, masak wrote: > Implement the ff and fff infix operators, as described in S03:2345. Ok, first cut of flipflops implemented in http://github.com/bacek/rakudo/commit/08fffbc6d62ab72e0dd9f80098275afce0f32fbf and http://github.com/bacek/rakudo/commit/7dfa1b13819bcb3d3d3f515fd82de43934666f92 It's not perfect, but works for simple cases. S03-operators/flip-flop.t updated and commited with help of TimToady++ -- Bacek