Rakudo * perl6のインストール

markov sequenceのデモを紹介したいが、まず最新の環境がないといけないので、インストールのおさらいから。


$ w3m https://github.com/rakudo/star/downloads/
# 注意: むやみにコピーせず上のページで最新のものを選んでインストールしましょう
$ wget --no-check-certificate https://github.com/downloads/rakudo/star/rakudo-star-2010.11.tar.gz
$ tar xzf rakudo-star-2010.11.tar.gz
$ cd rakudo-star-2010.11/
$ perl Configure.pl -gen-parrot
$ make
$ make install
$ install/bin/perl6

Perl6にはCPANに相当するモジュール管理ネットワークがまだない。各貢献者のgithubのrepositoryを登録してそこからモジュールをダウンロードしてインストールするneutroというコマンドがある。ここではmarkov sequenceのデモに必要なList::Utilsをインストールしてみる。

まずはneutro自体のインストール


$ git clone git://github.com/tadzik/neutro.git
$ cd neutro
$ PERL6LIB=tmplib bin/neutro .
$ PATH=${PATH}:~/src/rakudo-star-2010.11/install/bin/
$ which perl6
$ PERL6LIB=tmplib bin/neutro .

jsonをインストールしてみる


$ bin/neutro json

モジュールのリスト

これはupdateというモジュールをインストールするんじゃなくて、モジュールリストのキャッシュを更新しているんだと思う。コマンドとモジュール名のネームスペースが一緒になっていてまぎらわしい。


$ bin/neutro update
$ bin/neutro list | grep -i list

List::Utilsをインストール


$ bin/neutro List-Utils
$ perl6
> use List::Utils;
_block78
> sliding-window((1,2 ... 10), 3).perl
([1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10])

ライブラリは~/.perl6/下に入る


$ find /home/tengu/.perl6/ | grep List
/home/tengu/.perl6/lib/List
/home/tengu/.perl6/lib/List/Utils.pir
/home/tengu/.perl6/lib/List/Utils.pm

引数のタイプによって分けて関数を定義をするmultiple dispatchが見れて面白い。http://www.programmersheaven.com/2/Perl6-FAQ-Multi#what


~/.perl6/lib/JSON/Tiny.pm