Find file
Fetching contributors…
Cannot retrieve contributors at this time
70 lines (43 sloc) 2.15 KB
=BioPerl 6 (bioperl-experimental)=
The experimental classes in this directory are test implementations for Perl 6.
Most of these are similar to perl5-based BioPerl with simple Perl 6
translations. Hear thar be dragoons.
=Notes on Perl 6=
Perl 6 is a specification and thus can represent multiple implementations. We
recommend strictly following the Perl6 spec, defined in a series of synopses:
Note that much of the specification is still in flux or is unfinished; much of
this is due to changes from experimenting with several preliminary Perl 6
implementations, such as Pugs or Rakudo (Perl 6 on Parrot), and parsing Perl 6
using Larry Wall's grammar.
Once the Perl 6 specification is considered complete, BioPerl 6 would then be
expected to run on any Perl 6 implementation passing the official Perl 6 test
suite. Until then, we will recommend the latest Parrot build from subversion
along with the latest Rakudo checkout (currently packaged with Parrot but soon
to be located in a separate repository).
=Chris's Notes=
==Interfaces vs Classes==
In general, I am defining strict interfaces as roles and interface
implementations as classes. This is due to several interfaces actually defining
methods that are common to all implementations.
Defining interfaces as roles has a specific advantage, as roles can be mixed-in
per instance at runtime or class-wide at compile time:
# compile-time
class Bio::PrimarySeq is Bio::Root::Root does Bio::RangeI {
# runtime mixin
my $seq =;
my $seq does Bio::AnnotatableI;
==Class Methods==
Multiple dispatch. Named/positional/required/optional/slurpy/invocant
parameters. Type checking. Variable return contexts (scalar, list, hash, etc.).
==Named parameters==
Named parameters/arguments are now part of the Perl6 specification and can be
passed using comma notation or using Pairs:
my $seqobj = => $rawseq, description => $desc, :alphabet<dna>);
Note that this diverges from perl5-based BioPerl conventions, where named arguments are
prefixed with a dash ('-') character.
==Class Methods==
None yet (soon to be added)