Thursday, 11 December 2008

perl6 rocks =)

Look how one can work out the reverse complement of a DNA sequence in perl6:

use v6;

package DNA::Utils;

my %complement_for = {
A => 'T',
C => 'G',
G => 'C',
T => 'A',
};

# Could add a restriction or coercion on $dna
# so that only valid DNA strings are allowed.
sub reverse_complement(Str $dna) is export {
return $dna.split('').reverse().map({ %complement_for{ $_.uc } }).join('');
}

This code actually compiles and runs =)