この記事は
Imaizumi Lab Advent Calendar に寄せた記事である。
Haskell との邂逅
2006年のわたしは Haskell というプログラミング言語に憧れをもっていた。
ところが、日本ではあまり話題になっておらず、Haskell の技術関連書籍はすべて洋書。
そんななか、今泉研究室は研究で英語の論文を読解できるようになるための訓練も兼ね、ゼミで洋書を輪読するという話を聞いた。
その日以来、研究室では周囲を言いくるめ、なんとかしてゼミで Haskell の洋書を輪読する方角へと誘導する私がいたのである…
そして、ゼミでは Haskell を使って関数型プログラミングを理解する Introduction To Functional Programming Using Haskell を輪読する流れにすることに成功したのであった!
当時の Haskell 事情
日本ではあまり話題になっておらず、というだけではイメージがしにくいと思われるので当時の Haskell 事情を簡単に列挙しておく。
- Haskell の最大派閥となる処理系は GHC ではなく hugs 98
- hugs 98 の仕様がコロコロ変わっており、書籍のサンプルコードが修正なしでは動かない
- hugs 98 のキラーアプリは Audrey Tang が実装した Perl 6 の処理系となる pugs くらいしかない
わりと積極的にやりたいことをやろう!と言えばやらせてもらえたが、言わなければ放置される研究室だったと当時を振り返る昨今である。
Chapter 12: An automatic calculator
Functional Programming Using Haskell のなかでも最難関の章を担当したときの資料とコードがでてきた。
An automatic calculator という証明系の処理系を作成する章である。難易度に容赦がない。
多くはすでに記憶にないのでコードと実行結果のみを示しておく。
書籍でこられのコードについて解説されていたという分量にも驚きだが、いくつかの自明なコードについては記述さえなかったと記憶している。
断片的にそのままの写経では動かなかったため、きちんと証明が動いたときにはうれしかった記憶がある。
そのうれしさにかまけて、後日ラムダ計算の簡約器を作ることになったのだが、それはまた別の話…
所感
短いが、今日の記事は以上である。上記の解説をまとめたスライドとレジュメを作成し 2006年3月20日に研究室で発表を行ったという記録が残っていた。
また、その他にも Functional Programming Using Haskell で担当した章はいくつかあり、すべてについて hugs 98 での動作を確認している。
くどいようだが書籍の写経そのままではコードは動作せず、動かせていた学生は自分だけだったと記憶している。
もっと詳しく知りたいなどのことがあればさらに解説を加えたり、別の章について言及するかもしれない。
記憶がある部分についてでご容赦いただきたいが…
輪読の様子
なお、難しいことが英語で書かれていたのでゼミの発表内容の多くは壊滅的だったもよう。🙈
0 件のコメント:
コメントを投稿