Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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)
- Host: GitHub
- URL: https://github.com/cjfields/bioperl6
- Owner: cjfields
- License: artistic-2.0
- Created: 2009-02-11T21:04:55.000Z (almost 16 years ago)
- Default Branch: master
- Last Pushed: 2018-09-30T18:57:49.000Z (over 6 years ago)
- Last Synced: 2024-09-30T17:37:20.681Z (3 months ago)
- Topics: bio, bioinformatics, bioperl, perl6, raku, rakudo
- Language: Perl 6
- Homepage: http://bioperl.org
- Size: 582 KB
- Stars: 48
- Watchers: 9
- Forks: 13
- Open Issues: 6
-
Metadata Files:
- Readme: README.FIRST
- License: LICENSE
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)