makopi23のブログ

makopi23が日々の生活で感じたことを気ままに綴るブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「第7回 スタートHaskell2(最終回)」に参加しました

2013/1/20(日) 「第7回 スタートHaskell2(最終回)」に参加してきました。

Partake(告知サイト)
http://partake.in/events/60b9a21c-8282-4abe-8820-099d65f69a62

togetter
http://togetter.com/li/442212



以下の書籍をテキストとした、セミナー形式と演習形式を組み合わせた勉強会なのです。

すごいHaskellたのしく学ぼう!すごいHaskellたのしく学ぼう!
(2012/09/21)
Miran Lipovaca

商品詳細を見る

会場はいつもの IIJ 大会議室 (17階)です。参加者は50人弱でしょうか。
今回は最終回ということで、モナドの残り(14章)とZipper(15章)が範囲です。
予習は不完全な状態でしたが、可能な限り目を通し、写経してから参加しました。



■14章「もうちょっとだけモナド」 @ffu_ さん


以下、メモ。
  • 差分リストを使うと右結合になるのはウソ。
  • 関数結合はオーダー1。詳細は@kazu_yamamoto さんの資料参照。
■Blaze Builder のヒミツ
http://mew.org/~kazu/material/2012-builder.pdf
  • Blaze BuilderがHaskellでは一般的になり、ByteStringにもBlaze Builderが付いている
  • 今は差分リストではなくBlaze Builderが使われている。
  • 最近は差分リストを学ぶのは意味が少なくなってきている。
  • ByteStringはテキストはビルダーが付いているのでそれを使いましょう。
  • 差分リストの名前はprologに由来する。「差分」という語からのイメージとは異なる。
  • 不変の初期値を与えて実行したいときにReader Monadを使う
  • 圏論では、Monadはjoinで作られている。でもHaskellではjoinは使わなくてもいける。
  • joinをするときにはバインドをすべき。
  • 関数名にMつけてhoogle探すと、Monad対応版の関数が見つかったりする
  • @kazu_yamamoto さんのブログ「例題で比較する状態系のモナド」
http://d.hatena.ne.jp/kazu-yamamoto/20090826/1251258560
  • 関数idは、最初は何に使うかわからない。foldで関数合成する際の初期値に使える。
  • Maybeモナドは途中でescapeするためのモナド。Stateとは別に考えた方が良い。



■15章「Zipper」 @shokos さん
Start haskell zipper from Shoko Sasaki

  • 木構造やリスト、ファイルシステムをHaskellで効率的に扱うにはどうすればよいか、のお話。
  • 個人的に15章は写経する時間がほとんど取れず、本に目を通したくらいだったので消化不良気味です。無念。。。


■LT1「Haskellで作るOS: Metasepi」&「簡約!λカ娘(4)の紹介」

@master_q_hentai さん
  • 今日もあいかわらず、面白いネタとトークが繰り広げられました。
  • Haskellの型システムの恩恵を活かしたOSを、Haskellで作る!とのことで、斬新すぎる。
http://metasepi.masterq.net/
  • あと「簡約!λカ娘(4)」の頒布会と、中身の紹介もありました。
http://metasepi.masterq.net/posts/2012-12-22-jhc.html
  • この多彩な才能はマジ羨ましい。。。



■演習タイム
15時から30分ほど休憩タイム。そのあとは17時過ぎまで演習タイムです。

演習問題
http://wiki.haskell.jp/Workshop/StartHaskell2/exercise14


問題「Writerモナドを使ってみよう」 解答例: @igrep さん


問題「Stateモナドを使ってみよう」 解答例: @apstndb さん


問題「Readerモナドを使ってみよう」 解答例: @apstndb さん


ダメだ、ぜんぜんスラスラ解けない。。。
と、17時くらいまで悩んでました。17時過ぎからはLTタイムです。

■LT2「Hakyllとlivereloadの組み合わせによるブログ更新」 @kei_q さん
  • Hakyllという、Haskellによる静的ページ生成ツールを使ってブログを自動更新するお話。
  • エディタで記事を書いて保存すると、自動的に検知してブラウザが更新され、最新のブログが表示されるように改良したとのこと。
  • 毎日1つ、HaskellのTipsを書く事を今年の目標にしている。
http://keqh.net/cookbook/
  • ブログ自動更新を実現するため、ローカルでWeb Socketを使っている。この発想がおもしろい。


■LT3「永続スプレー木と永続スプレーヒープ」  @kazu_yamamoto さん
20130120_LT3.jpg
(↑クリックすると資料に飛びます↑)
  • zigとzagという操作で、アクセスしようとするノードがルートになるよう木が動的に構成される。
  • スプレー木とZipperの関係のお話。



★感想:
さすがに最終回だけあって、難しかった。。。
でも、いちおう全7回、皆勤で参加して、なんとかHaskellの思想とか利点は理解できたと思います。
モナドとかも、マスターしたとはとても言えませんが、面白そうということはわかった。
あとはIFPH読書会の方で、引き続きHaskellを継続していこーと思ってます。
普段使ってるJavaとかと全然違う空気を感じられるHaskell勉強会、とても刺激的。

最後に、全7回、とてもスムーズに運営してくださった関係者の皆様、ありがとうございました。
関連記事
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://makopi23.blog.fc2.com/tb.php/41-993abd16
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。