チューリング不完全

What are you afraid of? All you have to do is try.

第3回 スタートHaskell2に参加してきました

第3回 スタートHaskell2 - [PARTAKE]

f:id:aomori-ringo2:20120722181333j:plain
今回はがんばったぞ!


すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!


すごいH本、

  • 第6章 モジュール
  • 第7章 型や型クラスを自分で作ろう

をやりました。



第6章 モジュール(@aomoriringo)

わたし ^o^ です

6章は「モジュール」と銘打っておきながら、大半が標準モジュールの解説に当てられているので、ストーリーがつけにくくて苦労しました。
モジュールのインポート、エクスポートについては書いてあることをwebでいろいろ調べていくうちにいろんなことにぶちあたって、これまた発表にどこまで含めるか決めるのに苦労しました。
結果的に本には書いてない部分についてもちょっと話したのですが、そしたら@kazu_yamamotoさんあたりからためになる話も聞けたし、よかったんじゃないかと思います。
標準モジュールのあたりは随分ぐだぐだしてしまったと反省しているのですが、終わったあとに@seizans先生に慰めてもらったのでよいことにします。




発表の内容はスライドを見てもらうとして、その後の質疑応答では以下の様な話題がありました。

  • import Map (Map), import qualified Map hiding (Map) as Mのように、同じモジュールを複数個にわけてimportすることができる。
  • import Foo ()みたいな書き方をした場合、インスタンス宣言だけがimportされる。
  • Hoogleは標準モジュールだけしか見れないが、Hayoo!だと標準モジュール以外も検索できる。(Hoogleにもドキュメントを追加できるけど、超絶めんどくさいらしい)
  • HaskellのCharは4バイトで、実はとてもリッチなデータ構造らしい。
  • foldl'はスライド中では「foldlと違ってスタックオーバーフローしない」と書いたが、foldl'の第1引数の関数が遅延評価するときは、スタックオーバーフローになることがある。
  • module構文でエクスポートする関数は明記したほうが良い(推奨されている)。書くとGHCが書かない時よりも最適化をがんばってくれる。
  • Mainモジュールのみモジュール宣言の名前はファイル名と一致しなくてもよい。(Mainを複数個作って使い分けたりできる)
  • モジュール名を省略した場合はMainモジュールと見なされる。
  • import文が多いコードは分割してimport文を減らした方が良さげ。

第7章 型や型クラスを自分で作ろう(@a_hisameさん)

  from a-hisame


正直7章は自分の発表が終わったのでとにかく安心しきって、話半分に聞いていました(ごめんなさい!)。
この部分については事前に読んできていたので、確認に近かったです。それにしても7章はとてもボリュームがあって@a_hisameさんすごいなーと思っていました。
6章は7章に比べてボリューム少なめだから、30~40分で切り上げて7章で時間を使ってもらいたいな・・・と思っていたのに、思い切り1時間使ってしまいました(´・ω:;.:...





LT | 再帰の俯瞰図(@kazu_yamamotoさん)

http://mew.org/~kazu/material/2012-recursion.pdf

すごいH本だと4章が再帰の話なのですが、あれではちょっと不十分だろうということで、末尾再帰や末尾再帰で書けないパターンの再帰などについての話でした。
このあとの演習問題では再帰をひたすら実装する課題があったのですが、再帰自体は書けるけど末尾再帰で書こうとするととても難しくて大変でした・・・もっと精進しなければいけません。





感想

プレゼン作成作業が思ったより難航してしまって、前日は朝6時までモンスターエナジーを飲みつつ作っていました。(あとで@a_hisameさんと話したらとても似た状態だったらしい)
自身の発表内容は反省点の多いものでしたが、本を1章ずつ担当するというスタイルの勉強会の発表者として、最低限の仕事はできたかなと思っています。いろいろ勉強になったし、やってよかった。
発表者のみなさま、主催者、運営者のみなさま、俺、お疲れ様でした。次回もぜひ参加したいと思います。