週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

今回のICFPCで注目を浴びた、HaskellのライブラリにあるData.Sequence。これで本当にDNA2RNAの高速な実装ができるのでしょうか。とりあえず実装。

テストDNAで実験した後、EndoのDNAを食わせてみました。すると、

Stack space overflow: current size 8388608 bytes.
Use `+RTS -Ksize' to increase it.
などというエラーメッセージが出て止まってしまいました。 スタック 8 MB を食い尽くしたそうです。 指示通りにスタックサイズを64, 80, 256 MBなどと拡張してみるものの、まったくエラーが消えません。

仕方ないので`seq`を駆使してeager評価。やっと何とかなるようになりました。まだ途中で止まってしまうので評価にバグがあるはずですが、手元には正しいdna2rnaもあるのでなんとかなりそうです。

Data.Sequenceのほかにも、eager評価するというヒントもウェブ上で仕入れたもので、今まで全然使ったことがありませんでした。まだhaskell experienceが足りないことを実感。

ちなみに、Sequenceのインターフェスは普通で、特に苦痛もなくプログラムがかけました。コードのほとんどは次のviewl インターフェスによるパターンマッチです。

data ViewL a
 = EmptyL
 | (:<) a (Seq a)
viewl :: Seq a -> ViewL a
リストのパターンマッチと変わりません。非常に楽です。
スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/199-9c7a0926
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。