Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cjfields/bioperl6

reimplementation of BioPerl classes in Raku (e.g. the language formerly known as Perl6)
https://github.com/cjfields/bioperl6

bio bioinformatics bioperl perl6 raku rakudo

Last synced: 3 months ago
JSON representation

reimplementation of BioPerl classes in Raku (e.g. the language formerly known as Perl6)

Awesome Lists containing this project

README

        

=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:

http://design.perl6.org/

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 STD.pm 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 = Bio.PrimarySeq.new();
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 = Bio::PrimarySeq.new(seq => $rawseq, description => $desc, :alphabet);

Note that this diverges from perl5-based BioPerl conventions, where named arguments are
prefixed with a dash ('-') character.

==Getter/Setters==

==Class Methods==

==Tests==

None yet (soon to be added)